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=`` - это моя фантазия, то бы донести мысль
Есть мысли?
Роман
28 мая 2019, 23:16
modx.pro
1
1 517
0

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

Андрей
29 мая 2019, 01:47
0
Не совсем понятно. Ну вызовите сниппет 2 раза, с сохранением данных в плейсхолдеры через параметр &toPlaceholder, с разными именами.
    Роман
    29 мая 2019, 06:15
    0
    Немного переписал год. Вопрос в том, что обертка общая, а вывод нужно будет в разных местах верстки выводить (первый блок в одном одно место, в другом месте другое)

    [[!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>
      Роман
      29 мая 2019, 06:36
      0
      Что бы проще понять суть вопроса:
      [[!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>
          	`
          ]]
        Роман
        29 мая 2019, 07:06
        0
        Да, код выше работать не будет, т.к. &tplWrapper работает только с одним плейсхолдером [[+output]]

        Вопрос в том, что мне нельзя повторять шаблон &tplWrapper, а внутри нужно вставлять элементы в разные части верстки.
          Андрей
          29 мая 2019, 09:57
          +1
          Почему бы не сделать так, без &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>
            Роман
            29 мая 2019, 10:54
            0
            Да вариант, просто у меня на странице ещё куча вызовов и я боюсь, что это скажется на скорости страницы в целом. Надеялся на более элегантный вариант с одном вызовом pdoResources
              Андрей
              29 мая 2019, 11:00
              +1
              Если используется 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>
                Роман
                29 мая 2019, 11:02
                0
                Fenom юзаем, то что доктор прописал. Вечером буду тестировать.
                  Роман
                  29 мая 2019, 18:29
                  0
                  Вопрос, как мне задать изменение для первого пункта? т.е.
                  {foreach $results as $item}
                  			<div>{$item.content}</div>
                  		{/foreach}
                  У первого в списке будет немного другая верстка
                    Андрей
                    29 мая 2019, 18:36
                    +1
                    в 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}

                    Подробнее можно почитать тут
                      Роман
                      29 мая 2019, 19:01
                      0
                      Я сильно прошу прощения, но у меня упорно не хочет выводить TV. Вызываю
                      {set $results = 'pdoResources' | snippet: [
                          	'parents' => 11,
                          	'limit' => 3,
                          	'includeTVs' => 'tplImage',
                          	'return' => 'json'
                          ] | fromJSON}
                      В шаблоне как только не вызывал TV выводить его не хочет. В тоже время не хочет работать, если я хочу посмотреть логи включив параметр showLog
                        Андрей
                        29 мая 2019, 19:48
                        +1
                        Там у TV добавляется префикс tv. его можно убрать параметром tvPrefix => '' тогда должно работать так {$item.tplImage}
    Роман
    29 мая 2019, 10:51
    0
    del
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      13