Поиск нужного блока среди страниц пагинации (pdoPage).
Подскажите пожалуйста, каким образом можно получить ссылку на нужный, к примеру коммент (лежит не на странице пагинации), среди страниц пагинации (pdoPage) и естественно потом на него попасть (уже на самой странице с пагинацией)? может у кого промелькнет светлая мысль, поделитесь.
Комментарии: 3
А более подробнее? Какой коммент? вы про тикетс? Это никак на мысль не наводит?
нет это не Tickets, комментарии привел ради примера, прошу прощения если сбил с толку.
Просто страницы выведенные через pdoResources (пагинация pdoPage). Вот и нужно попасть на вывод определенной «плитки» в определенной странице пагинации.
Просто страницы выведенные через pdoResources (пагинация pdoPage). Вот и нужно попасть на вывод определенной «плитки» в определенной странице пагинации.
Вопрос решился.
1. создаем тв-шку в которой укажем количеством блоков на странице (она нужна для синхронизации работы сниппетов по разбиению на страницы). не забываем привязать и заполнить ее (у меня она привязвна к каталогу тех самых страниц которые будем пагинировать).
2. создаем сниппет к примеру «paginSearch» для подсчета на какой странице находиться нужный блок:
3. в ссылке при выводе отдельного блока указываем (это не та страница на которой выводятся блоки с пагинацией. к примеру на главной они в слайдере (об этом речь), а на странице каталога их ищем :):
4. в выводе блоков на странице указываем лимит через ту самую твшку из пункта 1:
Если у кого возникнет мысль по коррекции кода, буду рад советам. Заранее спасибо.
1. создаем тв-шку в которой укажем количеством блоков на странице (она нужна для синхронизации работы сниппетов по разбиению на страницы). не забываем привязать и заполнить ее (у меня она привязвна к каталогу тех самых страниц которые будем пагинировать).
2. создаем сниппет к примеру «paginSearch» для подсчета на какой странице находиться нужный блок:
<?php
// получаем нужные ресурсы у родителя
if(!$docs = $modx->getCollection('modResource', array(
'parent' => 8,
'published' => 1,
'hidemenu' => 0,
'template' => 10
))){return;}
// получаем поле публикации в юникоде и загоняем их в массив
$resrs = array();
foreach($docs as $doc){
$resid = $doc->get('id');
$resPubDate = strtotime($doc->get('publishedon'));
array_push($resrs, $resPubDate);
}
// получаем значение твшки для разбиения (сравни пагинации)
$pagiRes = $modx->getObject('modResource', 8);
$pagiNum = $pagiRes->getTVValue('pagiNum');
// сортируем массив с датами публикации по датам а не по ключам
asort($resrs);
// дробим массив словно пагинируя его
$resrs2 = array_chunk($resrs, $pagiNum);
// получаем дату публикации отдельного ресурса в юникоде
$res = $modx->getObject('modResource', $id);
$resPub = strtotime($res->get('publishedon'));
$output;
$i = 0;
// перебором получаем в каком по счету массиве ("странице") находиться нужный нам ресурс
foreach ($resrs2 as $arr) {
$i += 1;
if ( in_array($resPub, $arr) ) {
$output = $i;
}
}
// выводим "страницу" пагинации
print_r($output);
3. в ссылке при выводе отдельного блока указываем (это не та страница на которой выводятся блоки с пагинацией. к примеру на главной они в слайдере (об этом речь), а на странице каталога их ищем :):
{var $paginpage = '!paginSearch' | snippet : ['id'=>$id]}
<a href="{8 | url}{if $paginpage > 1}?page={$paginpage}{/if}#review_{$id}">Читать полностью</a>
4. в выводе блоков на странице указываем лимит через ту самую твшку из пункта 1:
{var $pagiNum = 8 | resource : 'pagiNum'}
{'!pdoPage' | snippet : [
'parents'=>8,
'limit'=>$pagiNum,
'sortby'=>'publishedon',
'sortdir'=>'ASC'
]}
Если у кого возникнет мысль по коррекции кода, буду рад советам. Заранее спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.