it-swarm.dev

L'elenco di accesso di una voce di menu del front-end può essere limitato a determinati gruppi di utenti?

Una vista componente può essere configurata per mostrare solo un sottoinsieme di gruppi di utenti disponibili quando lo si aggiunge a un menu?

Il mio componente ha una vista front-end che deve mai essere vista da chiunque tranne gli utenti che fanno parte di un gruppo di utenti front-end personalizzato. Comprendo che la persona che aggiunge la voce di menu dovrebbe "sapere" cosa sta facendo, ma sono interessato a sapere se anche questo può essere fatto.

3
GDP

Non in senso standard, ovvero l'interfaccia utente normale fornita da Joomla. (Supponendo che tu stia parlando quando viene creata una voce di menu reale?) Le estensioni non hanno la possibilità di eseguire il codice quando viene creata una voce di menu, risposta breve: no.

Normalmente suggerirei un plug-in ma guardando com_menu Posso vedere solo due chiamate JEventDispatcher e non sono molto utili.

In /administrator/components/com_menus/models/menutypes.php Hai:

// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onAfterGetMenuTypeOptions', array(&$list, $this));

E in /administrator/components/com_menus/views/items/view.html.php Hai:

// Allow a system plugin to insert dynamic menu types to the list shown in menus:
JEventDispatcher::getInstance()->trigger('onBeforeRenderMenuItems', array($this));

Guardando un livello più profondo, la voce di menu classe MenusModelItem extends JModelAdmin La cosa buona è che JModelAdmin attiva un evento onContentChangeState() che potresti intercettare e non consentire a nessuno di provare a impostare la tua opinione è pubblicata se il gruppo di utenti è sbagliato.

Detto questo, non lo farei. I menu sono solo percorsi e facili da indovinare nel nostro mondo SEO/SEF. Il posto giusto per farlo è nel componente/vista stesso, rifiutando chiunque non sia nel gruppo giusto. Puoi farlo rimbalzando silenziosamente gli utenti alla home page o lanciando un 404.

3
Craig