Простенько наверное так:
1. Получаешь slug текущей страницы - Page::slug()
2. Затем по slug определяешь id (пользуешься xmldb)
3. Затем получаешь предыдущий id и следующий - соответственно это и будут id предыдущей и следующей страницы
4. Затем пользуетесь функцией $pages = Page::getPages() и получаешь все страницы
5. затем $count = count($pages);
6. это количество страниц, всех, можно выбрать рандомный номер из $count истинный номер естественно будет -1, потому что количество страниц начинается с 0, а индекс в массиве $pages с 0
7. Нужно понимать, что это все страницы с учетом черновиков и для зарегистрированных - наверное, я не уверен, нужно проверять
8. Если прогнать через цикл foreach($pages as $i => $page) то на каждом цикле можно иметь
$page['title']
$page['meta_title']
$page['parent']
$page['date']
$page['author']
$page['slug']
9. В этом же цикле можно получить и предыдущую и последующую страницу, чтобы не заморачиваться с xmldb определить предыдущую и последующую можно по $i - соответственно $i-1 это предыдущая
то есть
foreach($pages as $i => $page) {
if($page['slug'] == Page::slug()) {
$current_slug = $page['slug'];
if($i-1 >= 0 ) {
$prevslug = $pages[$i-1]['slug'];
} else {
$prevslug = -1;
}
if(count($pages[$i+1])>0) {
$nextslug = $pages[$i+1]['slug'];
} else {
$nextslug = -1;
}}}
естественно если $nextslug или $prevslug равно -1 - значит текущая страница или первая или последняя
Спасибо говорим плюсиком в репутацию. Так виднее