我对silverstripe和php都很新,所以这对我来说是一个很好的学习曲线。我很熟悉像Rails这样的MVC框架,所以我不认为我完全迷失了;但是我现在确实花了很多时间在这上面,我似乎无法弄明白。
我正在尝试在我的网站上实现标签功能。例如,我有ArticleHolder列出了ArticleNews,我在ArticleNews中创建了一个名为Tags的文本字段。用户可以在创建新文章时输入标签并用逗号分隔。
我不知道怎么做是抓取所有新闻文章,按标签搜索,然后只返回包含标签新闻的那些。
public function PaginatedPages() {
$paginatedItems = new PaginatedList(getNewsArticles()->sort('Date DESC'), $this->request);
$paginatedItems->setPageLength(3);
return $paginatedItems;
}
public function getNewsArticles(){
$newsArticles = ArticlePage::get();
foreach ($newsArticles as article){
$categories = article::get('category');
}
return $newsArticles;
}
我不确定如何从标签文本字段中获取数据,然后检查新闻是否在那里。如果不是我想从$ newsArticles中删除它。
这是我的第二个问题,如何从$ newsArticle中删除ArticleNews。
我的第三个问题是,我可以在数据库端执行此操作吗?所以简单地从数据库中包含:: get(),其中Tags包含单词News。分隔符是逗号','
答案 0 :(得分:4)
如果您想按特定标签过滤列表
$ articles = ArticlePage :: get() - > filter('Tags:PartialMatch','News')
虽然使用TagField模块之类的实现标签会比逗号分隔的字符串更好。 http://addons.silverstripe.org/add-ons/silverstripe/tagfield