Задача: необходимо снабдить каждую дочернюю страницу навигацией « предыдущий следующий »
Всё кол-во скудных решений, которые я нашел — не подходили мне: некоторые не работали, некоторые показались очень объемные для решения такой тривиальной задачи. Решил написать свой сниппет, надеюсь что он облегчит жизнь не только мне.
Сниппет выводит результат в чанк prevnext, в котором используются два плейсхолдера:
[+prev+]
[+next+]
Даже работает ;)
Всё кол-во скудных решений, которые я нашел — не подходили мне: некоторые не работали, некоторые показались очень объемные для решения такой тривиальной задачи. Решил написать свой сниппет, надеюсь что он облегчит жизнь не только мне.
<?php
$ID = $modx->documentIdentifier;
$parentId = array_pop($modx->getParentIds($modx->documentIdentifier,1));
$children = $modx->getActiveChildren($parentId,'menuindex','ASC');
$i=0;
$key = false;
while(!$key && $i<count($children)){
$key = array_search($ID,$children[$i]);
$i++;
}
if(!empty($key) && count($children)>1){
$placeholders = array(
'prev'=>($i-2>=0?'<a href="'.$modx->makeUrl($children[$i-2]['id']).'">« назад</a>':''),
'next'=>($i<count($children)?'<a href="'.$modx->makeUrl($children[$i]['id']).'">вперед »</a>':'')
);
$output = $modx->parseChunk('prevnext',$placeholders,'[+', '+]');
}
return $output;
?>
* This source code was highlighted with Source Code Highlighter.
Сниппет выводит результат в чанк prevnext, в котором используются два плейсхолдера:
[+prev+]
[+next+]
Даже работает ;)