【问题标题】:Silverstripe Implementing TagsSilverstripe 实施标签
【发布时间】:2014-02-05 20:23:26
【问题描述】:

我对 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。

我的第三个问题是,我可以在数据库端这样做吗?因此,只需从标签包含单词 News 的数据库中获取 ::get()。分隔符是逗号','

【问题讨论】:

标签: php silverstripe


【解决方案1】:

如果要按特定标签过滤列表

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

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

【讨论】:

  • 我以前从未添加过这样的模块,我尝试过了解它是如何完成的,但没有运气。 github 上有一个自述文件,但据此我只添加了一个包含 3 行的标记类。似乎不对。你能告诉我我需要做什么才能让它工作吗?我是否从代码文件夹中复制 TagField.php,我应该把它放在哪里?我如何使用他在自述文件中的文章示例来实现它?感谢您的帮助,花了好几天的时间试图解决这个问题。
  • 理想情况下,对于 SilverStripe 模块,您不应将代码复制到模块文件夹之外。您应该在代码中包含模块文件夹,然后使用扩展来“固定”功能...... SilverStripe 的黄金法则......不要破解核心或模块:)
猜你喜欢
  • 2020-07-28
  • 1970-01-01
  • 2013-01-06
  • 2011-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多