Во-первых, стоит отметить, что pdoPage без проблем обрабатывает результат работы getImageList и разбивает его на страницы.
[[!pdoPage? &element=`getImageList` &limit=`9` &tvname=`migx_image_in_content` &tpl=`migx_image_in_content_tpl` &docid=`[[*id]]` ]]
Но что делать, если есть задча сделать постраничный вывод не просто из одного ресурса, но из нескольких. То есть у нас есть список ресурсов, в каждом из которых заполнено доп. поле типа MIGX. Такой типа интернет-магазин на MIGX, где категориями выступают ресурсы, а товарами - строки MIGX (сомнительное решение, кстати говоря).
В итоге нам надо как-то передать в pdoPage общий список элементов. Но как это сделать, ведь getImageList принимает на вход id только одного ресурса. А если мы будем выводить через pdoResources, то у нас будут выводиться по очереди весь MIGX от каждого ресурса. И где-то это 2 товара, а где-то 70. Решение одно (которое я нашел, может есть и другие - пишите в комментариях) — изменить сниппет getImageList, чтобы он принимал на вход и обрабатывал список id.
Для этого внесем небольшую правку в getImageList. (Особо не тестировалось, и может быть что-то и сломалось. Но вроде работает:))
/* на ~ 124 строке находим: if (empty($outputvalue)) { $outputvalue = $tv->renderOutput($docid); if (empty($outputvalue) && !empty($inheritFrom)) { И заменяем код чтоб получилось: */ if (empty($outputvalue)) { // Webstool EDIT $docids = explode(",",$docid); if(count($docids) > 1){ $temp_1 = array(); foreach($docids as $v){ $ta = $tv->renderOutput($v); $ta = json_decode($ta,true); foreach($ta as $tav){ $temp_1[] = $tav; } } $outputvalue = json_encode($temp_1); }else{ $outputvalue = $tv->renderOutput($docid); } // Webstool EDIT END // Original code: $outputvalue = $tv->renderOutput($docid); if (empty($outputvalue) && !empty($inheritFrom)) {
А также:
// находим строчку: $output[$fields[$placeholdersKeyField]] = $chunk->process($fields); // И заменяем ее на: $output[] = $chunk->process($fields);
Теперь на вход может быть передана строка с перечислением через запятую id, и pdoPage распределит корректно по страничкам:
[[!pdoPage? &element=`getImageList` &tvname=`migx_image_in_content` &tpl=`migx_image_in_content_tpl` &docid=`46,50,48,51,52,53,55,36,54,56,58` &limit=`9` ]]
У меня проблема — почему то повторяет значения полей. То есть, если, например в &docid=`1,2,3`, то выводит три раза значение поля из ресурса с id=1.
Не подскажете, в чем может быть проблема?