drupal中hook_menu()使用

hook_menu()鉤子可讓模塊來註冊如何處理URL請求的路徑,路徑能夠只使用來處理URL請求,也能夠註冊一個連接做爲導航菜單。一個路徑和它對應的信息一般被叫作「菜單路由項」(menu router item),這個鉤子不多被使用(例如在新的模塊被啓用的時候),結果被緩存在數據庫中。html

hook_menu()鉤子的實現一般返回一個關聯數組,它的的鍵值就是路徑,它的值就是一組相關屬性的關聯數組。它的返回值主要包括如下字段:node

  • title:必填項,菜單項的標題數據庫

  • title callback:用來建立標題的回調函數,默認使用t()函數翻譯,若是想使用原字符,設置爲falseapi

  • title arguments:傳遞給t()函數的參數或者自定義的回調函數數組

  • description:菜單項的說明瀏覽器

  • page callback:用戶訪問URL地址時顯示頁面的回調函數,若是未設置,則使用父菜單項的回調函數。例如咱們設置了菜單項bar/foo緩存

    <code> function test_menu() { $items['bar/foo'] = array( 'page callback' => 'test_abc_view', ); return $items; }函數

    function test_abc_view($ghi = 0, $jkl = '') {
         // ...
     }

    </code>url

當請求url路徑‘bar/foo’時,回調函數test_abc_view被執行,參數$ghi和$jkl使用默認參數值。 當請求url路徑‘bar/foo/123/456’時,回調函數test_abc_view被執行,參數$ghi的值爲123,而$jkl的值爲456,這個參數是自動從url串中獲取並傳遞給回調函數。翻譯

  • page arguments:傳遞給page callback的一個數組。

  • delivery callback:用於打包和發送結果到page callback函數和瀏覽器的回調函數,默認值爲drupal函數drupal_deliver_html_page(),除非是一個從父菜單繼承的值(此處不太明白)。值得注意的是,這個回調函數在訪問權限驗證失敗的狀況下也會執行,因此咱們在定義這個回調函數時要考慮到這點。

  • access callback:訪問權限控制的回調函數,返回TRUE表示用戶有權限訪問該菜單項,返回FALSE則沒有權限訪問。也能夠是一個布爾常量或數字來代替回調函數。默認爲drupal函數user_access()

  • access arguments:傳遞給access callbac回調函數的數組參數。若是回調函數是從父菜單項繼承的,則該參數也會從父菜單繼承,除非在子菜單中定義覆蓋繼承的值。

  • theme callback:可選。返回drupal系統中存在的機器可讀的主題的名稱,若沒有提供,則從父菜單中繼承。若是沒有定義該回調函數或者該函數沒有返回當前drupal中定義的可用的主題,則由drupal函數hook_custom_theme()或者默認主題決定。通常狀況下,這個回調函數主要用於那些和特定主題緊密相關的頁面(好比一個模塊容許根據用戶的角色動態的設置主題)。

  • theme arguments:傳遞給theme callback回調函數的數組。

  • file:定義page callback函數的文件,在調用時要包含進來。這個應該設置爲相對於當前模塊 的路徑。這個值只適用於page callback,不適用於其餘回調函數。

  • file path:定義上述file參數文件所在的路徑。

  • load arguments:傳遞給通配符對象加載器的數組參數。例如,一個模塊註冊了一個路徑‘node/%node/revisions/%/view’,該參數設置爲array(3),‘%node’表示使用node_load()加載函數來加載頁面,參數中的3表示把路徑中第4段傳遞給node_load()(數字索引從0開始),所以,若是請求路徑‘node/12/revisions/29/view’,則會調用node_load(12,29)。

  • weight:數字,用於判斷在菜單項中顯示位置,數字越大, 顯示的位置越靠下,默認值爲0,若是權重值同樣,則按照字母順序排列。

  • menu_name:可選。若是不想該菜單項顯示在導航中能夠設置該項。

  • expanded:可選。若是設置爲TRUE,而且提供了菜單連接,那麼這個菜單連接始終是展開顯示的,跟在UI管理界面中設置複選框爲勾選的效果是同樣的。

  • context:可選。定義標籤(tab)顯示的上下文。全部的標籤都默認顯示爲本地任務(local tasks)在頁面上下文中。包括: MENU_CONTEXT_PAGE:(默認)在頁面上下文中標籤顯示爲本地任務。 MENU_CONTEXT_INLIME:標籤在頁面上下文外只顯示爲上下文連接。

  • tab_parent:對於本地任務菜單項,設置爲本地任務菜單的父菜單項,默認爲該路徑中去除最後一項的值,好比‘admin/people/create’的父菜單項爲‘admin/people’。

  • tab_root:對於本地任務來講,該項爲最近的非標籤項的值,同tab_parent。

  • position:在系統管理菜單中顯示的位置,可選爲left或right。

  • type:描述菜單項屬性的位掩碼,這些位掩碼在menu.inc定義:

    1. MENU_NORMAL_ITEM:普通菜單項顯示在菜單樹中,並且能夠被管理員移動或隱藏。
    2. MENU_CALLBACK:回調函數註冊一個URL路徑,從而當URL路徑被訪問時產生正確的信息。
    3. MENU_SUGGESTED_ITEM:建議菜單,管理員啓用後將變爲MENU_NORMAL_ITEM
    4. MENU_LOCAL_ACTION:本地動做是描述父菜單項好比添加一個用戶或區塊的動做,在主題的動做列表中顯示
    5. MENU_LOCAL_TASK:本地任務是描述顯示不一樣數據的菜單項,通常顯示爲標籤(tabs)
    6. MENU_DEFAULT_LOCAL_TASK:一組本地任務中設置爲默認顯示的項。
  • options:當從菜單項中建立連接時傳遞給l()函數的選項數組。

相關文章
相關標籤/搜索