[pdoTools] 2.3.2 - автозагрузка модификаторов. Modx pdotools
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 | Показывать ресурсы, скрытые в меню. | |
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, чтобы вы могли оценить объём работы:
- upper, up, strtoupper, ucase, uppercase
- lower, low, strtolower, lcase, lowercase
- date_format
- date
- truncate
- escape, e
- unescape
- strip
- length, len, strlen
- iterable
- replace
- ereplace
- match
- ematch
- split
- esplit
- join
- in
- md5
- sha1
- crc32
- urldecode
- urlencode
- rawurldecode
- base64_decode
- base64_encode
- http_build_query
- print_r
- var_dump, dump
- nl2br
- ellipsis
- ucwords
- ucfirst
- htmlentities, htmlent
- limit
- esc, tag
- notags, strip_tags, stripTags, striptags
- stripmodxtags
- cdata
- reverse, strrev
- wordwrap
- wordwrapcut
- fuzzydate
- ismember, memberof, mo
- isloggedin
- isnotloggedin
- url
- lexicon
- user, userinfo
- resource
- setPlaceholder, toPlaceholder
- placeholder, fromPlaceholder
- cssToHead
- htmlToHead
- htmlToBottom
- jsToHead
- jsToBottom
- toJSON, json_encode
- fromJSON, json_decode
- option, setOption
- getOption
Отдельно хочу отметить просто замечательный модификатор print, который печатает, экранирует и выводит любую переменную в теге pre.
{15 | resource | print} {15 | resource : 'properties' | print} {10 | user : 'extended' | print}и вы получаете полностью распечатанный массив ресурса 15, потом его поля properties и extended юзера 10. В общем, это крайне полезно для отладки при разработке сайта.Обновляемся, пишем отзывы.
modx.pro