Yii: Добавляем ссылки на предыдущую и следующую статьи в подробный вид статьи
Для удобной навигации после текста статьи добавляем ссылки на предыдущую и следующую статьи. Это даст читающему возможность перейти к следующей статье, не возвращаясь к разделу В Yii это можно реализовать следующим образом. В модель (например Material.php) добавим две дополнительные функции:
public function getUrlPrev() { $modelPrev = Material::model()->findBySql("Select * from tbl_material where create_time < '".$this->create_time."' Order By create_time desc"); if($modelPrev!=null) echo '« Предыдущая статья<br />'. CHtml::link('← '.CHtml::encode($modelPrev->title),'/materials/'.$modelPrev->id.'-'.$modelPrev->alias, $linkOptions=array('class'=>'prevmaterial')); } public function getUrlNext() { $modelNext = Material::model()->findBySql("Select * from tbl_material where create_time > '".$this->create_time."' Order By create_time"); if($modelNext!=null) echo 'Следующая статья »<br />'. CHtml::link(CHtml::encode($modelNext->title).' →','/materials/'.$modelNext->id.'-'.$modelNext->alias, $linkOptions=array('class'=>'nextmaterial')); }
Запросы к базе необходимы с целью выбрать запись непосредственно перед или после текущей, мы также ориентируемся не на id, а на поле create_time (ведь сортируем всё по дате, а кроме того в базе данных id устанавливается автоинкременто и при удалении какого-то материала будет несуществующий id, мы же избегаем ошибки при обращении к несуществующему id).
CHtml::encode($modelNext->title) - необходим, если в заголовке используются html-сущности, например вы пишете статью по html с использованием h1: Joomla 1.5 SEO: Добавляем тег <h1> в название статьи.
Далее в виде views/material/view обращаемся к этим функциям:
<table border="0" cellspacing="0" cellpadding="0" width="100%"> <tbody> <tr> <td width="49%" class="right" valign="top" align="right"> <?php echo $model->urlPrev; ?> </td> <td width="2%"/> <td width="49%" valign="top"> <?php echo $model->urlNext; ?> </td> </tr> </tbody> </table>
Вот как это выглядит на нашем сайте:

2 комментариев
Leave a Comment