Модификатор вывода на заполнителе modx не работает

У меня есть этот код в шаблоне

[[+isShowMore:is=`1`:then=`show more`:else=`no`]]

Это печать no, Но это должно показать show more в качестве заполнителя isShowMore установлен в 1 по этой строке кода во фрагменте.

$modx->setPlaceHolder('isShowMore', 1);

Также проверено этим кодом

[[+isShowMore]]
[[+isShowMore:is=`1`:then=`show more`:else=`no`]]

[[+isShowMore]] печатает 1 но строка с модификатором вывода показывает no,

Любая подсказка, что здесь не так? Я использую Modx Revolution 2.2.8 традиционный.

Аналогичная проблема также размещена на форуме Modx. http://forums.modx.com/thread/85150/output-filter-on-placeholder-problem

5 ответов

У меня была эта проблема; моя страница использовала шаблон, который имел [[*content]], Меняя это на [[!*content]] избавиться от кеширования решил мою проблему.

К вашему сведению, мой фрагмент вызывается с ! так что его вывод тоже не кэшируется.

Не уверен, почему это не работает в вашем случае, поэтому я рекомендую вам сделать это с помощью сниппета.

[[EvalIsShowMore? &val=`[[+isShowMore]]`]]

в фрагменте EvalIsShowMore положить что-то вроде

<?php

if($val){
  echo 'something';
}else{
  echo 'nothing';
}

Вы делаете это как-то условно внутри другого? Вложенные условия обычно вызывают странные проблемы такого типа. Вы пытались вызвать как ваш фрагмент, так и вывод заполнителя без кэширования?

Я также испытывал это несколько раз, и, кажется, нет очевидной причины, какой-то неизвестной магии в условной логике вывода modx. Опыт научил меня просто стараться избегать их использования столько, сколько я могу.

Это уродливо, но, возможно, вы могли бы обойти вашу проблему, поместив все, что вы хотите вывести, в фактический заполнитель, а затем просто распечатать заполнитель как есть.

Хм, вероятно, ваш заполнитель находится над фрагментом! В Modx вывод происходит в последний момент, но логика работает последовательно (каскадно).

Вот пример того, как это сделать:

 [[+isShowMore]]
 [[!yourSnippet]]
 [[+isShowMore:is=`1`:then=`show more`:else=`no`:toPlaceholder=`isShowMore`]]

другой пример:

 [[+snippet_placeholder1]]
 [[!snippet]]
 [[+snippet_placeholder1:add=`[[+snippet_placeholder2]]`:toPlaceholder=`snippet_placeholder1`]]

Попробуем модификатор eq:

[[+isShowMore:eq=`1`:then=`show more`:else=`no`]]
Другие вопросы по тегам