13 改变其它模块的菜单链接

admin 的头像
Submitted by admin on 星期二, 2015-06-02 01:34

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
如果我们前面的修改,还不能令客户满意,而此时又需要进一步的隐藏系统自带的用户菜单。那么有多种方法,我们这里介绍通过实现hook_menu_link_alter()钩子函数,在Drupal将一个菜单项保存到menu_link表时,修改对应链接。下面是如何将“我的帐户”、“登出”菜单项隐藏的。

Drupal版本:

12 修改其它模块定义的菜单项

admin 的头像
Submitted by admin on 星期二, 2015-06-02 01:32

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
当Drupal重构menu_router表和更新menu_link表时(比如,当一个新模块被启用时),通过实现hook_menu_alter(),模块就可以修改任意的菜单项。例如,“我的帐户”菜单项通过调用user_page(),如果当前用户是登录用户,那么就显示用户的个人资料;如果是匿名用户,则显示登录表单。由于user_page ()函数位于modules/user/user.pages.inc中,所以该Drupal路径的菜单项中定义了file键。这样,通常情况下,当一个用户点击了用户菜单中的“我的帐户”链接,Drupal会加载文件modules/user/user.pages.inc并运行user_page ()函数。

Drupal版本:

11 将菜单项显示为标签

admin 的头像
Submitted by admin on 星期二, 2015-06-02 01:28

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
有时候,Drupal的术语是异常晦涩难懂的,同样的名字,在Drupal中有着不同的含义,拿标签tabs来说,在Drupal中,我们把它叫做本地任务,对应的菜单类型为MENU_LOCAL_TASK或者MENU_DEFAULT_LOCAL_TASK。本地任务的标题通常是一个简短的动词,比如“添加”或者“列出”。它通常作用在一些对象上,比如节点,或者用户。我们可以把一个本地任务理解为一个关于菜单项的语义声明,通常显示为一个标签(tab)----这和标签类似,后者也是一个语义声明,通常用来显示加粗的文本。

Drupal版本:

10 页面回调参数

admin 的头像
Submitted by admin on 星期二, 2015-06-02 01:25

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
有时候,我们可能希望能够向回调函数提供更多的信息。首先,路径中的其它部分能够自动的作为参数传递过来。让我们修改一下我们的回调函数,增加两个参数:

Drupal版本:

9菜单嵌套

admin 的头像
Submitted by admin on 星期二, 2015-06-02 01:22

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com
到目前为止,我们仅仅定义了一个静态菜单项。让我们再添加一个与它相关的子项:

Drupal版本:

8定义标题回调

admin 的头像
Submitted by admin on 星期一, 2015-06-01 03:53

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

如果没有在菜单项中定义标题回调的话,Drupal将默认使用t()函数。我们也可以使用title callback键,明确地定义这个回调函数:

Drupal版本:

7标题的本地化和定制

admin 的头像
Submitted by admin on 星期一, 2015-06-01 03:49

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com​

我们知道,Drupal是支持多语言的,它使用t(),st()函数来翻译字符串。所以你可能会想,菜单项中的title键应该是这样定义的:

'title' =>t( '菜单ABC'),

Drupal版本:

6访问控制

admin 的头像
Submitted by admin on 星期一, 2015-06-01 03:48

作者:老葛,北京亚艾元软件有限责任公司,http://www.yaiyuan.com

​到目前为止,在前面的例子中,我们简单的将菜单项的access callback键设置为了TRUE,这意味着所有的用户都可以访问我们的菜单项。一般情况下,通过在模块中使用hook_ permission ()来定义权限,并使用一个函数来检查这些权限,从而实现对菜单的访问控制。这里所用的函数定义在菜单项的access callback键中,一般使用user_access。让我们定义一个名为access abc的权限;如果用户所在角色不具有该权限,当他访问页面http://localhost/thinkindrupal/menu_abc时,就会看到一个“拒绝访问”提示。

Drupal版本:

页面

Subscribe to Think in Drupal RSS