Потребовалось в проекте на MODX Revolution сделать на странице материала навигацию, вида следующий материал и предыдущий материал. Облазил самые потаённые закоулки Интернета, для MODX Revo, ничего не нашел. Привлекать сюда разные тяжеловесные сниппеты желания не было, зачем. Поэтому написал небольшой сниппет, возможно кому-то будет полезен.
Сннипет генерирует два плэйсхолдера в виде готовых ссылок:
- [[+prev]] – предыдущая статья;
- [[+next]] – следующая статья.
Сначала вызываете сниппет, и уже после этого вставляете плэйсхолдеры в места, где должны быть ссылки на предыдущий ресурс и на следующий ресурс.
В сниппете в параметр title, тега ссылки прописывается поле longtitle, при необходимости можете поменять его на pagetitle.
Вот код сниппета:
$id = $modx->resource->get('id');
$parentId = $modx->resource->get('parent');
$children = $modx->getChildIds($parentId);
$prevtxt = ($prev)? $prev : "предыдущая статья";
$nexttxt = ($next)? $next : "следующая статья";
if(!$showDel) $showDel = 0;
else $showDel = 1;
if(!$showUnpub) $showUnpub = 0;
else $showUnpub = 1;
$key = -1;
while($key == -1){
$key = array_search($id,$children);
}
$out = '';
if(count($children) > 1 && isset($children[$key])){
$out = '';
return $out;
}
return $out;
П.С. от 20.08.2016: Усовершенствовал, теперь при вызове сниппета, можно задавать параметры: next и prev. Соответственно это текст ссылок на следующий материал и предыдущий. По умолчанию стоят, значения: "следующая статья" и "предыдущая статья".
П.С. от 16.12.2016: Усовершенствовал, теперь можно указывать, публиковать удалённые ресурсы или неопубликованные.
Список параметров, сниппета:
- prev - текст ссылки для предыдущей статьи (умолчание: предыдущая статья);
- next - текст ссылки для следующей статьи (умолчание: следующая статья);
- showDel - показывать удалённые статьи (1 - показать, 0 - непоказывать; умолчание: 0);
- showUnpub - показывать неопубликованные статьи (1 - показать, 0 - непоказывать; умолчание: 0);
Добра Вам и успеха в делах!
