2014-10-20 61 views
0

我有3種類型的內容:餐廳,菜單和菜單項。Drupal 7 - 實體參考 - 僅顯示與另一個節點相關的節點相關的項目

我已經設置了我的餐廳內容類型,以便在創建'餐廳'時,我可以使用實體參考和內聯實體表單模塊創建菜單項菜單項。這一切都很好。

我無法工作的部分是在'餐廳'頁面中正確顯示菜單項目。 我創建了一個菜單視圖塊,其中我添加了菜單項字段,並通過內容類型'菜單項'進行過濾。

當我把這個塊在我的餐廳網頁,我看到正在顯示的所有菜單項...

我怎麼能僅顯示與該有關餐廳菜單的內容類型的菜單項被觀看?

編輯: 在我的「餐廳」內容類型我創建了一個field_menu這是一個實體引用到菜單的內容類型,我用的是內聯實體表單模塊允許範圍內「菜單」實體創建「餐廳的創作頁面。

同樣,在我的'菜單'內容類型中,我有一個field_menu_item,它是對菜單項內容類型的實體引用。

+0

你是如何設置實體的?在餐廳內容類型中有一個字段菜單,它是對菜單內容類型的實體引用,以及菜單內容類型中的字段菜單項,它是對菜單項內容類型的實體引用? – geoandri 2014-10-20 19:22:32

+0

我編輯了我的問題並添加了更多詳細信息。謝謝! – barrakuda 2014-10-20 19:37:11

+0

由於通過實體引用進行實體引用,這很複雜。我做了一個嘗試,但沒有成功。我會再試一次,然後回去,我希望。 – geoandri 2014-10-20 19:58:40

回答

0

在這種情況下,您應該添加菜單項和餐館之間的關係,以便訪問菜單項視圖中的菜單項。您可以在高級區域關係中執行此操作,並添加您需要的實體引用。在你的情況下,你應該添加菜單引用字段和餐廳引用字段。他們應該出現類似

Entity Reference: Referencing entity 
A bridge to the Content entity that is referencing Content via menu_item_field 

上述所有應導致菜單域視圖的過濾器的外觀。當在塊視圖的過濾器中可以訪問菜單字段時,應該爲該字段添加一個上下文過濾器。

然後在「當過濾器值不在URL」區域中的上下文過濾器中選擇「提供默認值」並輸入「PHP代碼」(您應該爲此啓用php過濾器)。在你的php代碼區你應該有下面的代碼

$node=menu_get_object(); 
return $node->field_your_machine_field_name['und'][0]['target_id']; // this is the field you will use for filttering.It should be the menu field in the restaurant content type 

希望我沒有把你搞糊塗。這不是一個簡單的任務。

+0

我在添加關係彈出窗口中看不到restaurant_field的選項。我只看到field_menu和field_menu_item的選項。 – barrakuda 2014-10-20 20:00:48

+0

添加第一個關係後,第二個關係應該可用 – geoandri 2014-10-20 20:01:27

+0

我的菜單內容類型中沒有restaurant_field,因此在創建視圖時,我看不到選擇「實體參考:參考實體..」的選項.. 。via restaurant_field「我將內容類型鏈接到一起的方式如下:餐廳>菜單>菜單項。因此,在餐廳內容類型中,我引用菜單,並在菜單中引用菜單項。這似乎是應該建立的,但我不確定我是否應該做其他事情。 – barrakuda 2014-10-21 14:33:20