请解释一下Drupal API新手,同时解释一些背景知识!
当我的用户点击自定义节点创建链接时,我一直在尝试使用下面的代码创建2个单独的响应。默认情况下,会打开一个页面,允许用户完成创建节点的常规步骤。 我的模块所做的是检查用户是否具有特定权限,并允许他们继续创建节点或抛出拒绝访问页面。
function mymodule_menu_alter(&$items) {
$items["node/add/page/%"]['access callback'] = 'mymodule_access_callback';
}
function mymodule_access_callback(){
if( user_access('open sesame') ){
drupal_set_message("successfully intecepting new node creation");
return true;
}
return false;
}
节点/添加/页面已成功阻止,但在两种情况下都是如此。 if语句确定用户是否具有某个权限,并且在其中我添加了return true,这导致了以下错误:
致命错误:require_once()[function.require]:打开失败 需要'/node.pages.inc'(include_path =':')in 第347行/var/www/vhosts/mysite.co.uk/httpdocs/includes/menu.inc
作为新手,我不确定我需要做些什么来避免正确用户的访问被拒绝页面。
答案 0 :(得分:0)
试试这个:
function mymodule_menu_alter(&$items) {
$items["node/add/page/%"]['access callback'] = 'mymodule_access_callback';
$items["node/add/page/%"]['file'] = drupal_get_path('module', 'node') . '/node.pages.inc';
}
修改强>
尝试将上面的第二行更改为:
$items["node/add/page"]['file'] = drupal_get_path('module', 'node') . '/node.pages.inc';
尝试显式设置您正在定义的路径的父项的文件路径。
这也许是一个愚蠢的说法,但每次你对hook_menu_alter()
进行更改时,请确保清除Drupal的缓存,以便更改。