Если/иначе в Modx

Я пытаюсь обернуть в своем шаблоне блок в условных выражениях:

<div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
        <a href="[(site_url)]book-online.html/#id=[*trip-slug*]">Book now online</a>        
    </div>
</div>

Мне нужно показать этот блок, только если присутствует [*trip-slug*].

Я прочитал форум и документацию, но не могу понять синтаксис правильно.

Что мне не хватает?


person Mini John    schedule 25.09.2015    source источник


Ответы (2)


В Evolution вам нужен плагин PHx (https://github.com/Temus/PHx) для обработки ресурсов или теги переменных шаблона. С этим плагином вы можете использовать следующий код:

[*trip-slug:ne=`
  <div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
      <a href="[(site_url)]book-online.html/#id=[*trip-slug*]">Book now online</a>        
    </div>
  </div>
`*]

Теги-заполнители внутри Ditto анализируются (ограниченным) парсером PHx, и вы можете использовать следующее внутри шаблона Ditto без плагина:

[+trip-slug:ne=`
  <div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
      <a href="[(site_url)]book-online.html/#id=[+trip-slug+]">Book now online</a>        
    </div>
  </div>
`+]

В обоих случаях вы также можете работать с ядром Evolution if Snippet.

[[if? &is=`[*trip-slug*]:not_empty` &then=`
  <div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
      <a href="[(site_url)]book-online.html/#id=[*trip-slug*]">Book now online</a>        
    </div>
  </div>
`]]

Замените [* *] на [+ +] внутри кусков шаблона Ditto.

person Jako    schedule 25.09.2015

Используйте ссылку Фильтр вывода в MODX Revolution (именно так отмечена эта страница) или фильтр PHx в MODX Evolution (это то, что вы используете синтаксис ваших заполнителей).

Эволюция MODX

[+trip-slug:ne=`
  <div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
      <a href="[(site_url)]book-online.html/#id=[*trip-slug*]">Book now online</a>        
      </div>
  </div>
`+]

Революция MODX

[[*trip-slug:notempty=`
  <div class="widget widget_categories trip_widget">
    <div class="kd-widget-title"><h4>Book online</h4></div>
    <div class="trip-book-button">
      <a href="[(site_url)]book-online.html/#id=[*trip-slug*]">Book now online</a>        
    </div>
  </div>
`]]
person Mazuhl    schedule 25.09.2015
comment
Кнопка не отображается, даже если присутствует [*trip-slug*]. - person Mini John; 25.09.2015
comment
Я на Эволюции кстати. - person Mini John; 25.09.2015