Silverstripe实施标签

时间:2014-02-05 20:23:26

标签: php silverstripe

我对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。分隔符是逗号','

1 个答案:

答案 0 :(得分:4)

如果您想按特定标签过滤列表

$ articles = ArticlePage :: get() - > filter('Tags:PartialMatch','News')

虽然使用TagField模块之类的实现标签会比逗号分隔的字符串更好。 http://addons.silverstripe.org/add-ons/silverstripe/tagfield