AgelxNash/DocLister

Не работают на уровне шаблона (чанка) глобальные переменные, установленные плейсхолдеры верхнего уровня

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)

64j commented

через prepare

<?php
$data['member'] = $modx->getPlaceholder('member');

return $data;

А с параметром
``
&disablePHx=1

&disablePHx=1
Так работает, но непонятна логика: "&отключить_плейсхолдеры" (или фильтры) и в то же время делает обратное.
И второй момент: можно работу с плейсхолдерами/фильтрами сделать включенной по умолчанию?

Проблема в том, что вызов сниппета иф здесь распознается как конструкция phx. А если в обработке участвует phx, то все необработанные теги в конце удаляются.

Сниппет if в примере не обязателен.
Вопрос в том, что параметр &disablePHx=1 интуитивно понятен как "отключить обработку PHx"
И по умолчанию (&disablePHx=0) - не обрабатываются как пользовательские плейсхолдеры, так и [(системные_переменные)]