Pull to refresh

Навигация по соседним документам (Siblings)

Reading time 1 min
Views 2.7K
Задача: необходимо снабдить каждую дочернюю страницу навигацией « предыдущий следующий »

Всё кол-во скудных решений, которые я нашел — не подходили мне: некоторые не работали, некоторые показались очень объемные для решения такой тривиальной задачи. Решил написать свой сниппет, надеюсь что он облегчит жизнь не только мне.


<?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+]

Даже работает ;)
Tags:
Hubs:
+3
Comments 4
Comments Comments 4

Articles