Инструменты пользователя

Инструменты сайта


limb3:en:packages:macro:template_file_name_resolving

How {{macro}} searches template files by aliases?

macro can work both with absolute template file paths and aliases(relative ones):

  • /var/dev/project/template/news.phtml - absolute path
  • news.phtml - an alias

macro resolves aliases using template locator. Template locator can be passed as a third argument of lmbMacroTemplate class, a default locator is used if one is not specified.

In case of using {{macro}} directly

By default macro is looking for template files only in templates/ folder of your application. You can change this by passing a fourth argument into constructor of lmbMacroConfig class.

$config = new lmbMacroConfig($cache_dir = dirname(__FILE__ ) . '/cache/',
                             $is_force_compile = false,
                             $is_force_scan = false,
                             $tpl_scan_dirs = array($dir1, $dir2, ...));
 
$macro = new lmbMacroTemplate('tpl.phtml', $config);

In case of using {{macro}} via VIEW package

VIEW creates macro template with an extended version of template locator that, apart from standard behaviour, looks for templates in templates folders of other Limb3 packages. The extended locator also caches resolved template paths in the file system. You can find locator cache files in var/locators/macro_locator.php file of your application.

You can specify directories list for template locator by redefining LIMB_TEMPLATES_INCLUDE_PATH constant, e.g.:

define('LIMB_TEMPLATES_INCLUDE_PATH', 'my_path/design;/my/other/path/design_repository;template;limb/*/template');

directories are separated with ; symbol, and * means any matches.

How to implement your own template file aliases resolving strategy?

macro has a simple interface called lmbMacroTemplateLocatorInterface:

interface lmbMacroTemplateLocatorInterface {
  function __construct($config);
  function locateSourceTemplate($file_name);
  function locateCompiledTemplate($file_name);
}

You should just pass an object that implements this interfaces as a third argument of lmbMacroTemplate constructor.

$macro = new lmbMacroTemplate('tpl.phtml', $config, new MyOwnTemplateLocator());

Обсуждение

Ваш комментарий. Вики-синтаксис разрешён:
   ___    __ __   _  __   __ __  __  __
  / _ |  / // /  | |/_/  / // / / / / /
 / __ | / _  /  _>  <   / _  / / /_/ / 
/_/ |_|/_//_/  /_/|_|  /_//_/  \____/
 
limb3/en/packages/macro/template_file_name_resolving.txt · Последние изменения: 2010/11/10 10:02 (внешнее изменение)