メニュー項目が表示されるかどうかを決定する既存の条件の上に新しい条件を追加するにはどうすればよいですか?これらの条件は、アクセス許可の設定に限定されるべきではありません。
ユースケースの例として(必ずしもこの質問の理由ではありません):ユーザーが1つのノードのみを作成できるコンテンツタイプがあるとします。そのタイプのコンテンツを追加するためのメニュー項目があります。しかし、ユーザーが既にそのコンテンツタイプのノードを作成している場合は、メニュー項目を非表示にします。最初に考えたのは、現在のユーザーが作成した特定のコンテンツタイプのノードの存在を確認するクエリを実行することです。存在する場合は、メニュー項目を非表示にします。
このタイプの機能はhook_menu_alter()
、そこに必要なロジックを追加する必要があると思います。しかし、ユーザーがその種類のコンテンツを作成する権限を持っているかどうかを確認するなど、既存のチェックをバイパスせずにそれを行う方法がわかりません。自分の条件にそのロジックを含める必要がありますか?または、既存のアクセスロジックを上書きせずに追加できますか?
編集:「コンテンツタイプのノードを1つだけ作成するようにユーザーを制限するにはどうすればよいか」という質問に集中する人もいます。ここでの質問ではありません。問題は、メニュー項目にカスタムアクセス条件を追加する方法です。