0
我想從我目前正在查看的一個返回下一個(較新)和以前(較舊)的BlogPost。silverstripe 3博客的下一個和以前的帖子
我已經擴展此設置:
<?php
class BlogPost_Extension extends DataExtension {
public function getBlogSibling($Mode = 'next') {
if($Mode == 'next'){
$pages = BlogPost::get()->filter(array(
'ParentID' => $this->owner->ParentID,
'PublishDate:GreaterThan' => $this->owner->PublishDate
))->Sort('PublishDate ASC')->limit(1);
} elseif($Mode == 'prev'){
$pages = BlogPost::get()->filter(array(
'ParentID' => $this->owner->ParentID,
'PublishDate:LessThan' => $this->owner->PublishDate
))->Sort('PublishDate DESC')->limit(1);
}
if ($pages->count()) {
return $pages->First();
}
return false;
}
}
,並在模板中使用此:
<% if $BlogSibling('next') %><a href="$BlogSibling('next').Link">newer story</a><% end_if %>
<% if $BlogSibling('prev') %><a href="$BlogSibling('prev').Link">older story</a><% end_if %>
但都返回相同的結果,下一個(新)的博文 - 我嗯,肯定它的東西愚蠢我俯瞰....!:)
(silverstripe 3.1.4 /博客模塊〜2.4)
只使用一個排序號碼不會可靠地工作。想象一下,你有一些未發表的帖子有你正在查詢的「排序」號碼?我想你應該搜索'> $ sort'或'<$ sort'並返回第一個結果... – bummzack
只需對Sort進行排序並不考慮博客文章的真實順序,因爲它們按照PublishDate ,而不是排序。 – galilee
但@galilee的想法是,你在SiteTree中設置訂單,因爲你希望它們顯示,所以排序順序應該用於此目的 –