0

好的,對於那個標題很抱歉,很難形容。我的問題如下:我有內容類型「產品類別」(出於多種原因不使用分類標準)和「產品」。產品使用Node Reference參考其分類。Drupal Views/Node Reference獲取父母關係

我也有一個視圖,它在Category頁面上顯示所有使用Contexual Filter =>「來自URL的節點ID」的所有產品。 我現在的問題是,當我點擊一個產品時,我需要保持關係。上下文過濾器當然不會再知道產品類別的NID,因爲當前的NID是我的產品中的NID。

作品:/分類/ XYZ
作品不:/分類/ XYZ/myProduct的(因爲我需要的 「XYZ」 的NID,而不是 「myProduct的」)

有誰知道我怎麼告訴上下文過濾器獲取父類別的NID?

回答

0

不知道我是否完全理解,但是當您使用上下文篩選器(如URL中的節點標識)時,可以選擇要使用的參數。

在這種相對URL /類別/ XYZ/myProduct的的情況下,arg 1指的是 '類別' 和Arg 2指的是 'XYZ'

也許有/類別/ *和/類別的視圖設置/ xyz/*,然後設置在上下文過濾器中使用的URL的哪些部分不同。

這有幫助嗎?

注意:arg設置應該是上下文過濾器中'提供默認參數'的下拉設置。

+0

是的,你明白。但是,URL/category/xyz/myproduct上的arg()只返回一個數組(例如0 =>「node」,1 =>「76」) - 這是一個正常節點,其中包含產品塊。所以我認爲我的網址對我的產品頁面無太大幫助? – 2013-02-27 13:10:45

+0

您需要勾選「使用路徑別名」複選框!抱歉應該提到那個! – 2013-02-27 15:47:18

+0

嘗試過它充滿希望,但遺憾的是,即使在分類頁面上,這也不起作用。我選擇了「URL的原始值」,將「component」設置爲「2」並勾選「使用路徑別名」。聽起來有意思,什麼都不做。它在黑暗中摸索着,我看不出過濾器收到了什麼(類別的名字?顯然不是NID!)。也許我必須找到自定義PHP代碼的解決方案,獲取父級,加載節點......不是很漂亮。 – 2013-03-01 09:18:20

0

由於缺乏一個更好的解決方案......該產品頁面,我增加了一個圖顯示,改變了一點:

  • 我加了關係,並選擇我的節點參考字段類別
  • 我改變了我的上下文過濾器定製的PHP和提供下面的代碼:

    $n = node_load(arg(1)); 
    return $n->field_product_product_category['und'][0]['nid']; 
    

我不慶祝這個答案被接受,因爲我不認爲這是正確的方式。我加載無論如何加載的節點,所以我想我會產生一個不必要的數據庫調用和所有與正確獲取節點對象有關的東西。

也許某天某人有更好的答案。