Вывод чанков 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. Перебирая все статьи на странице, в зависимости от их порядкового номера присваивать нужные классы. Но как по мне, это костыль, к тому же очень не хороший. поэтому, и спрашиваю.
Alex
14 ноября 2019, 18:11
modx.pro
1 269
0

Комментарии: 3

Александр Туниеков
15 ноября 2019, 00:39
+1
Реализовать то можно. Только мне с твоей математикой не охота возиться. Сделаю просто каждый 7-й другой код
[[!pdoPage?
&tpl=`tpl7`
]]
tpl7
{if ($idx % 7) == 0}
   <div class="block7">....</div>
{else}
  <div class="block">....</div>
{/if}
    Alex
    15 ноября 2019, 20:14
    0
    Спасибо, реализовал. Если кому нужно, вот код:
    Код чанка:
    {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`
    ]]
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
3