====== Резолвинг имен файлов ======
С самого начала Limb разрабатывался с учетом разделения общей установки между несколькими проектами. Иногда проектам необходимо реализовать поведение, несколько отличное от заданного изначально. Вот почему Limb использует специальную технологию разрешения путей к файлам.
Сначала файл ищется в файловой структуре проекта, затем - в файловой структуре Limb.
Эта технология использует две константы, которые Вы определяете в setup.php (или в setup.override.php):
PROJECT_DIR и LIMB_DIR.
Таким образом файловая структура Limb и основанного на ней проекта похожи.
Этот метод разрешения PROJECT_DIR -> LIMB_DIR применяется практически ко всему:
* ко всем фабрикам объектов, вроде db_table_factory, action_factory, site_object_factory и т.д.
* к файлам *.ini - локализационным строкам, конфигурационным файлам и т.д.
* к шаблонам WACT, поэтому это простейший способ переопределить в проекте шаблон Limb
Иногда это даже не технология разрешения имен файлов, а технология разрешения имен классов (это зависит от резолвера). Например, путь к действию может выглядеть так: **/article/edit_article_actions**. В этом случае action_factory интерпретирует ее так:
* добавит '.class.php' к каждому пути
* поищет в PROJECT_DIR/core/actions/
* поищет в LIMB_DIR/core/actions/
В действительности, если необходима отличная функциональность в отдельном проекте, вы можете скопировать файл из Limb в свой проект и изменить его. Это допустимый способ расширять и переопределять базовую функциональность.
//С точки зрения чистого ООП это немного грязный трюк - мы знаем об этом и работаем над технологией пакетов. В будущем эта возможность останется только для шалонов WACT.//
Разрешение имен шаблонов работает немного по-другому. Здесь во время компиляции шаблонов, принимается во внимание локализация.
Сначала производится поиск в каталогах (порядок важен, возвращается первое сообщение):
* PROJECT_DIR . '/design/main/templates/_' . CONTENT_LOCALE_ID . '/' . $file_path
* PROJECT_DIR . '/design/main/templates/' . $file_path
* LIMB_DIR . '/design/main/templates/_' . CONTENT_LOCALE_ID . '/' . $file_path
* LIMB_DIR . '/design/main/templates/' . $file_path
Вот почему, если Вы хотите настроить шаблон в соответсвии с текущей локализацией во время выполнения, Вам необходимо сделать что-то наподобие этого:
Хорошей практикой является использование тэга **** для вывода локализованных строк в шаблонах .