metatag模块上的函数hook_menu_alter

时间:2015-06-04 10:39:06

标签: drupal drupal-7 drupal-modules

我的drupal7网站上有2个用户(客户端和用户1(管理员))。我希望该客户端用户使用metatag模块只能访问1个选项卡(按路径选项卡)或metatag:context节点。 如果我使用函数hook_menu_alter:

keys = ['proxy_host', 'proxy_port', 'proxy_protocol']
if all(settings.get(k) for k in keys):
    print("Settings good!")
else:
    print("Missing setting!")

这会否认客户端用户使用该模块的其他标签吗?

所以函数看起来像这样

function MODULE_menu_alter(&$items) {
$items['node']['access callback'] = FALSE; 
}

如果我错了,请纠正我。

谢谢!

1 个答案:

答案 0 :(得分:2)

hook_menu_alter不知道您的用户的上下文,该功能会拒绝所有用户访问页面admin / config / search / metatags / settings 你想要的是实际定义一个回调函数。这篇文章被称为"访问回调"因为菜单路由器回调列出的函数以确定某人访问该页面时的访问权限。

function Metatag_menu_alter(&$items) {
  $items['admin/config/search/metatags/settings']['access callback'] = 'metatag_admin_access'; 
}

function metatag_admin_access() {
  global $user;
  if( [check your metatag context] ) {
    // this user is permitted
    return TRUE;
  }
  return FALSE;
}