Простой вопрос про модификаторы
Задача такая: нужно выводить чанк на страницах, id которых не равен написанным. Делаю вот так:
[[*id:notequalto=`6`:then=`[[$like]]`]]
работает, но при попытке добавить еще id не срабатывает. Писала вот так:[[*id:notequalto=`6`:or:notequalto=`2`:then=`[[$like]]`]]
Подскажите как правильно? Комментарии: 8
Сделайте лучше через сниппет. И проще и быстрее будет работать.
[[showChunk? id=`[[*id]]` &exclude=`2,6`]]
А сам сниппет showChunk такой<?php
$exclude = explode(',',$exclode);
if (!in_array(intval($id),$exclude)) return $modx->getChunk('$like') ;
return '';
Подставляйте в параметр exclude ненужные айдишки через запятую. Не проверял, но должно работать.
getChunk('$like') в имени чанка знак доллара надо убрать, скопировал и забыл убрать.
это я уже поняла, спасибо!
Спасибо большое! Пока, правда, не работает. Чанк не выводит, я сделала для проверки вот так:
<?php
$exclude = explode(',',$exclode);
if (!in_array(intval($id), $exclude)) {return $modx->getChunk('like');}
else {return 'like2';}
На всех страницах выводит чанк like. Может тут в $id дело?
Опечатка в
Должно быть так
$exclude = explode(',',$exclode);
Должно быть так
$exclude = explode(',',$exclude );
Вот оптимизированный вариант сниппета. Если у вас чанк кешируемый, то MODX не будет каждый раз в базу лезть. Так будет быстрее и так работает парсер.
$exclude = explode(',',$exclode);
$output = '';
if (!in_array(intval($id),$exclude)) {
if (isset($modx->elementCache['[[$like]]'])) {
$output = $modx->elementCache['[[$like]]'];
} else {
$output = $modx->elementCache['[[$like]]'] = $modx->getChunk('like');
}
}
return $output;
Теперь все работает! Огромное спасибо за помощь!
Пожалуйста.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.