[pdoTools] 2.5.0 - файловые элементы
Представляю вам новую версию с улучшенной поддержкой загрузки элементов из файлов.
Теперь из файлов можно грузить не только оформление, но и запускать PHP код. Это позволяет вынести в них почти все элементы системы: шаблоны, чанки, плагины и сниппеты.
Подробная документация, как обычно, вот здесь, а под катом список изменений
Все элементы по умолчанию загружаются из директории, указанной в системной настройке pdotools_elements_path, по умолчанию там
Дальше можно загружать сниппеты и чанки через методы pdoTools:
Fenom может делать это двумя способами:
Так как Fenom изначально рассчитан на работу с файловыми шаблонами, теперь можно использовать его родной провайдер файлов как file:
Обычные чанки, которые хранятся в БД, грузятся примерно так же:
Кэширование всех скомпилированных шаблонов включается настройкой pdotools_fenom_cache. Кэш обычных чанков из БД хранится с помощью MODX, а кэшем для file: рулит сам Fenom.
Именно поэтому для файлов в Fenom лучше использовать его собственные методы — он сможет проверить изменения и перегенерировать кэш без обращения к MODX.
Чтобы почистить этот кэш нужно удалить директорию core/cache/default/pdotools или сбросить весь кэш сайта.
— Добавлен вывод текущего лога в метод $_modx::getInfo(). Лучше использовать его с модификатором print:
— Улучшена поддержка debugParser, добавлено логирование основных модификаторов.
— Улучшена загрузка моделей при вызове сниппетов. Теперь можно указывать префиксы.
Хочу выразить благодарность за идею и направление реализации Сергею Шлокову.
Теперь с помощью pdoTools и Fenom можно вынести основные элементы в файлы, подключить к ним Git и применять изменения просто выгрузкой на сервер.
Например, создаём шаблон и назначаем его ресурсу. Внутрь пишем
Например, вот так:
Более того, второй шаблон может расширять первый. Его тоже придётся создать в MODX, чтобы назначить ресурсам, а дальше:
Выложил версию 2.5.1-pl, в которой исправлено излишнее кэширование сниппетов.
Теперь из файлов можно грузить не только оформление, но и запускать PHP код. Это позволяет вынести в них почти все элементы системы: шаблоны, чанки, плагины и сниппеты.
Подробная документация, как обычно, вот здесь, а под катом список изменений
Все элементы по умолчанию загружаются из директории, указанной в системной настройке pdotools_elements_path, по умолчанию там
MODX_CORE_PATH . 'elements'Если вы хотите использовать файловые элементы — то нужно создать её самостоятельно.Дальше можно загружать сниппеты и чанки через методы pdoTools:
if ($pdoTools = $modx->getService('pdoTools')) {
$chunk = $pdoTools->getChunk('@FILE chunks/my_chunk.tpl', array('placeholder' => 'value'));
$snippet = $pdoTools->runSnippet('@FILE snippets/my_snippet.php', array('param' => 'value'));
}Fenom может делать это двумя способами:
{$_modx->getChunk('@FILE chunks/my_chunk.tpl', ['placeholder' => 'value'])}
{'@FILE chunks/my_chunk.tpl' | chunk : ['placeholder' => 'value']}
{$_modx->runSnippet('@FILE snippets/my_snippet.php', ['param' => 'value'])}
{'@FILE snippets/my_snippet.php' | snippet : ['param' => 'value']}Так как Fenom изначально рассчитан на работу с файловыми шаблонами, теперь можно использовать его родной провайдер файлов как file:
{include 'file:chunks/my_chunk.tpl'}А расширение как и раньше, только с указанием file:{extends 'file:chunks/my_chunk.tpl'}
{block 'myblock'}
Hello world!
{/block}Это рекомендуемый способ загрузки файлов из Fenom.Обычные чанки, которые хранятся в БД, грузятся примерно так же:
{include 'my_chunk'}Кэширование всех скомпилированных шаблонов включается настройкой pdotools_fenom_cache. Кэш обычных чанков из БД хранится с помощью MODX, а кэшем для file: рулит сам Fenom.
Именно поэтому для файлов в Fenom лучше использовать его собственные методы — он сможет проверить изменения и перегенерировать кэш без обращения к MODX.
Чтобы почистить этот кэш нужно удалить директорию core/cache/default/pdotools или сбросить весь кэш сайта.
Остальные изменения
— Добавлен вывод текущего лога в метод $_modx::getInfo(). Лучше использовать его с модификатором print:
{$_modx->getInfo() | print}Полезно для отладки.— Улучшена поддержка debugParser, добавлено логирование основных модификаторов.
— Улучшена загрузка моделей при вызове сниппетов. Теперь можно указывать префиксы.
Заключение
Хочу выразить благодарность за идею и направление реализации Сергею Шлокову.
Теперь с помощью pdoTools и Fenom можно вынести основные элементы в файлы, подключить к ним Git и применять изменения просто выгрузкой на сервер.
Например, создаём шаблон и назначаем его ресурсу. Внутрь пишем
{include 'file:templates/base.tpl'}Нужно включить системную настройку pdotools_fenom_parser, чтобы Fenom обработал этот шаблон и загрузил его из файла. Дальше мы уже рулим всем оформлением прямо в этом файле.Например, вот так:
<!doctype html>
<html lang="en">
<head>
{include 'file:chunks/head.tpl'}
</head>
<body>
<div class="nav-container">
<nav>
{include 'file:chunks/header.tpl'}
</nav>
</div>
<div class="main-container">
{include 'file:chunks/slider.tpl'}
{block 'content'}
{/block}
</div>
{include 'file:chunks/footer.tpl'}
</body>Эти чанки уже работают чисто из файлов, в БД MODX про них ничего нет. Внутри могут быть вызовы любых сниппетов и чанков системы, как файловых, так и обычных.Более того, второй шаблон может расширять первый. Его тоже придётся создать в MODX, чтобы назначить ресурсам, а дальше:
{extends 'file:templates/base.tpl'}
{block 'content'}
{$_modx->getInfo() | print}
{/block}Расширяем первый шаблон и выводим в контенте информацию.Обновлено 30.05.2016
Выложил версию 2.5.1-pl, в которой исправлено излишнее кэширование сниппетов.
Комментарии: 46
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Хотя странное спросил. Вроде как по логике runSnippet это системная функция.
А при вызове через Fenom логика несколько сложнее и с версии 2.1.1 все вызовы сниппетов стали кэшированные по умолчанию.
получил
Попробовал на другом — тоже самое. Кто-нибудь проверял уже? Норм работает? Кавычка смущает в логе лишняя…
Перенёс директорию, заработало.
Да и не советую устанавливать что-то по умолчанию не в components.
В админке так проще искать новые статичные файлы, с источником ))
Например, меня прям отдельно просили убрать из pdoTools классы, которые копировались в core/model/modx.
А на своём-то сайте ты можешь делать что хочешь, и хранить шаблоны где угодно.
Спасибо, очень крутое!
delИ походу вопрос — Коснулось ли это параметров сниппетов? ну например pdoResources в параметре tpl вызвать чанк, который лежит в файле или по-старинке через параметр tplPath? И у меня почему-то перестал работать параметр tpl c @INLINE, у кого-то были такие проблемы?
Осталось сложить 2 + 2.
Насколько я понимаю, здесь ключом является только название сниппета, без параметров, и все последующие наборы игнорируются.
Попробуй сравнить самостоятельно и рассказать про это нам.
pdoTools 2.5.2
MODX 2.5.0
PHP 7.0.7
Добавил кастомное поле даты в свойства товара, в первый раз выводит правильно, обновляю страницу – неправильно)
Код:
Результат:
В первый раз:
После обновления страницы:
Спасибо, Василий!
Они выводят следующее, если дата публикации, к примеру 00:13, то получим: «сегодня в 12:13»
Т.е. пользователя это может ввести в заблуждение по поводу даты публикации. Так задумывалось?
Не было бы вернее заменить %I на %k, чтобы вывело «сегодня в 0:13»?
Или я что-то упустил
Cars.tpl:
почему так происходит?