2014-02-05 97 views
0

我對silverstripe和php完全陌生,所以這對我來說是相當學習的曲線。我非常熟悉Rails等MVC框架,所以我不認爲我完全迷失了;但是我現在花了好幾天的時間,而且我似乎無法弄清楚。Silverstripe實現標籤

我想在我的網站上實現標籤功能。例如,我擁有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的數據庫獲取()。分隔符是逗號 ''

+2

Silverstripe博客模塊。看看代碼的一些幫助:https://github.com/silverstripe/silverstripe-blog/tree/master/code看看BlogEntry.php和BlogTree.php – 3dgoo

+0

今晚我會看看。謝謝! – Bojan

回答

4

如果你想通過一個特定的標記,以過濾列表

$文章= ArticlePage ::得到() - >過濾器( '標籤:PartialMatch', '新聞')

儘管使用類似於TagField模塊的標籤來實現標籤會比逗號分隔的字符串更好。 http://addons.silverstripe.org/add-ons/silverstripe/tagfield

+0

我從來沒有添加過這樣的模塊,我試過看它是如何完成的,但沒有運氣。在github上有一個自述文件,但據此我只需添加一個有3行的標籤類。似乎並不正確。你能告訴我我需要做些什麼才能做到這一點?我是否從代碼文件夾複製TagField.php,我在哪裏放置它?如何使用自述文件中的文章示例實現該功能? 謝謝你的幫助,花了好幾天的時間試圖找出答案。 – Bojan

+0

理想情況下,SilverStripe模塊不應將代碼從模塊文件夾中複製出來。你應該包括模塊文件夾和你的代碼,然後使用擴展來'螺栓'功能...金規則與SilverStripe ...不要破解核心或模塊:) – Cam