我似乎无法弄清楚如何实现 hook_menu_alter() 来控制对节点的访问。我从一个裸 Drupal 7 安装开始,创建了两个节点,并创建了一个只有以下代码的模块:
function mymodule_menu_alter(&$items){
$items['node/2']['access callback'] = TRUE;
}
这应该模拟一个返回 TRUE 的实际回调函数,这是我开始的地方。但我试图在这里展示最简单的情况。
如果我将访问回调设置为“FALSE”,它会按预期工作:我在 node/2 上得到“访问被拒绝”。但是如果我将它设置为 TRUE,我不应该只是正常访问节点吗?相反,当我转到 node/2 时,我得到一个类似于(但不完全相同)默认首页的页面:节点预告片列表(在这种情况下,显示我创建的两个节点)。
我已经清除了缓存(因为我知道 hook_menu_alter() 不会在每个页面视图上调用,而是在缓存被清除时调用)。我也重建了权限,但无济于事。我确定我在这里遗漏了一些愚蠢的东西,但我就是想不出来。
我还尝试了一个实际的回调:
function mymodule_menu_alter(&$items){
$items['node/2']['access callback'] = 'mymodule_access_check';
}
function mymodule_access_check() {
return TRUE;
}