由 New Good Man 在 日, 2009-11-15 22:55 發表
相信大家都知道Drupal中Views中有一個很棒的功能,就是藉由Argument進一步搜取資料。然而,您會發現這美妙的功能似乎只能應用在Page類型的views,如果您想提供argument給Views所產生的block怎麼辦呢?以下是一個範例供您參考。
問題:我有一個block裝載著網站內的新聞資料,此新聞資料又是一個多語言類型的資料。我想應用Views模組取出新聞類型資料並顯示在一個block中,而且在語系切換後,這個block也會跟隨著顯示該語系的新聞資料。
作法:(在此我們省略一些Views的基本操作,只針對Argument操作進行說明)
- 點擊Argument區塊中右邊的"十"號以添加一個argument

- 在Groups中,我們選擇Node translation下的Node translation:Language。也就是說,我們給Views設定的argument與node的語系有關。

- 重點來了,由於block無法透過URL來取得相關參數值,所以我們需要使用PHP程式代為指定參數值。因此,我們就在"Action to take if argument is not present: "中選擇"Provide default argument"(意思就是說,如果block無法取得參數值時,將會在這裡取得預設的參數值)。

- 接下來的"Default argument type:"中我們可以直接寫一個固定值,不過此例中,我們將提供一個與語系相關的參數給Views。所以,我們選擇"PHP Code",並在"PHP argument code: "中輸入以下內容:
global $language; return $language->language; - 在這裡,我們返回當前頁面的語系給views block當做參數,便於views搜索出相關的新聞資料出來。
按下"Update"按鈕後,Argument的設定就完成了。此block中顯示的內容也會隨著語系的變換而變動了。
- 瀏覽次數: 190

谢谢你的分享! 很有用!
谢谢你的分享! 很有用!
發表新回應