コンポーネントビューをメニューに追加するときに、利用可能なユーザーグループのサブセットのみを表示するように構成できますか?
私のコンポーネントにはフロントエンドビューがあり、カスタムフロントエンドユーザーグループ内のユーザーを除くすべてのユーザーがneverを表示できるようにする必要があります。メニュー項目を追加する人が何をしているのかを「知っている」必要があることは理解していますが、これもできるかどうか知りたいです。
標準的な意味ではありません。つまり、Joomlaが提供する通常のUIです。 (実際のメニューアイテムがここで作成されるときについて話していると思いますか?)メニューアイテムが作成されるときに拡張機能がコードを実行する機会を得られないので、短い答え:いいえ。
通常はプラグインをお勧めしますが、_com_menu
_を見ると、2つのJEventDispatcher
呼び出ししか見られず、あまり役に立ちません。
_/administrator/components/com_menus/models/menutypes.php
_には以下が含まれます。
_// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onAfterGetMenuTypeOptions', array(&$list, $this));
_
そして、_/administrator/components/com_menus/views/items/view.html.php
_には:
_// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this));
_
レイヤーをより深く見ると、メニュー項目クラス_MenusModelItem extends JModelAdmin
_の良いところは、JModelAdmin
がonContentChangeState()
イベントをトリガーし、トラップして誰もがユーザーグループが間違っている場合に公開するビュー。
そうは言っても、私はそうはしません。メニューは単なるパスであり、SEO/SEFの世界では簡単に推測できます。これを行うのに適切な場所は、コンポーネント/ビュー自体にあり、適切なグループに含まれていないユーザーは拒否されます。これを行うには、サイレントにユーザーをホームページに戻すか、_404
_をスローします。