【发布时间】:2016-11-08 03:18:13
【问题描述】:
我正在尝试从我当前查看的博客中返回下一个(较新的)和上一个(较旧的)博客帖子。
我已经在扩展上设置了这个:
<?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 %>
但是两者都返回相同的结果,下一个(较新的)BlogPost - 我确定它是我忽略的一些愚蠢的东西......!:)
(silverstripe 3.1.4 / 博客模块~2.4)
【问题讨论】:
标签: php silverstripe