Задать вопрос

Как вывести pdoResources с условием?

Здравствуйте.
Прошу подсказки.

Знаю, что в MODX можно писать условия для вывода того или иного контента на странице. Ну типа вот так:
[[+tv.city:notempty=`<p class="city">г. [[+tv.city]]</p>`]]

Но у меня появилась необходимость (а скорее интерес) сделать то же самое, но чуть посложнее. Однако, у самого нифига не получается. Прошу знающих людей подсказать немного (а можно и много).

Есть вот такой блок:
<div class="some_block">
    <p class="block_heading">Какой-то заголовок</p>
    <div class="block_items">
        [[pdoResources?
            &tpl=`some_tpl`
            &limit=`0`
            &parents=`55`
            &resources=`-[[#[[*id]].parent]]`
            &sortby=`{"menuindex": "ASC"}`
        ]]
    </div>
</div>

Т.е. имеем блок в котором есть заголовок, и ещё один блок, в который выводятся какие-то ресурсы. Так вот собственно вопрос, как написать условие так, чтобы при отсутствии ресурсов в выдаче, не показывалась вся вот эта конструкция, т.е. весь родительский блок - .some_block?
  • Вопрос задан
  • 349 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
alelunegov
@alelunegov
Фрилансер. Разработка сайтов на MODX, верстка
Для решения Вашей задачи у pdoResources есть параметр &tplWrapper (чанк-обёртка, для заворачивания всех результатов. Понимает один плейсхолдер: [[+output]]. Не работает вместе с параметром &toSeparatePlaceholders).

[[pdoResources?
    &tpl=`some_tpl`
    &limit=`0`
    &parents=`55`
    &resources=`-[[#[[*id]].parent]]`
    &sortby=`{"menuindex": "ASC"}`
    &tplWrapper=`@INLINE
        <div class="some_block">
            <p class="block_heading">Какой-то заголовок</p>
            <div class="block_items">
                [[+output]]
            </div>
        </div>
    `
]]
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
an-tar
@an-tar Куратор тега MODX
Full stack web developer
Можно попробовать через параметр &toPlaceholder, т.е. идея - выводите вместо экрана результат сниппета в плейсхолдер, если он непуст -выводите весь блок в т.ч. с тем, что сохранили в плейсхолдер. Т.е.
[[pdoResources?
            &tpl=`some_tpl`
            &limit=`0`
            &parents=`55`
            &resources=`-[[#[[*id]].parent]]`
            &sortby=`{"menuindex": "ASC"}`
            &toPlaceholder=`myPlaceholder`
        ]]

и потом
[[+myPlaceholder:notempty=`

<div class="some_block">
    <p class="block_heading">Какой-то заголовок</p>
    <div class="block_items">[[+myPlaceholder]]</div>
</div>

`]]
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы