您在這裡

在文章頁面顯示「相關文章」區塊(D6)

hanamizuki's 的頭像
hanamizuki 在 2009-07-17 (週五) 20:21 發表

最近在弄一個新網站,是收集比賽資訊的。
而在比賽的頁面裡面我希望能顯示「相關比賽」,但又需要比較進階的設定,因此苦惱了很久。

其實有許多可以顯示相關文章的模組,到Drupal網站搜尋related或是similar或是relevant看看吧!
也可以看之前的這篇:
https://drupaltaiwan.org/forum/20080317/1959

但我的內容是「比賽」,是有時間性的,過期的比賽我並不會Unpublish,只是篩選掉而已,
這些模組都沒有辦法做進階的設定,最後我選擇用Views的Argument。

我參考的是這篇:
http://www.hankpalan.com/blog/drupal/related-content-views-2-drupal

詳細作法:
1.新增一個View, 並新增Block Display
2.新增一個Argument:分類: Term ID
3.選擇Provide default argument然後選PHP code
我的情況是,每種比賽都有四種分類,但我只希望用其中兩種分類來當作相關文章,所以寫得有點多。
其中兩種分類的vid分別是2和4。這種寫法感覺有點笨,不知有沒有更好的寫法?
<?php
$node=node_load(arg(1));
if($node)
{
$terms2 = taxonomy_node_get_terms_by_vocabulary($node, 2);
if ($terms2)
{
foreach ($terms2 as $term2)
{
$allterms[]=$term2->tid;
}
}

$terms4 = taxonomy_node_get_terms_by_vocabulary($node, 4);
if ($terms4)
{
foreach ($terms4 as $term4)
{
$allterms[]=$term4->tid;
}
}
$output = implode('+',$allterms);
return $output;
}
else{return;}
?>

4.勾Allow multiple terms per argument.和Reduce duplicates

5.再新增一個Argument:內容節點: nid
6.選Provide default argument然後Node ID from URL
7.勾Exclude the argument
8.新增Field:標題
9.新增Filter:日期:截止日期,把已過期的篩選掉,還有Publish

結果是這樣

可到這邊進去看各種比賽,看看比賽左邊的相關比賽是不是真的感覺是「相關」....
http://bhuntr.com/match/all

我覺得有點疑惑的是,我的兩種分類分別是「比賽類型」和「獎品等級」,我希望左邊出現的順序能夠先出現「比賽類型」和「獎品等級」都一樣的,再出現「比賽類型」一樣的,最後才是「獎品等級」一樣的。目前出現的很多都是「獎品等級」一樣的...所以乍看之下會覺得不是太有關...