Александр, здравствуйте, бывает что нужно в анонсах pdoResources или mFilter2, между ресурсами что-то вывести к примеру баннер или разделить по блокам для того чтобы по разному их стилизовать и тому подобное.
В pdoResources, это можно сделать так:
Создать сниппет:
printColumnItem
<?php
$phn = $placeholderName;
$colums = (int)$colums ? (int)$colums : 2;
$cols = array();
if(empty($placeholderName)){
echo "Для сниппета printColumnItem не указан параметр placeholderName";
return;
}
foreach ($modx->placeholders as $key => $ph) {
if (strpos($key, $phn) === 0 && $key != $phn."log") {
$placeholders[$key] = $ph;
}
}
$qw = 0;
foreach(array_chunk($placeholders, count($placeholders) / $colums) as $column){
$data = "";
foreach($column as $v){
$data .= $v;
}
$cols['column'.(++$qw)] = $data;
}
$modx->setPlaceholders($cols);
return;
В шаблон:
[[!pdoResources?
&tpl=`Чанк оформления`
&toSeparatePlaceholders=`column_item_`
]]
[[!printColumnItem?
&placeholderName=`column_item_`
&colums=`2`
]]
Плейсхолдеры: [[+column1]], [[+column2]]
Александр если возможно, расскажите пожалуйста, как можно использовать этот вариант в mFilter2? Учитывая что параметр
toSeparatePlaceholders в вызове фильтра:
&toSeparatePlaceholders=`my.`
С mFilter2 так не получится. Плейсхолдер [[+my.results]] будет содержать весь результат, он не будет как в случае с pdoResources разделён на отдельные плейсхолдеры с индексами.
А зачем это делать? Задачи, которые вы описали можно решить с помощью CSS и JavaScript.
Для стилизации блоков по разному в зависимости от их порядкового номера можно выполнить с использованием CSS селекторов :nth-child и :nth-of-type.
Вывести баннер между блоками можно выполнить с помощью JavaScript.
Например, следующий javascript код вставит блок после каждого третьего элемента в результате:
И как сделать вывод, только перед первым?
Перед первым можно так:
Если нужно для подгрузки данных, то тогда нужно ещё писать какую-то дополнительную логику. Тут всё засисит что необходимо.
Например, если подгружаем по 10 штук записей, то можно так:
В этом случае баннер бедут вставляться, сначала после 3, потом после 13 записи, 23 записи и т.д.