@timurusubyan

Как в MODX вывести данные в зависимости от полученного значения из сниппета?

Привет. Есть проект на MODX. Есть страница Услуги, по шаблону выводятся данные, но есть одна страница(как исключение) в которой структура страницы отличается. Там есть блоки которых нет в шаблоне. И мне нужно чисто для нее добавить отдельный html блок и вывести туда определенные значения.

Я решил с помощью сниппета определить какая это страница в зависимости от последнего значения в URl, если это нужная мне страница, то нужно вывести этот блок. На чистом php это сделать просто, но в MODX делается по другому, никак не могу разобраться как надо. Можете подсказать?

Сниппет getURL для определения страницы в URL
$url = $_SERVER['REQUEST_URI'];
$path = parse_url($url, PHP_URL_PATH);
$pathParts = explode('/', $path);
$result = array_pop($pathParts);

Вот таким образом я обращаюсь к нужному мне сниппету getUrl, мне нужно проверить если значение $result = beauty, то выводим нужный блок.
[[*getUrl:!empty=`
        <section class="section">
          <div class="container-fluid">
              BEAUTY Блок 
          </div>
        </section>`]]
  • Вопрос задан
  • 248 просмотров
Решения вопроса 1
Если структура отличается - это другой шаблон и там выводите, что хотите.
Если структура не сильно отличается, но есть особенности, то ставьте проверку по текущему id.
[[*id:eq=`id-той-самой-страницы`:then=`код-для-той-самой-страницы`:else`ничего-либо-какой-то-еще-код`]]
на fenom это чуть проще
{ if $_modx->resource.id == '' }
...
{ /if }
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Слишком сложно. Не легче ли просто проверить на id и исходя из этого выводить нужный контент, ведь у каждой страницы уникальный идентификатор.
Если у вас включен fenom, что я вам советую, то код будет выглядеть так (вместо 15 поставьте id вашей страницы ):
{if $_modx->resource.id == 15}
<section class="section">
          <div class="container-fluid">
              BEAUTY Блок 
          </div>
</section>
{/if}


Если же fenom не включен и вы по каким-то причинам не хотите его включать, то можно написать условие так:
[[*id:is=`15`:then=`
<section class="section">
          <div class="container-fluid">
              BEAUTY Блок 
          </div>
</section>
`]]
Ответ написан
Комментировать
@alexalexes
Голый чанковый синтаксис:
[[*alias:is=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`:then=`вызов_чанка_блока_или_чистый_html`]]

С использованием сниппета If (нужно установить одноименный пакет):
[[!If?
  &subject=`[[*alias]]`
  &operator=`==`
  &operand=`алиас_последнего_значения_uri,_но_не_факт,_что_не_будет_пересекаться_с_одноименными`
  &then=`вызов_чанка_блока_или_чистый_html`
]]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы