it-swarm.it

Come mostrare / nascondere un collegamento basato su un'autorizzazione?

Sto cercando un modo per nascondere/mostrare un collegamento dal menu principale se l'utente corrente dispone di un'autorizzazione specifica. La voce di menu è già stata creata e la voce di menu si collega a un nodo controllato da hook_node_access ().

7
Camsoft

Per impostazione predefinita, Drupal nasconderà tutte le voci di menu a cui l'utente non ha accesso, quindi la cosa più semplice da fare è richiedere l'accesso selezionato per la pagina a cui è collegata la voce di menu per.

4
googletorp

Quello che puoi fare è modificare il callback di accesso associato a "node /% node" usando hook_menu_alter () , e quindi scrivendo il codice per il callback di accesso basato sul codice di node_access ( ) . Ci sono casi specifici che vuoi ancora gestire come fa node_access(); ad esempio, gli utenti con l'autorizzazione "Accesso nodo di bypass" accederanno sempre al nodo.

function mymodule_menu_alter(&$items) {
  if (isset($items['node/%node'])) {
    $items['node/%node']['access callback'] = 'mymodule_node_access';
  }
}

Considera che il callback di accesso decide chi può vedere un link e chi può accedere a una pagina quando l'utente scrive l'URL direttamente nella barra degli indirizzi del browser.

2
kiamlaluno

Potresti voler considerare drupal drupal menu_item_visibility

Per citare la pagina del progetto:

Ad esempio, se si desidera creare un collegamento "Il mio account" che punta a/utente, sia gli utenti anonimi che registrati hanno accesso al percorso/utente, quindi entrambi vedranno il collegamento, anche se gli utenti anonimi non hanno tecnicamente un account . L'uso di questo modulo ti consentirà di rendere visibile il tuo link "Il mio account" solo agli utenti registrati e di nasconderlo a utenti anonimi.

Il modulo utilizza esattamente la stessa interfaccia utente utilizzata per le impostazioni di visibilità del blocco per familiarità.

O il modulo menu_views - che fornisce un approccio basato sulla vista alla generazione di menu (che penso che includa in base all'utente)

1
therobyouknow