2014-01-15 3 views
1

У меня есть этот код в шаблонеВыходной модификатор на 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#dis-post-469615

ответ

-1

дают Модификатор эквалайзером попробовать:

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

'is' и' eq' обрабатывается как один и тот же модификатор вывода в соответствии с документами, поэтому это неверно. – OptimusCrime

+0

Пробовал. такой же результат. – chanchal118

0

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

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

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

+0

Без условного.установить заполнитель в фрагменте и попытаться выполнить вывод на основе заданного значения. Я также проверил с новой установкой modx. Не повезло. – chanchal118

0

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

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

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

<?php 

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

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

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

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

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

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

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

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

Смежные вопросы