Резолвинг имен файлов

С самого начала Limb разрабатывался с учетом разделения общей установки между несколькими проектами. Иногда проектам необходимо реализовать поведение, несколько отличное от заданного изначально. Вот почему Limb использует специальную технологию разрешения путей к файлам.

Сначала файл ищется в файловой структуре проекта, затем - в файловой структуре Limb.

Эта технология использует две константы, которые Вы определяете в setup.php (или в setup.override.php): PROJECT_DIR и LIMB_DIR.

Таким образом файловая структура Limb и основанного на ней проекта похожи.

Этот метод разрешения PROJECT_DIR → LIMB_DIR применяется практически ко всему:

Иногда это даже не технология разрешения имен файлов, а технология разрешения имен классов (это зависит от резолвера). Например, путь к действию может выглядеть так: /article/edit_article_actions. В этом случае action_factory интерпретирует ее так:

В действительности, если необходима отличная функциональность в отдельном проекте, вы можете скопировать файл из Limb в свой проект и изменить его. Это допустимый способ расширять и переопределять базовую функциональность.

С точки зрения чистого ООП это немного грязный трюк - мы знаем об этом и работаем над технологией пакетов. В будущем эта возможность останется только для шалонов WACT.

Разрешение имен шаблонов работает немного по-другому. Здесь во время компиляции шаблонов, принимается во внимание локализация.

Сначала производится поиск в каталогах (порядок важен, возвращается первое сообщение):

Вот почему, если Вы хотите настроить шаблон в соответсвии с текущей локализацией во время выполнения, Вам необходимо сделать что-то наподобие этого:

<locale:LOCALE name='en'>
  <core:INCLUDE file='_en/type_tables.html'>
</locale:LOCALE>
<locale:LOCALE name='ru'>
  <core:INCLUDE file='/_ru/type_tables.html'>
</locale:LOCALE>

Хорошей практикой является использование тэга <locale:string> для вывода локализованных строк в шаблонах </locale:string>.