您在這裡

求救:D7 的 References 問題!?

bullshop21's 的頭像
bullshop21 在 2012-05-23 (三) 15:30 發表

兩種 node type,分別是:品牌與銷售商

要達到以下兩種效果:

1. 每一個品牌下列出該品牌的所有銷售商
2. 每一個銷售商的頁面顯示出所販售的品牌

系統環境:

Drupal 7.14
Views 7.x-3.3
References 7.x-2.0
Viewfield 7.x-2.x-dev

目前的做法:

參照這一篇 2007 年文章裡給的觀念『與viewfield奮戰』:https://drupaltaiwan.org/forum/20070317/1001

1. 新增一個列出所有品牌的 Views,取名為 brand_list
2. 在銷售商的 node type 裡新增一個 Node reference,並將其與 brand_list 關聯
3. 在新增銷售商時,就可以選擇要勾選的品牌,銷售商頁面也可正常顯示所經銷的品牌列表

所以第二種效果達成!

但第一種效果(每一個品牌下列出該品牌的所有銷售商)卻怎麼都試不出來:

1. 新增一個列出所有銷售商的 Views,取名為 shop_list
2. 在品牌的 node type 裡新增一個 view field....但是後來的設定就看不太懂了

在 D7 的版本下,好像跟 2007 年那篇文章『與viewfield奮戰』裡的設定有些差異,有高人可以指點迷津嗎?XD

Thanks!

1. 每一個品牌下列出該品牌的所有銷售商

建立一個view
1. filter criteria -> content type: 品牌; format : 選擇顯示field; 假設你只需要title field
2. relationships -> 選擇你已經建立的Node reference - reverse (注意, 這是反方向的關係; 由品牌反連結到經銷商)
3. contextual filter : content: nid , 其它設定都用原來的 (不須使用relationship)。
4 回到第一步驟, field 的tilte 欄位要更改, 加上剛建立的relationship

在品牌的content type 下, 加一個viewfield, 勾選always use default value, argument: [node:nid] (token 模組要先啓用)

這樣就ok了。

太感謝 danny 了,views 真是太神奇了...

現在遇到一個進階版的問題 XD

原本需要的兩種效果目前都 ok:

1. 每一個品牌下列出該品牌的所有銷售商
2. 每一個銷售商的頁面顯示出所販售的品牌

現在需要第三種效果:

多了一個 node type,叫做產品,我可以在每一個產品的 node 裡設定它所屬的品牌

然後,『每一個產品需要自動帶出它所屬的銷售商』

像這樣的關聯,views 有辦法做到嗎?

嗨,我來了

繼續上面的討論,要做到第三種效果:『每一個產品需要自動帶出它所屬的銷售商』

我的做法是:

1. 新增一個views,取名為 store_list
2. Filter criteria:內容類型為產品
3. 在 store_list 裡加入 References
4. 接著設定 References 裡的內容:在 Relationships 裡加入一個 Node reference ( field_product_brand 這裡是指產品所屬的品牌),之後再加入第二個 Node reference(field_store_brand 這個是指銷售商所販售的品牌)
5. 在 Contextual filters 裡加入content: Nid
6. 回到 Fields,加入 title ,Relationship 選擇 field_store_brand
7. 離開 Views,在產品的 content type 下, 加一個 view field,Allowed values 勾選 store_list,接著在下方的預設值欄位選擇 store_list - References,Arguments 填上 [node:nid],最後勾選 Always use default value。
8. 大功告成!

日後我只需要在每個銷售商上設定它所販賣的品牌,不同品牌下的所有產品(可能有上百樣)都會自動帶出其所屬銷售商的資訊。

danny 大,這樣的做法對嗎?XD

Very good! 你的做法是正確的。

只是我有幾點小建議, 可以讓設定過程更簡化或清楚些。

1. 在產品或是銷售商 content type -> 設定 node reference field (field_sotre_brand , field_product_brand) 的資料來源, 可以直接選擇Content types that can be referenced : brand, 而不用views, 這樣就不需要設定views reference 了。

2. 你上面寫的第三個步驟是不需要的, 增加references這個display type, 是用于node reference views, 而你是要使用于viewfield, 就用views 預設的master display 就好, 在viewfield 設定時, 可以直接選擇這個view-master.

3. 補充説明你寫的步驟四, 這也是這個view 的關鍵, relationships field_product_brand + field_store_brand - reverse (同時要使用relation:field_product_brand ).

That's all.