[pdoTools] 2.3.2 - автозагрузка модификаторов. Modx pdotools


pdoArchive / Сниппеты / pdoTools / docs.modx.pro

tplWrapper Чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]].
wrapIfEmpty Включает вывод чанка-обертки (tplWrapper) даже если результатов нет.
dateField createdon Поле ресурса для получения даты документа: createdon, publishedon или editedon.
dateFormat %H:%M Формат даты для функции strftime()
showLog Показывать дополнительную информацию о работе сниппета. Только для авторизованных в контекте "mgr".
sortby createdon Любое поле ресурса для сортировки, включая ТВ параметр, если он указан в параметре "includeTVs". Можно указывать JSON строку с массивом нескольких полей. Для случайно сортировки укажите "RAND()"
sortbyTV Сортировка по ТВ параметру. Если он не указан в &includeTVs, то будет подключен автоматически.
sortbyTVType Тип сортировки по ТВ параметру. Возможные варианты: string, integer, decimal и datetime. Если пусто, то ТВ будет отсортирован в зависимости от его типа: как текст, число или дата.
sortdir DESC Направление сортировки: по убыванию или возрастанию.
sortdirTV ASC Направление сортировки ТВ: по убыванию или возрастанию. Если не указан, то будет равен параметру &sortdir.
limit Ограничение количества результатов выборки. Можно использовать "0".
offset Пропуск результатов от начала.
depth 10 Глубина поиска дочерних ресурсов от родителя.
outputSeparator \n Необязательная строка для разделения результатов работы.
toPlaceholder Если не пусто, сниппет сохранит все данные в плейсхолдер с этим именем, вместо вывода не экран.
parents Список родителей, через запятую, для поиска результатов. По умолчанию выборка ограничена текущим родителем. Если поставить 0 - выборка не ограничивается. Если id родителя начинается с дефиса, он и его потомки исключается из выборки.
includeContent Включаем поле "content" в выборку.
includeTVs Список ТВ параметров для выборки, через запятую. Например: "action,time" дадут плейсхолдеры [[+action]] и [[+time]].
prepareTVs 1 Список ТВ параметров, которые нужно подготовить перед выводом. По умолчанию, установлено в "1", что означает подготовку всех ТВ, указанных в "&includeTVs=``"
processTVs Список ТВ параметров, которые нужно обработать перед выводом. Если установить в "1" - будут обработаны все ТВ, указанные в "&includeTVs=``". По умолчанию параметр пуст.
tvPrefix tv. Префикс для ТВ параметров.
where Массив дополнительных параметров выборки, закодированный в JSON.
showUnpublished Показывать неопубликованные ресурсы.
showDeleted Показывать удалённые ресурсы.
showHidden
1
Показывать ресурсы, скрытые в меню.
hideContainers Отключает вывод контейнеров, то есть, ресурсов с isfolder = 1.
context Ограничение выборки по контексту ресурсов.
totalVar total Имя плейсхолдера для сохранения общего количества результатов.
resources Список ресурсов, через запятую, для вывода в результатах. Если id ресурса начинается с дефиса, этот ресурс исключается из выборки.
select Список полей для выборки, через запятую. Можно указывать JSON строку с массивом, например {"modResource":"id,pagetitle,content"}.
scheme Схема формирования ссылок: "uri" для подстановки поля uri документа (очень быстро) или параметр для modX::makeUrl().
useWeblinkUrl 1 Генерировать ссылку с учетом класса ресурса.

docs.modx.pro

[pdoTools] 2.10.1 - исправление кэширования скриптов и стилей / modx.pro

Давненько я не писал про обновления pdoTools, ведь там не происходило ничего примечательного — обычная работа над некритичными ошибками и улучшения функционала.

Но сегодняшняя версия стоит отдельного объявления, ведь в ней наконец-то исправлена работа кэширования скриптов и стилей! За отличное расследование и исправление благодарим Сергея Шлокова, а я немного расскажу, как эта ошибка вообще появилась.

Дело в том, что изначально в ранних версиях pdoTools вызывать сниппеты можно было только одним методом — $_modx->runSnippet() и он напрямую вызывал метод modX::runSnippet(). Вызовы Fenom работают уже после того, как MODX парсит кэшированные тэги, поэтому все скрипты и стили, зарегистрированные через Fenom, не попадали в кэш ресурса. Чтобы исправить это, я запихивал в этот кэш вручную всё что было, после каждого запуска Fenom.

Это было крайне неудачным решением, но другого на тот момент я придумать не смог. Так что, с добавлением еще пары костылей оно более менее работало.

Но дело в том, что со временем запуск сниппетов через Fenom был переписан, и все вызовы давно шли через метод pdoTools::runSnippet(), что позволяло, в принципе, контролировать регистрацию скриптов и стилей кэшированных сниппетов — да никто об этом не подумал, кроме Сергея.

Так что в новой версии убраны все кривые костыли, а обработка скриптов и стилей кэшированных сниппетов, запускающихся через Fenom любым способом, происходит в одном его методе. И проблем с кэшированием больше нет.

Другие изменения

Еще некоторые изменения: — Улучшено регулярное выражение для определения синтаксиса Fenom. Теперь ситуаций, когда в чанке один просто тег и парсер не считает его достойным обработки, должно стать гораздо меньше. А ложных срабатываний, надеюсь, не прибавится.

— Пока проверял работу кэширования скриптов и стилей, заметил баг в pdoPage. Если ему указать &cache=`1`, то он перестаёт регистрировать канонические url со второй загрузки. Исправлено.

— Сами канонические url теперь всегда прописываются полным адресом вместе с доменом, независимо от настроек, как то советует Google.

— А pdoMenu теперь должен уметь использовать &conditionalTpls для чанка по умолчанию. Не знаю, насколько это полезно при наличии Fenom, но просили добавить.

— Еще добавили новую системную настройку pdotools_fenom_save_on_errors, которая сохраняет шаблоны при ошибках компиляции в core/cache/pdotools/error/, чтобы вам удобнее было их дебажить.

Остальные изменения можно посмотреть на GitHub.

Новая версия уже в репозиториях, можно обновляться!

modx.pro

[pdoTools] 2.3.2 - автозагрузка модификаторов / modx.pro

Вот и подоспело очередное, уверен, горячо ожидаемое обновление pdoTools.

На этот раз я придумал, как можно иначе подключать Fenom, что дало возможность реализовать кучу встроенных модификаторов, а там где их не хватит — автозагрузку модификаторов из сниппетов.

Системная настройка pdotools_fenom_modifiers больше не нужна и удаляется при установке обновления. Если указанный модификатор не найден, то работа не останавливается, как раньше, и вы просто получаете ошибку в лог.

Следует учесть, что я реализовал не все фильтры MODX (но очень много), и не все из них работают точно так, как в MODX — поэтому потрудитесь прочитать документацию, прежде чем жаловаться, что у вас там опять что-то не того.

Ссылка на подробнейшую документацию отдельно, чтобы все заметили.

Итак, список всех модификаторов Fenom, чтобы вы могли оценить объём работы:

Обратите внимание на модификаторы resource, user, config, placeholder — это доступ к ресурсам, юзерам и массивам плейсхолдеров и конфигурации системы.

Отдельно хочу отметить просто замечательный модификатор print, который печатает, экранирует и выводит любую переменную в теге pre.

{15 | resource | print} {15 | resource : 'properties' | print} {10 | user : 'extended' | print}и вы получаете полностью распечатанный массив ресурса 15, потом его поля properties и extended юзера 10. В общем, это крайне полезно для отладки при разработке сайта.

Обновляемся, пишем отзывы.

modx.pro


Prostoy-Site | Все права защищены © 2018 | Карта сайта