Пагинация в head: Link rel=next и rel=prev

#
Пагинация в head: Link rel=next и rel=prev
Есть Типовая динамическая страница, к примеру Статьи, на которой выводится список статей, по 10 на страницу.
Есть пагинация.
Как выводить на таких страницах в head следующие теги?
<link rel="next" href="Ссылка на следующую страницу">
<link rel="prev" href="Ссылка на предыдущую страницу">

Соответственно, на первой странице не надо выводить ссылку на предыдущую страницу, а на последней - на последующую страницу.

И еще вопрос, который мог бы помочь решить проблему: Можно ли через контроллер узнать количество всех элементов в информационной системе или количество страниц в пагинации?
#
Re: Пагинация в head: Link rel=next и rel=prev
lipton_ice_tea,
В xml предаётся общее кол-во элементов в total а в limit кол-во товаров на странице, делим total на limit и получаем кол-во страниц.
skype: mcross82
#
Re: Пагинация в head: Link rel=next и rel=prev
А что делать если $Informationsystem_Controller_Show->total пустой ?
#
Re: Пагинация в head: Link rel=next и rel=prev
такого свойства у класса нету вроде, получайте все товары через $aInformationsystem_Items = $this->_Informationsystem_Items->findAll();
skype: mcross82
#
Re: Пагинация в head: Link rel=next и rel=prev
Ругается на _Informationsystem_Items
#
Re: Пагинация в head: Link rel=next и rel=prev
lipton_ice_tea,
Прошу прощения, я лишь указал вам метод findAll()

А так должно выглядеть примерно так
$oInformationsystem = $Informationsystem_Controller_Show->getEntity();
$aInformationsystem_Items = $oInformationsystem->Informationsystem_Items->findAll();
skype: mcross82
#
Re: Пагинация в head: Link rel=next и rel=prev
Огромное спасибо!
Добавлю только, что для получения количества элементов в информационной системе, надо дописать count:
Т.е. конечный результат такой:
$aInformationsystem_Items = count($oInformationsystem->Informationsystem_items->findAll());
#
Re: Пагинация в head: Link rel=next и rel=prev
Решение: Добавляем Link rel=next и rel=prev в head

В конце кода типовой динамической страницы находим строчки:

if (count($aTitle) > 1)
{
...........
}
Core_Page::instance()->object = $Informationsystem_Controller_Show;


И добавляем в него следующее

$links=0; // Переменная для номера текущей страницы в пагинации

if (count($aTitle) > 1)
{
...........
    if ($Informationsystem_Controller_Show->page){
        $links=$Informationsystem_Controller_Show->page+1; // Номер текущей страницы в пагинации
        }
............
}
else{$links=1;} // Страница 1

if ($links>0){ // Если находимся на странице с пагинацией
    $linki='';
    $pattern=$Informationsystem_Controller_Show->pattern;
    $pattern=substr($pattern, 0, strpos($pattern, '({')); //Вытаскиваем URL для информационной системы

    if ($Informationsystem_Controller_Show->offset+$Informationsystem_Controller_Show->limit<count($oInformationsystem->informationsystem_items->findAll())){
      $linki='<link rel="next" href="'.$pattern.'page-'.($links+1).'/">'; //Если не последняя страница в пагинации - добавляем ссылку на следующую
    }
    
    if ($links>2){ $linki.=' <link rel="prev" href="'.$pattern.'page-'.($links-1).'/">'; } //Добавляем ссылку на предыдущую страницу
    elseif ($links>1){ $linki.=' <link rel="prev" href="'.$pattern.'">'; } //Если текущая страница 2 - то в качестве предыдущей выводим главную страницу ИС
    
    Core_Registry::instance()->set('linki', $linki); //Передаем значение в шаблон
    }

Core_Page::instance()->object = $Informationsystem_Controller_Show;


Далее в шаблоне сайта, в head добавляем следующий код:
<?php echo Core_Registry::instance()->get('linki'); ?>


Пока более эффективного или сжатого варианта реализации не придумал
#
Re: Пагинация в head: Link rel=next и rel=prev
Сделал согласно решению, работает, но почему-то  в каждой инфо.системе по разному. В новостях например все ок, в отзывах, на последней странице отображает  несуществующую страницу rel="next"
В чем может быть проблема?
#
Re: Пагинация в head: Link rel=next и rel=prev
Как аналогично сделать для Shop_Controller_Show ?

Informationsystem_Controller_Show заменил на Shop_Controller_Show
Ругается на findAll() и ссылки получаются такого вида catalogpage-9/ , надо /catalog/children/page-9/
Авторизация