pdoResources - разбить результаты на несколько блоков.
Приветствую.
Подскажите, как можно разбить вывод на несколько блоков? К примеру нужно:
Подскажите, как можно разбить вывод на несколько блоков? К примеру нужно:
[[!pdoResources?
&parents=`1`
&tplWrapper=`wrapper-tpl`
&tpl_1=`tpl_1`
&tpl_2=`tpl_2`
]]
// Чанк wrapper-tpl
<div class="row">
<div class="col-md-6">
[[$tpl_1]]
</div>
<div class="col-md-6">
[[$tpl_2]]
</div>
</div>
// Чанк tpl_1
<span>[[+pagetitle]]</span>
// Чанк tpl_2
<p>[[+content]]</p>
п.с.
&tpl_1=`` - это моя фантазия, то бы донести мысль
&tpl_2=`` - это моя фантазия, то бы донести мысль
Есть мысли? Комментарии: 13
Не совсем понятно. Ну вызовите сниппет 2 раза, с сохранением данных в плейсхолдеры через параметр &toPlaceholder, с разными именами.
Немного переписал год. Вопрос в том, что обертка общая, а вывод нужно будет в разных местах верстки выводить (первый блок в одном одно место, в другом месте другое)
[[!pdoResources?
&parents=`5`
&limit=`3`
&tplWrapper=`wrapper-tpl`
&tpl_1=`tpl_1`
&tpl_2=`tpl_2`
]]
// Чанк wrapper-tpl
<div class="row">
<div class="col-md-6">
// Чанк tpl_1 - <span>[[+pagetitle]]</span> - тут будет выводится это
[[$tpl_1]] - страница 1
[[$tpl_1]] - страница 2
[[$tpl_1]] - страница 3
</div>
<div class="col-md-6">
// Чанк tpl_2 - <p>[[+content]]</p> - тут будет выводится это
[[$tpl_2]] - страница 1
[[$tpl_2]] - страница 2
[[$tpl_2]] - страница 3
</div>
</div>
Что бы проще понять суть вопроса:
[[!pdoResources?
&parents=`11`
&limit=`3`
&toSeparatePlaceholders=`myPl`
&tplWrapper=`@INLINE
<div class="num">
<div class="1">
[[+myPl0:notempty=`[[+pagetitle]]`]]
</div>
<div class="2">
[[+myPl1:notempty=`[[+content]]`]]
</div>
</div>
`
]]
Да, код выше работать не будет, т.к. &tplWrapper работает только с одним плейсхолдером [[+output]]
Вопрос в том, что мне нельзя повторять шаблон &tplWrapper, а внутри нужно вставлять элементы в разные части верстки.
Вопрос в том, что мне нельзя повторять шаблон &tplWrapper, а внутри нужно вставлять элементы в разные части верстки.
Почему бы не сделать так, без &tplWrapper:
<div class="num">
<div class="1">
[[!pdoResources?
&parents=`5`
&limit=`3`
&tpl=`@INLINE <div>[[+pagetitle]]</div>`
]]
</div>
<div class="2">
[[!pdoResources?
&parents=`5`
&limit=`3`
&tpl=`@INLINE <div>[[+content]]</div>`
]]
</div>
</div>
Да вариант, просто у меня на странице ещё куча вызовов и я боюсь, что это скажется на скорости страницы в целом. Надеялся на более элегантный вариант с одном вызовом pdoResources
Если используется fenom на страницах, можно воспользоваться параметром &return=`json` и просто вывести 2 foreach на странице, один с pagetitle, другой с content
{set $results = 'pdoResources' | snippet: [
'parents' => 5,
'limit' => 3,
'return' => 'json'
] | fromJSON}
<div class="num">
<div class="1">
{foreach $results as $item}
<div>{$item.pagetitle}</div>
{/foreach}
</div>
<div class="2">
{foreach $results as $item}
<div>{$item.content}</div>
{/foreach}
</div>
</div>
Fenom юзаем, то что доктор прописал. Вечером буду тестировать.
Вопрос, как мне задать изменение для первого пункта? т.е.
{foreach $results as $item}
<div>{$item.content}</div>
{/foreach}
У первого в списке будет немного другая верстка
в foreach можно указывать дополнительные параметры
Подробнее можно почитать тут
{foreach $results as $item index=$index first=$first last=$last}
{if $first}
<div>{$item.content}</div>
{/if}
{/foreach}
// или так
{foreach $results as $item}
{if $item@first}
<div>{$item.content}</div>
{/if}
{/foreach}
Подробнее можно почитать тут
Я сильно прошу прощения, но у меня упорно не хочет выводить TV. Вызываю
{set $results = 'pdoResources' | snippet: [
'parents' => 11,
'limit' => 3,
'includeTVs' => 'tplImage',
'return' => 'json'
] | fromJSON}
В шаблоне как только не вызывал TV выводить его не хочет. В тоже время не хочет работать, если я хочу посмотреть логи включив параметр showLog
Там у TV добавляется префикс tv. его можно убрать параметром tvPrefix => '' тогда должно работать так {$item.tplImage}
del
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.