2010-11-03 44 views
1

我在側邊欄中有一些塊視圖,顯示標記爲某些城市中發生的高光的事件。使用分類法將節點組織到城市中。如何通過URL中的分類參數過濾塊視圖?

當我直接加載一個節點我有一個像www.host.com/events/new-york/name-of-my-nice-event

我有顯示所有事件玩笑在某城市的一些其他網頁瀏覽的網址:www.host.com/events/new-york

我也有一些是靜態頁面適用於所有城市,例如www.host.com/about-us

顯示突出顯示的邊欄塊在整個網站中都可用。現在我想確保側邊欄中的塊只根據URL中提供的分類標準顯示所選城市的那些節點。 (除了靜態的頁面,因爲在URL中有分類,但這些並不重要)

到目前爲止,我試圖通過我的看法的分類術語使用PHP作爲標準的參數一個參數:

if (arg(1)) { 
    $term = arg(1); 
    return $term; 
} 

這對上述頁面瀏覽量很好(例如www.host.com/events/new-york)。但是,當我直接加載節點www.host.com/events/new-york/name-of-my-nice-event我的塊只顯示空文本。

我認爲爭論被索引這樣的:

  events/new-york/name-of-my-nice-event 
      ^0  ^1  ^2 

所以我不明白爲什麼ARG(1)不返回new-york當我查看節點細節。

回答

0

首先,使用路徑和路徑auto,你看到的並不總是你得到的。

Fx的我可以爲我的文章節點設置pathauto產生這樣

content/article/[title]

所以,如果我想要的頭銜,我應該使用arg(2)正確的網址嗎?

不!arg(2)實際上是NULL在這種情況下)。

的原因是,多數民衆贊成由路徑自動生成的URL是假網址,這被翻譯成Drupal的URL。在上面的情況下,我得到的是node/[nid]。所以eventhough節點頭銜,我在url中,我無法使用arg()得到它,但我可以用arg(1)

我無法猜測你的URL映射到,這取決於你如何設置讓nid建立你的網站你使用什麼模塊等。

一個很好的建議,如果你做了很多這些情境感知的事情,是看panels。它能夠告訴模塊像關於它存在的上下文的觀點。就像fx術語,節點等一樣,你可以用它來傳遞參數到視圖中。

面板可以做很多事情,而且非常複雜,但是如果你需要做很多這些事情,這可能是值得的投資。

+0

非常感謝我指出了正確的方向。經過一段時間的努力,我設法解決了我發佈解決方案的問題。 – maze 2010-11-03 17:52:59

0

解決我的問題:

if (arg(0) == 'node' && is_numeric(arg(1))) { 
    $node = node_load(arg(1)); 

    if (count($node->taxonomy) > 0) { 
     foreach ($node->taxonomy as $term) { 
     $term = $term->name; 
     } 
    } 

    $term = strtolower($term); // for some reason needed in my case 
} 

else { 
    $term = arg(1); 
    $term = str_replace('-', ' ', $term); // for some reason needed in my case 
} 

return $term; 
0

儘管這在技術上是可能的,如一些其他的答案中描述的意見2,查看3具有這種整合內置

您可以創建一個參數。爲分類術語id,然後選擇「提供默認參數」。這會給你一個選項「來自URL的分類術語ID」和「從節點頁面加載默認參數...」

這將允許您採取頁面的分類並將其作爲參數傳遞到你的視圖塊。

注意:視圖3目前在Alpha 3中,但是根據我的經驗,它處於相對穩定的狀態,我正在生產站點上使用它。如果它具有上面那些您認爲有用的功能,請使用它,測試它並在出現任何問題時提交錯誤/修補程序!