ノードへのアクセスを制御するために hook_menu_alter() を実装する方法がわかりません。ベア Drupal 7 インストールから始めて、2 つのノードを作成し、次のコードのみでモジュールを作成しました。
function mymodule_menu_alter(&$items){
$items['node/2']['access callback'] = TRUE;
}
これは、TRUE を返す実際のコールバック関数をシミュレートする必要があります。ここから始めました。しかし、ここでは可能な限り単純なケースを示そうとしています。
アクセス コールバックを「FALSE」に設定すると、期待どおりに動作します。node/2 で「アクセスが拒否されました」というメッセージが表示されます。しかし、TRUE に設定すると、ノードへの通常のアクセスだけが得られるのではないでしょうか? 代わりに、node/2 に移動すると、デフォルトのフロント ページに似た (ただし、まったく同じではない) ページが表示されます。それは、ノード ティーザーのリストです (この場合、作成した 2 つのノードが表示されます)。
キャッシュをクリアしました (すべてのページ ビューで hook_menu_alter() が呼び出されるわけではなく、キャッシュがクリアされたときに呼び出されることがわかっているため)。また、アクセス許可を再構築しましたが、役に立ちませんでした。ここで何かばかげたことを見逃していると確信していますが、それを考えることはできません。
実際のコールバックでも試しました:
function mymodule_menu_alter(&$items){
$items['node/2']['access callback'] = 'mymodule_access_check';
}
function mymodule_access_check() {
return TRUE;
}