Есть у меня небольшой сниппет, который позволяет устанавливать плейсхолдер непосредственно в тексте документа/чанка/шаблона. Текст его таков:
<?
$modx->setPlaceholder($name,$value);
?>
но суть не в этом.
На сайте работает такеж плагин PHx. И какого было моё разочанование, когда я не смог использовать плейсхолдеры установленные с помощью данного сниппета.
После долгого копания в недрах, вышел я на PHx включив debug-режим (если кто не знал, у плагина такое есть). В результате в логах прочитал следующее:
44 [01:26:31] Cleaning unsolved tags:
brand
brand
collection_name
т.е. получается PHx взял и удалил мои теги, т.к. они по его мнению не используются. :( большой и толстый FAIL.
Ну ладно полез я в код PHx и решил закоментировать следующие строчки (63 строка плагина):
preg_match_all('~\[(\+|\*|\()([^:\+\[\]]+)([^\[\]]*?)((\1|\))\]~s', $template, $matches);
if ($matches[0]) {
$template = str_replace($matches[0], '', $template);
$this->Log("Cleaning unsolved tags: \n" . implode("\n",$matches[2]) );
}
отвечающие как раз этот самый эффект.
Всё заработало. Однако есть смутные сомнения, что это выражение вырезало различные бяки из вывода MODx, которые теперь будут периодически появлятся.
Вот вопрос состоит в том, что бы модифицировать регулярку так, чтобы оно удаляло всё что не нужно, но нормальные плейсхолдеры, TV-параметры не трогало.
Прошу помочь мне в этом. Спасибо.