Drupal Commonsを構築するための1つの問題を解決する方法を共有したいと思います。 ToRの要件に従って、特定のルールに従ってノードへのユーザーアクセスを制限する必要がありました。
- 特定のロールを持つユーザーは、特定のタイプのグループのみを表示できます。
- これらのユーザーは、自分がメンバーになっているグループのコンテンツのみを表示できます。
すぐに
hook_node_grants
と
hook_node_access_records
を介してこれを実装しようとしましたが、解決策は面倒で、バグが多く、くだらないものであるという結論に達しました。
そして彼は反対に行きました。
メニューレジストリを思い出してください。 要素の説明を含む配列には、
access callback
と
access arguments
2つのパラメーターが含まれてい
access arguments
。 それらを再定義してみましょうが、インストールされた
access callback
を
access arguments
最後の要素として保存して
access arguments
:
修正してくれた
匿名に感謝します。
モジュールをインストールするときに、その重量を非常に大きく設定することに注意してください(つまり、私のモジュールは最後に実行され、誰もメニューを再定義しません)。 別の状況がある場合は、パラメーターを配列に追加することをお勧めします。例えば:
$item['default access callback'] = $item['access callback'];
ただし、この場合、後の変更は考慮されません。 つまり モジュールの重量を大きく設定することをお勧めします。
コールバック自体:
function MYMODULE_access_callback() { $args = func_get_args();
私にとっては、それは機能し、十分に快適であるように見えました。おそらく他の誰かに役立つでしょう。