多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Drupal 7 模塊開發 建立模塊 第一個頁面(hook_menu)

Drupal 7 模塊開發 建立模塊 第一個頁面(hook_menu)

來源:程序員人生   發布時間:2015-01-21 08:30:54 閱讀次數:3996次

建立模塊請參考 《Drupal 7 模塊開發 建立

如果你要支持中文,文件格式必須保存為 UTF⑻,NO BOM

------------------------------

hook_menu 定義菜單項和頁面反饋。

我們要用自己模塊名替換 hook。在這里我們建立1個 my_first_module_menu() 在 my_first_module.module文件里

<?php function my_first_module_menu() { $items = array(); $items['mypage'] = array( 'title' => '第1個模塊 ―― 頁面', //菜單項的名稱 'description' => '我的第1個模塊頁面', //當鼠標移動到菜單項,顯示菜單的說明 'page callback' => 'my_page_view', //產生頁面內容 'access callback' => TRUE, //所有人都能訪問 'type' => MENU_NORMAL_ITEM, //菜單項顯示類型 ); return $items; } function my_page_view() { $output = t('這是模塊做的第1個頁面。'); return $output; }

注意:結尾不要寫 ?>

清空Cache,然后訪問 http://www.mysite.com/?q=mypage ,會看到下圖

(事實上,這時候你訪問任何 http://www.mysite.com/?q=mypage/aaa/bbb 都會訪問到這個page)

$items[] 路徑

  • $items先在 [ ] 里定義路徑,在訪問 /mypage 頁面時候,去調用 my_page_view 函數產生頁面
  • 每個$items都是對應1個路徑,寫在 [ ] 里。當item用1樣路徑時候,就調用后寫那個$items的。(有文章說和$items里參數weight有關,我測試weight不會影響前后次序)

  • [ ] 里也能夠用通配符,比方: [node/%/edit]。詳細參見:function hook_menu 里的Wildcards in Paths1段

title 必須

未翻譯的主題

title callback

產生主題的函數。默許是 t()。如果你不想翻譯,就設置FALSE (所以我們沒必要再寫 'title' => t('第1個表單')

title arguments

傳遞到 t() 或 你自定義函數 的參數??梢院吐窂浇M件結合
參考:Menu item title and description callbacks, localization

description

未翻譯的說明描寫。

page callback

當用戶訪問頁面路徑的時候,調用1個顯示網頁的函數。

如果不寫,父菜單的回調函數將代替履行。也就是說 $items['mypage'] 和 $items['mypage/child'] 會履行1樣內容。

有1個特別回調函數 drupal_get_form(),這個將在后面 Drupal 7 模塊開發 建立、驗證、提交表單(Form) 具體講

page arguments

傳遞給 page callback 函數的1串參數數組,上面例子沒用用到,我們略加修改:

  • 修改1下 $items,路徑成為 $items['mypage/%/edit'],意思是當訪問 mypage/1/edit,或 mypage/2/edit 等,履行此函數
  • 添加 page arguments:'page arguments' => array('hello', 1),
    ‘hello' 作為1個常量傳給 $arg1
    1 表示路徑mypage后面第1層:當你訪問 mypage/1/edit 時候,返回就是 1;如果你訪問 mypage/world/edit,返回就是world
  • 給函數 my_page_view增加傳遞參數, function my_page_view($arg1, $arg2)

修改后,完全代碼以下:

<?php function my_first_module_menu() { $items = array(); $items['mypage/%/edit'] = array( //修改路徑 'title' => '第1個模塊 ―― 頁面', 'description' => '我的第1個模塊頁面', 'page callback' => 'my_page_view', 'page arguments' => array('hello', 1), //添加參數 'access callback' => TRUE, 'type' => MENU_NORMAL_ITEM, ); return $items; } function my_page_view($arg1, $arg2) { //添加參數傳遞 $output = t('這是模塊做的第1個頁面。'); $output .= '<br />' . $arg1 . ' ' . $arg2; //打印參數 return $output; }


清空Cache,然后訪問 http://www.mysite.com/?q=mypage/world/edit ,會看到下圖

access callback

如果有訪問這頁權限,就要返回TRUE,否則就FALSE(如果不寫,默許是FALSE)。如果false,頁面就會出現 Access denied 提示。

type

描寫菜單項屬性的代碼。許多快捷代碼的常量在 menu.inc 里。

我們這里用了默許項 MENU_NORMAL_ITEM,所以$items里可以不寫 'type' => MENU_NORMAL_ITEM,

經常使用幾種:

  • MENU_NORMAL_ITEM,顯示在Navigation菜單列表下,管理員可以拖動或隱藏
  • MENU_SUGGESTED_ITEM,和MENU_NORMAL_ITEM1樣,只是默許狀態是Disabled的,需要管理員去手工Enabled
  • MENU_CALLBACK 不會產生菜單和面包屑(Breadcrumbs)。只是簡單注冊1個路徑,當路徑被訪問時,履行相應功能。通常是被API調用。
  • MENU_LOCAL_ACTION 在父菜單里,顯示1個link,引導下步操作。比方:添加1個菜單
  • MENU_LOCAL_TASK 也是作為1個link,不過通常是以標簽(TAB)格式顯示
  • MENU_DEFAULT_LOCAL_TASK 和 MENU_LOCAL_TASK 1樣是標簽(TAB),不過是默許標簽,和父菜單路徑1樣(這個itmes的路徑只是表達是父菜單)

想深入了解,可以打開目錄下 /modules/menu/menu.modules文件,然后結合http://www.yoursite.com/?q=admin/structure/menu/manage/navigation,幫助你了解

file

在頁面回調前,這個文件已被包括。允許頁面回調函數在另外一個分開的文件里。除非這個在“file path”已指定路徑,否則這個文件在履行模塊的同1個目錄里。這個文件不合適其他回回調(call back),只適用于 page callback

file path

這是指定file所在目錄。默許路徑是當前模塊履行hook所在路徑

menu_name

如果你不要把這個菜單項放在Navigation下,就能夠在這里指定。比方:'menu_name' => 'main-menu',這樣就會和Home1起出現在主菜單上

(更多參數,漸漸完善)



生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 激情欧美日韩一区二区 | 亚洲男人的天堂久久无 | 成人在线视频网站 | 亚洲国产综合精品中文第一区 | 国产精品中文字幕在线 | 亚洲精品色一区二区三区 | 国产中文欧美 | 国产精品1区 2区 3区 | 最近最好的中文字幕免费 | 久久久久爽亚洲精品 | 亚洲另类中文字幕 | 日本综合在线 | 午夜亚洲国产理论秋霞 | 国产在线a不卡免费视频 | xxxx性视频 | 国产精久久一区二区三区 | 日韩看片| 国产一区二区视频在线观看 | 白浆都出来了视频国产精品 | 日韩欧美第一区二区三区 | 日本人与亚洲人hd | 久久久久久综合 | www.亚洲精品.com | 欧美一区二区在线观看免费网站 | 久久久精品3d动漫一区二区三区 | 日韩天堂 | 69做爰视频在线观看 | 欧美久久久久久 | 国产拍视频 | 国产一区二 | 在线视频 亚洲 | 日本不卡在线一区二区三区视频 | 中文国产成人精品少久久 | 亚洲产国偷v产偷v自拍涩爱 | a级片视频网站 | 欧美日韩永久久一区二区三区 | 午夜美女写真福利写视频 | 亚洲精品在线播放视频 | 亚洲性网站 | 国产一区二区免费视频 | 欧美日韩在线观看一区 |