Вывод разных чанков в разных колонках на странице через pdoResources

Подключаю верстку сайта, в котором предусмотрено отображение анонсов новостей в виде чередования блоков шириной по 50% и по 30%.

Стандартный код шаблон выводит в диве row 2 анонса (div col-6)
Потом новый див row выводит 3 анонса (div col-4)
и так повторяется…

Пытаюсь реализовать это через номера вывода ресурсов, первые 2 ряда идут правильно, а потом все сбивает вывод чанка &tpl

Если его не использовать не работает.

Не могу победить…

[[!pdoPage?
    &element=`pdoResources`
    &elementClass=`modSnippet`
    
    &tpl=`wideBigBlogPost`
    
    &tpl_n1=`@INLINE <div class="row">[[$bigBlogPost]]`
    &tpl_n2=`@INLINE [[$bigBlogPost]]</div>`
    
    &tpl_n3=`@INLINE <div class="row">[[$smallBlogPost]]`
    &tpl_n4=`@INLINE [[$smallBlogPost]]`
    &tpl_n5=`@INLINE [[$smallBlogPost]]</div>`
    
    

    
    &hideContainers=`1` 
    &parents=`[[*id]]`
    &showHidden=`1`
    &includeTVs=`blog_photo`
    &includeContent=`1`
    &limit=`28` 
    &sortby=`{"publishedon":"DESC"}`
]]

[[!+page.nav]]
Tatjana
04 июля 2019, 13:11
modx.pro
835
0

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

Олег Сергеевич
04 июля 2019, 14:51
0
Зачем внутри на row делить?
Лучше сделать так:
<div class="row">
    [[!pdoPage?
    ...
    &tpl_n1=`@INLINE [[$bigBlogPost]]`
    &tpl_n2=`@INLINE [[$bigBlogPost]]`
    
    &tpl_n3=`@INLINE [[$smallBlogPost]]`
    &tpl_n4=`@INLINE [[$smallBlogPost]]`
    &tpl_n5=`@INLINE [[$smallBlogPost]]`
    ...
]]
</div>
[[!+page.nav]]
И если в таком случае всё сбивается, то надо править верстку, т.к. плохая практика в одном элементе открывать тег, а в другом закрывать.
    Олег Сергеевич
    04 июля 2019, 17:26
    0
    А еще можно сделать два вызова: первый для pdoResources для двух первых больших элементов, а второй pdoPage c offset для остальных маленьких элементов.
      Tatjana
      04 июля 2019, 17:41
      0
      Offset не подойдёт, так как вывод всех анонсов будет повторяться, первые 2 большие, следующие 3 маленькие и так 30 анонсов.
      Tatjana
      04 июля 2019, 17:42
      0
      Так будет работать тоже, но в этом вызове нет простого tpl. Как только его добавляю, даже пустой, вся очерёдность слетает.
      Tatjana
      05 июля 2019, 16:49
      0
      Я так понимаю нет вариантов решения моей проблемы?
        Aborrol
        05 июля 2019, 21:37
        0
        Да вариантов решения на самом деле куча.
        По факту в идеале это делается через css c nth-child
        Ещё например если дружите с fenom сохранять результат в json и в цикле оборачивать вывод по признакам делаимости или по счетчикам.
        Или например используя родной phx сделать снниппет обертку над pdoresources, и там написать кастомную логику
          Денис Чубенко
          08 июля 2019, 11:44
          0
          Почему же нет. Если взять fenom то можно делать что угодно. Можно менять класс в самом чанке опираясь на значение idx. Например
          <div class="{$idx | in : [1, 2] ? 'col-6' : 'col-4'} ">
          или задавать размеры картинке
          {set $phpthumb = $idx | in : [1, 2] ? 'w=555&h=290&zc=1&q=70&bg=ffffff' : 'w=360&h=290&zc=1&q=70&bg=ffffff'}
          <img src="{$image | phpthumbon : $phpthumb }"  alt="{$pagetitle}">
          или выводить нужный div
          {if $idx==1} <div class="row">{/if} 
          ... 
           {if $idx==1} </div>{/if}
          тут уже можно творить, что угодно, главное самому не запутаться.
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          7