继续Drupal分享精神 QQ群:107748121 站长QQ:532116351【drupal交流+drupal 建站+theme制作】
登录 注册

Drupal hook_menu 菜单系统的简单实践使用,Drupal 菜单设置

简单的企业类型网站基本开发完了,自己的小小的产品类型模块也基本完了,下面就每天记录点开发经验。下一步打算把做好的网站拿出来SHOW一下。

在回顾一下。这里主要是drupal菜单系统(menu)的简单应用。下面是我的产品类型的代码,比较简单,在摸索中找到一点小技巧。
我在开发product类型的时候,后台已经启用了简洁衔接模式,我输入域名/product 发现没有找到,最后发现用menu 菜单来解决这个问题。比如我想打开所有product下面的产品信息。然后分页显示。下面具体的实例就是实现了这样的功能,通过menu,然后再加上一个函数product_page_last(此函数我放在product.pages.inc'文件里面。好了,下面就是我的小小代码。如果不完善,请多指教!

<?php
function product_menu() {
//$items['访问路径']:path:http://www.abc.com/path 访问路径 
// 二级路径 $it['path1/path2']
 
$items['product'] = array(
     
//title 菜单标题
   
'title' => '产品目录@name', //在menu里不要使用t('')
   
'title callback' => 't', //回调t()函数
   
'title arguments' => array('@name'=>''),// 传入参数给t函数 参数必须是字符串,如果是3 要写成 =>'3'
      // page callback 回调 函数 product_page_last
   
'page callback' => 'product_page_last',
   
// 访问菜单的权限设置
    // 访问权限函数回调 uses_access ,然后才根据access arguments 传入的 view product 参数给user_access 来判断访问权限
    // 如果不写access_callback 直接用access_arguments => array('access content') 就是继承了node模板的默认权限属性
    //'access callback' => 'user_access',
   
'access arguments' => array('view product'),
   
//

    //MENU_NORMAL_ITEM:正常菜单系统,在菜单树上显示,管理员可以在后台移动和隐藏菜单操作
    //
   

'type' => MENU_SUGGESTED_ITEM,
   
'file' => 'product.pages.inc', // 要访问的自定义函数文件
 
);
/*
$items['test'] = array(
    'title' => 'test',
    'page callback' => 'product_loadfiles',
     'access arguments' => array('view product'),
    //'type' => MENU_SUGGESTED_ITEM,
   
);
*/
   
return $items;
}
?>

drupal 菜单,主要包括菜单的标题,你可以为菜单标题去传入一个参数,可以调用你设定的函数。对于菜单page来说,也可以为它定义参数,和表现的形式。
这些都可以自定义函数调用来实现。
我的这个菜单主要作用是浏览product 类型页面,然后出现所有的产品列表。

评论

发表新评论

此内容将保密,不会被其他人看见。
  • 自动将网址与电子邮件地址转变为链接。
  • 自动断行和分段。
  • You can use BBCode tags in the text.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

更多关於格式化选项的信息

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.