Как отобразить следующий и предыдущий элемент в CMS за октябрь
Я сделал пользовательский и простой модуль блога.
Я пытаюсь отобразить на одной странице статьи следующую и предыдущую статью.
Затем я попытался, с помощью я попал сюда, в модель
public function onRun (){
$this->articles = $this->getNextArticleAttribute();
$this->articles = $this->getPreviousArticleAttribute();
}
public function getNextArticleAttribute() {
return self::where('id','<', $this->id)->orderBy('id', 'ASC')->first();
}
public function getPreviousArticleAttribute() {
return self::where('id','>', $this->id)->orderBy('id', 'ASC')->first();
И на одной странице
{% set previous = __SELF__.previousArticle() %}
<div class="wrapper-small">
<div id="single-pagination" class="blog-pagination fixed">
<ul class="pagination clearfix">
<li class="prev"><a href="/news/{{previous.slug}}" class="pseudo-ajax">
<span class="text">Précédent</span>
<span class="page-image"><span><img src="{{previous.newsimage.path}}" alt="SEO Name" /></span></span>
</a>
{% set next = __SELF__.nextArticle() %}
</li>
<li class="next "><a href="/news/{{next.slug}}" class="pseudo-ajax">
<span class="text">Suivant</span>
<span class="page-image"><span><img src="{{next.newsimage.path}}" alt="SEO Name" /></span></span>
</a></li>
</ul>
</div> <!-- END .single-pagination -->
</div> <!-- END .wrapper-small -->
Так что я действительно не знаю, что мне не хватает...
1 ответ
Сначала вы должны объявить предыдущую статью и следующую статью как аксессоры в модели:
public function getNextArticleAttribute() {
а такжеpublic function getPreviousArticleAttribute() {
И затем, из вашего экземпляра модели, вы можете получить следующую или предыдущую статью так:
$model = Article::find($id); // instantiate an article model
$model->nextArticle; // return a model article
$model->previousArticle; // both without parentesis
С другой стороны, я думаю, что вам не нужно звонить $post = Article::where('slug',$slug)->first();
в обеих функциях, потому что $this
на самом деле является текущей статьей, поэтому следующая статья может выглядеть так:
public function getNextArticleAttribute() {
return self::where('id','>', $this->id)->orderBy('id', 'ASC')->first();
}