Вывод чанков tpl через pdoResources.
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, как поочередно выводить статьи разными чанками в категорию?
В чем суть: у меня есть три чанка для вывода статей в категорию (bigPostTpl, fullPostTpl, smallPostTpl). При вызове чанков через pdoPage использую сейчас параметры &limit=`` и &offset=``. Это мне позволяет выводить первые 2 статьи одним чанком (bigPostTpl), 3-ю статью другим чанком (fullPostTpl), и еще 4 статьи третьим чанком (smallPostTpl). Таким образом получается формат 2-1-4, и при этом статьи не повторяются.Мне нужно чтобы все новости выводились в формате 2-1-4, и не прописывать вручную новый вызов чанков с &limit=`` и &offset=``.
К сожалению, вариант tpl_nN не подходит. Потому что цикл статьи, через который ее вывод повторится, будет не xn, а (х + 7n), где x — номер статьи в первой семерке (от одного до 7), и n — количество раз, которыми вызвали конструкцию чанков 2-1-4. То есть пятая статья будет не &tpl_n5=`tplEvery5th`, потому что следующая статья, попадающая под определение «каждая пятая» будет иметь номер 10, а на скрине видно что в формате вызова чанков 2-1-4 десятая по номеру статья это третья, повторенная через цикл 3+7n. По этому нужно вызвать что-то вроде &tpl_n(5+7n)=`tplEvery5th`. И так для всех статей.
Прилагаю скрин конструкции:
Скрин
Скажите, есть способ прописать такой цикл перебора статей? На крайний случай, можно попробовать реализовать это через js + css. Перебирая все статьи на странице, в зависимости от их порядкового номера присваивать нужные классы. Но как по мне, это костыль, к тому же очень не хороший. поэтому, и спрашиваю.
В чем суть: у меня есть три чанка для вывода статей в категорию (bigPostTpl, fullPostTpl, smallPostTpl). При вызове чанков через pdoPage использую сейчас параметры &limit=`` и &offset=``. Это мне позволяет выводить первые 2 статьи одним чанком (bigPostTpl), 3-ю статью другим чанком (fullPostTpl), и еще 4 статьи третьим чанком (smallPostTpl). Таким образом получается формат 2-1-4, и при этом статьи не повторяются.Мне нужно чтобы все новости выводились в формате 2-1-4, и не прописывать вручную новый вызов чанков с &limit=`` и &offset=``.
К сожалению, вариант tpl_nN не подходит. Потому что цикл статьи, через который ее вывод повторится, будет не xn, а (х + 7n), где x — номер статьи в первой семерке (от одного до 7), и n — количество раз, которыми вызвали конструкцию чанков 2-1-4. То есть пятая статья будет не &tpl_n5=`tplEvery5th`, потому что следующая статья, попадающая под определение «каждая пятая» будет иметь номер 10, а на скрине видно что в формате вызова чанков 2-1-4 десятая по номеру статья это третья, повторенная через цикл 3+7n. По этому нужно вызвать что-то вроде &tpl_n(5+7n)=`tplEvery5th`. И так для всех статей.
Прилагаю скрин конструкции:
Скрин
Скажите, есть способ прописать такой цикл перебора статей? На крайний случай, можно попробовать реализовать это через js + css. Перебирая все статьи на странице, в зависимости от их порядкового номера присваивать нужные классы. Но как по мне, это костыль, к тому же очень не хороший. поэтому, и спрашиваю.
Комментарии: 3
Реализовать то можно. Только мне с твоей математикой не охота возиться. Сделаю просто каждый 7-й другой код
[[!pdoPage?
&tpl=`tpl7`
]]
tpl7{if ($idx % 7) == 0}
<div class="block7">....</div>
{else}
<div class="block">....</div>
{/if}
Спасибо, реализовал. Если кому нужно, вот код:
Код чанка:
Код чанка:
{if ($idx % 7) == 1 || ($idx % 7) == 2}
<div class="col-lg-6 col-md-6 col-sm-12">
<article class="big-news-main-container">
<div class="post-box">
<img src="[[+tv.image:phpthumbof=`w=800&h=533&zc=1&q=100`]]" alt="[[+longtitle]]">
<div class="entry-content">
<h3><a href="[[~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]]</a></h3>
</div>
</div>
</article>
</div>
{else}
{if ($idx % 7) == 3}
<div class="col-sm-12">
<article class="full-news-main-container">
<div class="type-post">
<div class="entry-content">
<h3 class="entry-title"><a href="[[~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]]</a></h3>
<div class="publication-data">
<p class="byline">[[*createdby:userinfo=`fullname`]]</p>
<p class="post-date"><i>[[+publishedon:dateRU]]</i></p>
</div>
<p>[[+introtext]]</p>
<p class="tags-preview">
[[!tolinks?
&items=`[[+tv.tags]]`
&tpl=`tagLinkTpl`
&target=`117`
]]
</p>
</div>
</div>
</article>
</div>
{else}
<div class="col-lg-3 col-md-6 col-sm-12">
<article class="small-news-main-container">
<div class="type-post">
<div class="entry-cover">
<a href="[[~[[+id]]]]"><img src="[[+tv.image:phpthumbof=`w=800&h=533&zc=1&q=100`]]" alt="[[+longtitle]]" /></a>
</div>
<div class="entry-content">
<h3 class="entry-title"><a href="[[~[[+id]]]]" title="[[+pagetitle]]">[[+pagetitle]]</a></h3>
<div class="publication-data">
<p class="byline">[[*createdby:userinfo=`fullname`]]</p>
<p class="post-date"><i>[[+publishedon:dateRU]]</i></p>
</div>
<p>[[+introtext]]</p>
<p class="tags-preview">
[[!tolinks?
&items=`[[+tv.tags]]`
&tpl=`tagLinkTpl`
&target=`117`
]]
</p>
</div>
</div>
</article>
</div>
{/if}
{/if}
Код вызова чанка:[[!pdoPage?
&element=`pdoResources`
&parents=`[[*id]]`
&tpl=`allPostTpl`
&includeTVs=`image,tags`
&hideContainers=`1`
&limit=`0`
]]
А if тут не самый лучший выбор. github.com/fenom-template/fenom/blob/master/docs/ru/tags/switch.md
{switch $idx % 7}
{case 1, 2}
...
{case 3}
...
{case default}
...
{/switch}
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.