Не работают на уровне шаблона (чанка) глобальные переменные, установленные плейсхолдеры верхнего уровня
kivamp opened this issue · 5 comments
Page content:
[!MemberOf? &groups=`editors` &ph=`member`!]
[!DocLister?
...
&tpl=`chunk.tpl`
...
!]
chunk.tpl:
[!if? &is=`[+member+]:!=:0` &then=`<a href="...">Edit</a>`!]
<a href="[(site_url)][~123~]">Go to page</a>
MemberOf:
...
$check = $modx->isMemberOfWebGroup($groups);
if (isset ($ph)) {
$modx->setPlaceholder($ph, (int) $check);
return '';
}
...
На выходе:
[(site_url)] - пустой (должно быть http://my_site_url.com)
[+member+] - пустой (должно быть 1 или 0)
через prepare
<?php
$data['member'] = $modx->getPlaceholder('member');
return $data;
А с параметром
``
&disablePHx=1
&disablePHx=1
Так работает, но непонятна логика: "&отключить_плейсхолдеры" (или фильтры) и в то же время делает обратное.
И второй момент: можно работу с плейсхолдерами/фильтрами сделать включенной по умолчанию?
Проблема в том, что вызов сниппета иф здесь распознается как конструкция phx. А если в обработке участвует phx, то все необработанные теги в конце удаляются.
Сниппет if в примере не обязателен.
Вопрос в том, что параметр &disablePHx=1 интуитивно понятен как "отключить обработку PHx"
И по умолчанию (&disablePHx=0) - не обрабатываются как пользовательские плейсхолдеры, так и [(системные_переменные)]