Добавление модификаторов Fenom
Задался вопросом добавления своих модификатором в парсер Fenom для modx.
Из этого вышел простой модификатор |days, который правильно склоняет «дней», «дня», «день».
вызывать так:
Для всего этого перво-наперво создаем файлик в дириктории /core/model/modx/pdotools/pdotoolscustom.class.php с содержимым:
gist.github.com/soulcreate/bf202b14173f5d41717f
Да да, нам придется редактировать папку /core/model/modx/ — святая светых ядра modx. Но так делает и сам pdoTools, тем более мы ничего не удаляем\перезаписываем, а просто расширяем класс pdoTools своей функцией вызова fenom. При обновлении modx/pdoTools ничего не должно затереться.
Затем идем в системные настройки pdoTools и меняем pdoTools.class на
pdotools.pdotoolscustom:

Собственно все!
Таким образом, можно задействовать всю мощь fenom и в modx, не создавая кучу маленьких сниппетов-модификаторов.
Что-то мне подсказывает, это ключ для использования composer в modx. К примеру, можно вызывать там autoload.php и применять как модификаторы для переменных.
Из этого вышел простой модификатор |days, который правильно склоняет «дней», «дня», «день».
вызывать так:
{$dayscount|days}Для всего этого перво-наперво создаем файлик в дириктории /core/model/modx/pdotools/pdotoolscustom.class.php с содержимым:
gist.github.com/soulcreate/bf202b14173f5d41717f
Да да, нам придется редактировать папку /core/model/modx/ — святая светых ядра modx. Но так делает и сам pdoTools, тем более мы ничего не удаляем\перезаписываем, а просто расширяем класс pdoTools своей функцией вызова fenom. При обновлении modx/pdoTools ничего не должно затереться.
Затем идем в системные настройки pdoTools и меняем pdoTools.class на
pdotools.pdotoolscustom:

Собственно все!
Таким образом, можно задействовать всю мощь fenom и в modx, не создавая кучу маленьких сниппетов-модификаторов.
Что-то мне подсказывает, это ключ для использования composer в modx. К примеру, можно вызывать там autoload.php и применять как модификаторы для переменных.
Комментарии: 15
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Надо будет придумать какой-то более удобный способ добавления модификаторов в следующей версии.
Нужно расширить еще и pdoFetch вот так:
И указать его там же, в настройке pdoFetch.class — pdotools.pdofetchcustom.
В общем, советую переписать заметку и код по нашему обсуждению.
pdoFetchCustom extends pdoToolsCustom, а pdoToolsCustom extends pdoTools. Всё должно работать.
Ну тогда можно подключить нужный класс без наследования, и вызывать из него публичные методы.
или я неправильно ищу...
вот тут кстати советуют использовать композитный паттерн, либо eval:
Иначе warning возникает на замыкание
1. если есть ошибка, нужно исправлять её в присланном коммите. Если не получается — удалить и прислать заново.
2. Комментарии типа
нужно удалять
3. Очень странно вызывать modX::getCollection() в дополнении, которое его изо всех сил старается не использовать и даже пытается заменить своей версией.
Ну и сама идея тупо загружать все сниппеты из указанной категории элементов мне не нравится. Гораздо лучше было бы просто указать список сниппетов-фильтров через запятую в системной настройке.
В общем, за идею спасибо. Как будет время, попробую применить.