Воскресенье, 14 августа 2011 13:38
Вырезание плейсхолдеров ModX PHx’ом
В ModX есть очень удобная штука – можно в своих снипетах самому устанавливать плейсхолдеры. Однако, при использовании PHx сталкиваешься с тем, что ничего не работает. Проблема проста – PHx считает, что ваши плейсхолдеры в шаблоне – просто мусор, и вырезает их.
На данный момент нашел 2 способа решения данной проблемы. Каждый из них имеет свои плюсы и минусы.
1. Способ, более сложный, создающий доп. нагрузку на систему, но при этом наиболее безопасный, т.к. в PHx не вносится никаких изменений.
Суть его в том, что отображаем плейсхолдер через снипет.
Создаем снипет, например showPH:
<?php if(!isset($name)) $name = ''; echo $modx->getPlaceholder($name); ?>
А в месте, где должен был отображаться плейсхолдер пишем:
[!showPH? &name=`ВАШ плейсхолдер`!]
2. Способ. Это закоментировать в классе плагина строчку, отвечающую за вырезку плейсхолдеров. Открываем файл phx.parser.class.inc.php, находим примерно в 60-х строках вот это регулярное выражение:
preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)(\1|\))\]~s', $template, $matches);
и комментируем его.
Минус данного подхода в том, что теоретически на сайте могут повылазить всякие ненужные (незадействованные) плейсхолдеры.
Сам же остановился на способе №2.
- Категории: ModX
- Не комментировали
