欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

drupal7 为页面建立自定义的权限

shiping1 的头像

为页面建立自定义的权限

更多0

原文链接http://drupal.org/node/1118210(link is external)

目前为止,我们已经有了一个区块和一个设置表格。区块显示了所能够显示的最多的链接。但是,也许存在更多的链接,我们的区块的大小不够显示。所以我们需要一个页面来显示更多的最近一周所新建的内容。

自定义权限

首先,我们用hook_permission()建立一个定义权限。这个钩子所定义的权限可以在people->Permission页面设置。(http://example.com/admin/people/permissions(link is external))只有那些拥有这个权限的用户才能访问我们将要建立的页面

添加下列代码到我们的模块文件:

<?php
/**
* Implements hook_permission().
*/

function current_posts_permission(){
  return array(
    
'access current_posts content' => array(
      
'title' => t('Access content for the Current posts module'),
    ) 
  ); 
}

?>

这个钩子的定义严格遵循了drupal队列的模式。重点在于机器可读的钩子名,他应该和我们要建立的hook_menu()名相同。'title'定义了这个权限的名称,它将出现在权限管理页面。这个名称应该被t()方法所翻译。请参看hook_permission()(link is external)来查询所有可用的选项参数。

注册URL并为页面方法命名

我们将编辑current_posts_menu()钩子,来建立一个路径和新页面的名称。下面是drupal命名的一个快速提示:如果我们要建立的私有的方法,别的模块基本不会用到的,那么我们用下划线来作为方法名的开头,比如_your_module_name_。如果我们的方法是公开的,其他模块会频繁的用到它,我们也不会频繁的更改它的参数,那么我们不用下划线作为名字的开头,比如your_module_name_。如果我们要执行的是一个钩子,那么我们必须遵循your_module_name_hookname的格式。所以,如果我们没有执行一个钩子,我们已定要检查我们的命名没有恰巧符合一个钩子的格式,否则系统将认为这是一个钩子。

页面的callback是一个非常好的私有方法的例子。所以我们的命名起始与一个下划线+模块名+'page'。把下面的代码作为队列的第二个元素添加到我们的current_posts_menu()方法。确保我们 return $items是方法的最后一行, 记住不要包含php的开始和结束符。

<?php
  $items
['current_posts'] = array(
    
'title' => 'Current posts',
    
'page callback' => '_current_posts_page',
    
'access arguments' => array('access current_posts content'),
    
'type' => MENU_NORMAL_ITEM, //Will appear in Navigation menu.
  
);
?>

把这个menu item和前一个menu item做对比。前一个item需要有description作为设置页面的描述。在这里,这是不重要的。因为我们将建立的页面方法不会调用drupal_get_form,我们并没有任何页面参数要传进去。新建的权限将成为我们的access argument。因为我们没有用admin/config路径,所以我们的页面链接将出现在Navigation menu。

检查

激活我们的模块,并检查Navigation menu。我们应该能看到Current posts的链接。如果看不到,请试着清空缓冲,然后再试试。因为我们还没有编写页面方法,所以这个链接将引导我们到一个空白页面,或者错误信息。在继续编写我们的模块前,请记住卸载当前模块。

来自 http://drupalchina.cn/doc/913.html
普通分类: