БлогMODxПлагин PHx, настройка и работа

Процесс установки PHx для MODx 1.0.5 Evo прост. Во-первых, качаем архив с плагином PHx с официального сайта. Во-вторых, скачиваем пропатченную версию файла phx.parser.class.inc.php с сайта MODx-сообщества. Дело в том, что для текущей версии (на момент написания актуальна версия 2.1.4) характерны такие недостатки, как вырезание плэйсхолдеров от других сниппетов и медленная работа с множественными обращениями к БД. Версия от Антона Кузьмина лишена этих недоработок. Заменяем в официальной сборке файл phx.parser.class.inc.php на скачанный.

На сайте создаём в директории /assets/plugins/ папку phx. Заливаем сюда обновлённый PHx.

Файлы плагина PHx в /assets/plugins/phx/

Теперь заходим в админку и создаём плагин с названием PHx.

Создаём плагин с названием PHx

В поле «Код плагина» копируем содержимое файла phx.plugin.txt. После чего кликаем на вкладке системные события, чтобы назначить запуск плагина на событие OnParseDocument.

Плагин установлен. Теперь самое интересное — использование (рекомендую почитать мануал, довольно путёво написано). Иногда бывает так, что формат сайта не позволяет использовать в определённых местах длинные словосочетания или предложения. На изображении ниже слева показано место, где стандартный заголовок не уместился из-за длинного слова «увеличивает», при помощи PHx в этом месте на сайте был выведен плэйсхолдер menutitle вместо pagetitle. Соответственно длинное слово было употреблено с переносом: «увеличива- ет».

Использование PHx для подмены плэйсхолдеров

Реализовано это с помощью следующей строки кода:

<h3><a href="/[~[+id+]~]">
[+phx:if=`[+menutitle+]`:ne=``:then=`[+menutitle+]`:else=`[+pagetitle+]`+]
</a></h3>

Что впрочем можно было записать короче:

<h3><a href="/[~[+id+]~]">
[+menutitle:ne=``:else=`[+pagetitle+]`+]
</a></h3>

Проблемы PHx

Первая проблема — это обрубание чужих плэйсхолдеров. При использовании Ditto, вызывайте его в кэшируемом виде (т.е. так: [[Ditto? &startId= … ]] ), а у страницы с вызовом снимите галочку «Кэшируемый».

При использовании PHx вызов Ditto должен быть кэшируемым на некэшируемой странице

Это самая частая причина того, что пагинация не отображается при совместном использовании Ditto и PHx. При этом на странице вовсе не обязательно присутствовать вызову PHx, как мы помним он вызывается на событие OnParseDocument для всех страниц, поэтому плэйсхолдеры могут вырезаться везде.

Вторая наиболее частая проблема, это когда подстановка плэйсхолдера PHx не срабатывает — вместо плэйсхолдера ничего не появляется, вообще. В отличие от вызовов сниппетов, в плэйсхолдерах недопустим пробел перед закрывающей конструкцией +].

[+menutitle:ne=``:else=`[+pagetitle+]` +] — этот плэйсхолдер не сработает

[+menutitle:ne=``:else=`[+pagetitle+]`+] — а этот — сработает

Пока что всё, будьте успешными! :)

RSS

RSS

Обратная связь

Задайте вопрос менеджеру!

verification code

Они поддерживают блог