Skip to main content

How to pass an argument to a views block

Posted in

相信大家都知道Drupal中Views中有一個很棒的功能,就是藉由Argument進一步搜取資料。然而,您會發現這美妙的功能似乎只能應用在Page類型的views,如果您想提供argument給Views所產生的block怎麼辦呢?以下是一個範例供您參考。

問題:我有一個block裝載著網站內的新聞資料,此新聞資料又是一個多語言類型的資料。我想應用Views模組取出新聞類型資料並顯示在一個block中,而且在語系切換後,這個block也會跟隨著顯示該語系的新聞資料。

作法:(在此我們省略一些Views的基本操作,只針對Argument操作進行說明)

  1. 點擊Argument區塊中右邊的"十"號以添加一個argument
  2. 在Groups中,我們選擇Node translation下的Node translation:Language。也就是說,我們給Views設定的argument與node的語系有關。
  3. 重點來了,由於block無法透過URL來取得相關參數值,所以我們需要使用PHP程式代為指定參數值。因此,我們就在"Action to take if argument is not present: "中選擇"Provide default argument"(意思就是說,如果block無法取得參數值時,將會在這裡取得預設的參數值)。
  4. 接下來的"Default argument type:"中我們可以直接寫一個固定值,不過此例中,我們將提供一個與語系相關的參數給Views。所以,我們選擇"PHP Code",並在"PHP argument code: "中輸入以下內容:
         global $language;     return $language->language;    
  5. 在這裡,我們返回當前頁面的語系給views block當做參數,便於views搜索出相關的新聞資料出來。

按下"Update"按鈕後,Argument的設定就完成了。此block中顯示的內容也會隨著語系的變換而變動了。

Your rating: 平均分數: 4.3 (4 votes)

谢谢你的分享! 很有用!

谢谢你的分享! 很有用!

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件位址轉變為連結。
  • 可使用的 HTML 標籤:<img> <a> <p> <br /> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h1> <h2> <h3>
  • 自動斷行和分段。

更多關於格式選項的資訊

CAPTCHA
為了網站安全,請您輸入正確答案,謝謝。
Image CAPTCHA
Enter the characters (without spaces) shown in the image.