Есть куча страниц, с разными родителями. Необходимо сделать так, чтобы на каждой из этой страниц выводился список страниц, принадлежащих родителю этой страницы. Т.е. необходимо подняться к родителю страницы и вывести список всех дочерних страниц, желательно исключив из списка страницу, на которой выводится список.
Нашел код сниппета, который осуществляет данную операцию
<?php
/**
* Входной параметр $max.
* Сколько заголовков нужно выводить.
*/
$max = (isset($max)) ? $max : "20";
$dID = $modx->documentIdentifier; // Получаем ID просматриваемого документа.
$parentId = array_pop($modx->getParentIds($modx->documentIdentifier,1)); // Получаем родителя.
$children = $modx->getActiveChildren($parentId,'menuindex','ASC');
$j=0;
$key = false;
while(!$key && $j<count($children)){
$key = array_search($dID,$children[$j]);
$j++;
}
$output = '<div id="filter_block">
<div class="items">
<ul>';
// Цикл показа постов
if(!empty($key) && count($children)>1) {
for ($i=1;$i<$max+2;$i++) {
if ($j-$i>=0) {
$simular = $modx->getDocument($children[$j - $i]['id'], "pagetitle");
if ($children[$j - $i]['id']!=$dID)
$output .= '<li class="related-list"><a href="'.$modx->makeUrl($children[$j - $i]['id']).'">'.$simular['pagetitle'].'</a></li>';
}
}
}
if ($output == '<ul>')
echo 'пока похожих записей нет'; // Что делать. когда попался крайний пост.
else
echo $output.'</ul></div></div>';
?>
но проблема в том, что он выводит список родственных ресурсов после активной страницы, а нужно, чтобы захватывал и предыдущие. Что-то никак не могу понять, почему он пропускает предыдущие элементы. Или может есть другие идеи и решения, как вывести сиблинги страницы?
qurusan 03.05.2015 00:46 #