Uma exibição de componente pode ser configurada para mostrar apenas um subconjunto de grupos de usuários disponíveis ao adicioná-lo a um menu?
Meu componente tem uma visualização front-end que deve nunca poder ser visualizada por qualquer pessoa, exceto usuários que estejam dentro de um grupo de usuários front-end personalizado. Entendo que a pessoa que adiciona o item de menu deve "saber" o que está fazendo, mas estou interessado em saber se isso também pode ser feito.
Não no sentido padrão, ou seja, a interface normal fornecida pelo Joomla. (Presumindo que você esteja falando quando um item de menu real é criado aqui?) As extensões não têm a chance de executar o código quando um item de menu é criado, portanto, resposta curta: não.
Eu normalmente sugeriria um plug-in, mas olhando para com_menu
Só posso ver duas chamadas JEventDispatcher
e elas não são muito úteis.
Em /administrator/components/com_menus/models/menutypes.php
Você tem:
// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onAfterGetMenuTypeOptions', array(&$list, $this));
E em /administrator/components/com_menus/views/items/view.html.php
Você tem:
// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this));
Olhando uma camada mais fundo, a classe do item de menu MenusModelItem extends JModelAdmin
É que JModelAdmin
aciona um evento onContentChangeState()
que você pode interceptar e desabilitar quem tentar definir sua visualização será publicada se o grupo de usuários estiver errado.
Dito isto, eu não faria isso. Os menus são apenas caminhos e fáceis de adivinhar em nosso mundo SEO/SEF. O lugar certo para fazer isso é no próprio componente/exibição, rejeitando qualquer pessoa que não esteja no grupo certo. Você pode fazer isso retornando silenciosamente os usuários para a página inicial ou lançando um 404
.