Простой вопрос про модификаторы

Задача такая: нужно выводить чанк на страницах, id которых не равен написанным. Делаю вот так:
[[*id:notequalto=`6`:then=`[[$like]]`]]
работает, но при попытке добавить еще id не срабатывает. Писала вот так:
[[*id:notequalto=`6`:or:notequalto=`2`:then=`[[$like]]`]]
Подскажите как правильно?
Любовь
14 октября 2015, 09:00
modx.pro
942
0

Комментарии: 8

Сергей Шлоков
14 октября 2015, 12:33
+1
Сделайте лучше через сниппет. И проще и быстрее будет работать.
[[showChunk? id=`[[*id]]` &exclude=`2,6`]]
А сам сниппет showChunk такой
<?php
$exclude = explode(',',$exclode);
if (!in_array(intval($id),$exclude)) return $modx->getChunk('$like') ;
return '';
Подставляйте в параметр exclude ненужные айдишки через запятую. Не проверял, но должно работать.
    Сергей Шлоков
    14 октября 2015, 12:55
    0
    getChunk('$like') в имени чанка знак доллара надо убрать, скопировал и забыл убрать.
      Любовь
      14 октября 2015, 13:03
      0
      это я уже поняла, спасибо!
      Любовь
      14 октября 2015, 13:02
      0
      Спасибо большое! Пока, правда, не работает. Чанк не выводит, я сделала для проверки вот так:
      <?php
      $exclude = explode(',',$exclode);
      if (!in_array(intval($id), $exclude)) {return $modx->getChunk('like');} 
      else {return 'like2';}
      На всех страницах выводит чанк like. Может тут в $id дело?
        Сергей Шлоков
        14 октября 2015, 13:04
        +1
        Опечатка в
        $exclude = explode(',',$exclode);

        Должно быть так
        $exclude = explode(',',$exclude );
      Сергей Шлоков
      14 октября 2015, 12:54
      +1
      Вот оптимизированный вариант сниппета. Если у вас чанк кешируемый, то 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;
        Любовь
        14 октября 2015, 13:07
        0
        Теперь все работает! Огромное спасибо за помощь!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      8