web-dev-qa-db-ja.com

フロントエンドメニュー項目のアクセスリストを特定のユーザーグループに制限できますか?

コンポーネントビューをメニューに追加するときに、利用可能なユーザーグループのサブセットのみを表示するように構成できますか?

私のコンポーネントにはフロントエンドビューがあり、カスタムフロントエンドユーザーグループ内のユーザーを除くすべてのユーザーがneverを表示できるようにする必要があります。メニュー項目を追加する人が何をしているのかを「知っている」必要があることは理解していますが、これもできるかどうか知りたいです。

3
GDP

標準的な意味ではありません。つまり、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_の良いところは、JModelAdminonContentChangeState()イベントをトリガーし、トラップして誰もがユーザーグループが間違っている場合に公開するビュー。

そうは言っても、私はそうはしません。メニューは単なるパスであり、SEO/SEFの世界では簡単に推測できます。これを行うのに適切な場所は、コンポーネント/ビュー自体にあり、適切なグループに含まれていないユーザーは拒否されます。これを行うには、サイレントにユーザーをホームページに戻すか、_404_をスローします。

3
Craig