您可以创建一个show()
函数,您可以调用它ArticleHolder
来获取并返回Articles
您想要的页面,其 URL 类似于www.domain.tld/articles/show/1234
ArticleHolder.php
...
class ArticleHolder_Controller extends Page_Controller {
...
public function show(SS_HTTPRequest $request) {
if ($request->param('ID') && $article = Articles::get()->filter(array('ShortNumber' => $page->param('ID')))->First()) {
return $this->customise(array(
'Title' => $article->Title,
'Content' => $article->Content,
'MetaTitle' => $article->MetaTitle,
'MetaDescription' => $article->MetaDescription,
'MetaKeywords' => $article->MetaKeywords
))->renderWith(
array('ArticlesPage', 'Page')
);
}
return $this->httpError(404);
}
...
}
或者,更好的是,用于URLSegment
获取您的文章。为此,您需要URLSegment
在Article
课堂上。
在 ssbits.com 上有一个很好的教程:
http ://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-2-using-model-admin-and-url-segments-to-创建产品目录/
本教程适用于 Silverstripe 2.4,但代码应该可以在 Silverstripe 3.1 中进行细微调整。
还有一个基于本教程的模块,称为 DataObjectAsPage:https ://github.com/arambalakjian/DataObjects-as-Pages
您可以将此作为代码的基础。