最近想在我做的比賽資訊網站新增「得獎名單」的功能,讓網友轉貼得獎名單。 初步構想是:另外新增一個content type,使用node reference功能關連比賽。 在比賽頁面會可以自動新增得獎名單。 不過現在有個問題就是,一個比賽應該只有一個得獎名單,但不知如何限制某比賽只能被referenced一次。 不知有沒有人有線索? 綜合問題6.x 發表回應前,請先登入或註冊 Re: [ node reference] ... 試試看這個吧,可以設定以交集或者聯集的方式來判斷是否為唯一文章:Unique field 6.x-1.1 將「得獎名單」中的「比賽」欄位設成唯一值,應該就可以了。 蠻好用的模組 tky 發表回應前,請先登入或註冊 Re: [ node reference] ... 感謝,我昨天後來也有想到用這個。 不過後來這功能還是卡在我希望「得獎名單」是依附在「比賽」底下的,所以變得有點複雜。 也就是說我希望能在「比賽」頁面的 local menu task (tabs)顯示 [比賽資訊] | 得獎名單 | Dev load, 點「得獎名單」進去之後進入得獎名單node。 然後「得獎名單」node頁面的tabs是 比賽資訊 | [得獎名單] | Dev load 總之就是希望該node是依附在另一node的tabs裡面。 似乎有點複雜。 (用views可做到在比賽頁面多一個「得獎名單」tab,但會變成不只「比賽」這個內容類型有「得獎名單」,不知如何限制...) 發表回應前,請先登入或註冊 Re: [ node reference] ... 用views做的話,tky是不曉得要怎麼在單一node的tab上頭顯示你要的tab(改寫網址過濾嗎?) 不過tky建議說,可以用viewfield或viewreference去做「以nodereference id撈出關聯node並顯示」(取決你的關聯方式是一對多或者多對一),然後可以用cck_fieldgroup_tabs,作到tab切換的效果。 這樣如何呢? tky 發表回應前,請先登入或註冊 Re: [ node reference] ... 嗯...但cck_fieldgroup_tabs的tabs並非加在local menu task這個tabs,而且會把我正在使用的node form column破壞掉, 我可能要再想清楚一點究竟要怎麼做。因為node之間的相關好像有點複雜,我需要 1.能夠讓「比賽」和「得獎名單」有關連,彼此的頁面都有彼此 2.能夠讓「比賽」和「得獎名單」分開編輯,分別計算userpoint 3.能夠讓偵測比賽「截止日期」,截止之後才出現「得獎名單」提交按鈕或內容 頭快爆了 發表回應前,請先登入或註冊 Re: [ node reference] ... TKY想了一下,建議是這樣: 1.彼此關聯的部份,只要在「得獎名單」中放個「比賽」的nodereference欄位,關聯到「比賽」類型即可。然後在「比賽」中放個viewsfield,濾出屬於這個比賽的「得獎名單。如果一定要作成node tab,可能得用上Penal + views才能搞定你的需求。 2.這個部份只要1.作到了,自然不成問題。 3.這個部份沒有什麼具體的想法,可能需要Penal的進階應用。 tky 發表回應前,請先登入或註冊 Re: [ node reference] ... 謝謝tky的腦力激盪。 viewsfield的話,好像還是dev版本(for D6),而且....要怎樣過濾,想起來就好難噢! 所以我就自己寫了hook menu來新增tab了,以下是我的作法以及問題。 1.在「得獎名單」內容弄一個nodereference來指定是哪個比賽的得獎名單 2.應用一些模組達成要求 使用module.backreference使「比賽」自動對應到「得獎名單」 使用module.unique_field來限制一個比賽只有一個得獎名單 使用module.nodereference_url來很便利的在比賽頁面新增得獎名單 3.新增一個模組,寫hook_menu <?php function bhuntr_match_menu() { $items['node/%node/winner'] = array( 'title' => t("得獎名單"), 'description' => t("這個比賽的得獎名單"), 'access callback' => "bhuntr_match_check_local_tasks", 'access arguments' => array(1), 'page callback' => "bhuntr_match_winner", 'page arguments' => array(1), 'type' => MENU_LOCAL_TASK ); return $items; } function bhuntr_match_winner($node) { if($node->field_match_winner['0']['nid']){ $win = node_load($node->field_match_winner['0']['nid']); return $win->body; } if(!$node->field_match_winner['0']['nid']){ return '沒有得獎名單情報,若你有的話請按這邊輸入'; } } function bhuntr_match_check_local_tasks($node) { return ($node->type == 'match'); } ?> 這樣一來有成功新增一個tab,會連到winner,像是這樣:http://bhuntr.com/match/detail/802 ----------- 不過有個問題: 點進去這個tab「得獎名單」之後,顯示的是$node->body。 但我希望能顯示整個完整的node+links+comment,也就是希望是顯示的像整個node一樣,不知要如何做? 發表回應前,請先登入或註冊 Re: [ node reference] ... 最後我的作法是, 1.「得獎名單」這個content type有node reference,會指向「比賽」 2. 在比賽頁面寫一個local menu task,使用views api直接輸出view 實驗起來是OK,但還沒完成,等完成再放上原始碼。 發表回應前,請先登入或註冊
Re: [ node reference] ... 試試看這個吧,可以設定以交集或者聯集的方式來判斷是否為唯一文章:Unique field 6.x-1.1 將「得獎名單」中的「比賽」欄位設成唯一值,應該就可以了。 蠻好用的模組 tky 發表回應前,請先登入或註冊
Re: [ node reference] ... 感謝,我昨天後來也有想到用這個。 不過後來這功能還是卡在我希望「得獎名單」是依附在「比賽」底下的,所以變得有點複雜。 也就是說我希望能在「比賽」頁面的 local menu task (tabs)顯示 [比賽資訊] | 得獎名單 | Dev load, 點「得獎名單」進去之後進入得獎名單node。 然後「得獎名單」node頁面的tabs是 比賽資訊 | [得獎名單] | Dev load 總之就是希望該node是依附在另一node的tabs裡面。 似乎有點複雜。 (用views可做到在比賽頁面多一個「得獎名單」tab,但會變成不只「比賽」這個內容類型有「得獎名單」,不知如何限制...) 發表回應前,請先登入或註冊
Re: [ node reference] ... 用views做的話,tky是不曉得要怎麼在單一node的tab上頭顯示你要的tab(改寫網址過濾嗎?) 不過tky建議說,可以用viewfield或viewreference去做「以nodereference id撈出關聯node並顯示」(取決你的關聯方式是一對多或者多對一),然後可以用cck_fieldgroup_tabs,作到tab切換的效果。 這樣如何呢? tky 發表回應前,請先登入或註冊
Re: [ node reference] ... 嗯...但cck_fieldgroup_tabs的tabs並非加在local menu task這個tabs,而且會把我正在使用的node form column破壞掉, 我可能要再想清楚一點究竟要怎麼做。因為node之間的相關好像有點複雜,我需要 1.能夠讓「比賽」和「得獎名單」有關連,彼此的頁面都有彼此 2.能夠讓「比賽」和「得獎名單」分開編輯,分別計算userpoint 3.能夠讓偵測比賽「截止日期」,截止之後才出現「得獎名單」提交按鈕或內容 頭快爆了 發表回應前,請先登入或註冊
Re: [ node reference] ... TKY想了一下,建議是這樣: 1.彼此關聯的部份,只要在「得獎名單」中放個「比賽」的nodereference欄位,關聯到「比賽」類型即可。然後在「比賽」中放個viewsfield,濾出屬於這個比賽的「得獎名單。如果一定要作成node tab,可能得用上Penal + views才能搞定你的需求。 2.這個部份只要1.作到了,自然不成問題。 3.這個部份沒有什麼具體的想法,可能需要Penal的進階應用。 tky 發表回應前,請先登入或註冊
Re: [ node reference] ... 謝謝tky的腦力激盪。 viewsfield的話,好像還是dev版本(for D6),而且....要怎樣過濾,想起來就好難噢! 所以我就自己寫了hook menu來新增tab了,以下是我的作法以及問題。 1.在「得獎名單」內容弄一個nodereference來指定是哪個比賽的得獎名單 2.應用一些模組達成要求 使用module.backreference使「比賽」自動對應到「得獎名單」 使用module.unique_field來限制一個比賽只有一個得獎名單 使用module.nodereference_url來很便利的在比賽頁面新增得獎名單 3.新增一個模組,寫hook_menu <?php function bhuntr_match_menu() { $items['node/%node/winner'] = array( 'title' => t("得獎名單"), 'description' => t("這個比賽的得獎名單"), 'access callback' => "bhuntr_match_check_local_tasks", 'access arguments' => array(1), 'page callback' => "bhuntr_match_winner", 'page arguments' => array(1), 'type' => MENU_LOCAL_TASK ); return $items; } function bhuntr_match_winner($node) { if($node->field_match_winner['0']['nid']){ $win = node_load($node->field_match_winner['0']['nid']); return $win->body; } if(!$node->field_match_winner['0']['nid']){ return '沒有得獎名單情報,若你有的話請按這邊輸入'; } } function bhuntr_match_check_local_tasks($node) { return ($node->type == 'match'); } ?> 這樣一來有成功新增一個tab,會連到winner,像是這樣:http://bhuntr.com/match/detail/802 ----------- 不過有個問題: 點進去這個tab「得獎名單」之後,顯示的是$node->body。 但我希望能顯示整個完整的node+links+comment,也就是希望是顯示的像整個node一樣,不知要如何做? 發表回應前,請先登入或註冊
Re: [ node reference] ... 最後我的作法是, 1.「得獎名單」這個content type有node reference,會指向「比賽」 2. 在比賽頁面寫一個local menu task,使用views api直接輸出view 實驗起來是OK,但還沒完成,等完成再放上原始碼。 發表回應前,請先登入或註冊
Re: [ node reference] ...
試試看這個吧,可以設定以交集或者聯集的方式來判斷是否為唯一文章:
Unique field 6.x-1.1
將「得獎名單」中的「比賽」欄位設成唯一值,應該就可以了。
蠻好用的模組
tky
Re: [ node reference] ...
感謝,我昨天後來也有想到用這個。
不過後來這功能還是卡在我希望「得獎名單」是依附在「比賽」底下的,所以變得有點複雜。
也就是說我希望能在「比賽」頁面的 local menu task (tabs)顯示
[比賽資訊] | 得獎名單 | Dev load,
點「得獎名單」進去之後進入得獎名單node。
然後「得獎名單」node頁面的tabs是
比賽資訊 | [得獎名單] | Dev load
總之就是希望該node是依附在另一node的tabs裡面。
似乎有點複雜。
(用views可做到在比賽頁面多一個「得獎名單」tab,但會變成不只「比賽」這個內容類型有「得獎名單」,不知如何限制...)
Re: [ node reference] ...
用views做的話,tky是不曉得要怎麼在單一node的tab上頭顯示你要的tab(改寫網址過濾嗎?)
不過tky建議說,可以用viewfield或viewreference去做「以nodereference id撈出關聯node並顯示」(取決你的關聯方式是一對多或者多對一),然後可以用cck_fieldgroup_tabs,作到tab切換的效果。
這樣如何呢?
tky
Re: [ node reference] ...
嗯...但cck_fieldgroup_tabs的tabs並非加在local menu task這個tabs,而且會把我正在使用的node form column破壞掉,
我可能要再想清楚一點究竟要怎麼做。因為node之間的相關好像有點複雜,我需要
1.能夠讓「比賽」和「得獎名單」有關連,彼此的頁面都有彼此
2.能夠讓「比賽」和「得獎名單」分開編輯,分別計算userpoint
3.能夠讓偵測比賽「截止日期」,截止之後才出現「得獎名單」提交按鈕或內容
頭快爆了
Re: [ node reference] ...
TKY想了一下,建議是這樣:
1.彼此關聯的部份,只要在「得獎名單」中放個「比賽」的nodereference欄位,關聯到「比賽」類型即可。然後在「比賽」中放個viewsfield,濾出屬於這個比賽的「得獎名單。如果一定要作成node tab,可能得用上Penal + views才能搞定你的需求。
2.這個部份只要1.作到了,自然不成問題。
3.這個部份沒有什麼具體的想法,可能需要Penal的進階應用。
tky
Re: [ node reference] ...
謝謝tky的腦力激盪。
viewsfield的話,好像還是dev版本(for D6),而且....要怎樣過濾,想起來就好難噢!
所以我就自己寫了hook menu來新增tab了,以下是我的作法以及問題。
1.在「得獎名單」內容弄一個nodereference來指定是哪個比賽的得獎名單
2.應用一些模組達成要求
使用module.backreference使「比賽」自動對應到「得獎名單」
使用module.unique_field來限制一個比賽只有一個得獎名單
使用module.nodereference_url來很便利的在比賽頁面新增得獎名單
3.新增一個模組,寫hook_menu
<?php
function bhuntr_match_menu() {
$items['node/%node/winner'] = array(
'title' => t("得獎名單"),
'description' => t("這個比賽的得獎名單"),
'access callback' => "bhuntr_match_check_local_tasks",
'access arguments' => array(1),
'page callback' => "bhuntr_match_winner",
'page arguments' => array(1),
'type' => MENU_LOCAL_TASK
);
return $items;
}
function bhuntr_match_winner($node) {
if($node->field_match_winner['0']['nid']){
$win = node_load($node->field_match_winner['0']['nid']);
return $win->body;
}
if(!$node->field_match_winner['0']['nid']){
return '沒有得獎名單情報,若你有的話請按這邊輸入';
}
}
function bhuntr_match_check_local_tasks($node) {
return ($node->type == 'match');
}
?>
這樣一來有成功新增一個tab,會連到winner,像是這樣:
http://bhuntr.com/match/detail/802
-----------
不過有個問題:
點進去這個tab「得獎名單」之後,顯示的是$node->body。
但我希望能顯示整個完整的node+links+comment,也就是希望是顯示的像整個node一樣,不知要如何做?
Re: [ node reference] ...
最後我的作法是,
1.「得獎名單」這個content type有node reference,會指向「比賽」
2. 在比賽頁面寫一個local menu task,使用views api直接輸出view
實驗起來是OK,但還沒完成,等完成再放上原始碼。