Aggiunta di una tab al profilo utente
Ciao a tutti,
io avrei bisogno di aggiungere una tab al profilo utente (per intenderci una del tipo "View" "Edit" "Shortcut" ecc) al momento dell'installazione del mio modulo personalizzato.
Ho scritto una funzioncina molto semplice che "stampa" una tabellina html con dei valori che mi interessano, avrei bisogno di scrivere il codice per cui cliccando sulla tab venga visualizzata una pagina con la tabella creata dalla funzioncina stessa.
Spero di essermi spiegato, qualcuno può aiutarmi?
Grazie
Risposte
Ciao, devi implementare nel
Ciao, devi implementare nel tuo modulo l'hook hook_menu aggiungendo una voce di tipo MENU_LOCAL_TASK. Vedere com'è implementato questo hook per il modulo del core user ti può essere molto utile: https://api.drupal.org/api/drupal/modules!user!user.module/function/user_menu/7
Ciao, intanto grazie mille
Ciao, intanto grazie mille per la risposta, ho aggiunto una cosa simile alla hook del menu:
$items['admin/user/myrequest'] = array(
'title' => 'My request',
'page callback' => '',
'page arguments' => '',
'type' => MENU_LOCAL_TASK,
'file' => '',
);
Per creare la tab "my request".. Non riesco a capire però come mettere insieme i pezzi.
la funzione che crea la tabellina html si chiama "gh_print_request()", è da inserire in page callback?
Grazie per la disponibilità
Se la tua funzione
Se la tua funzione gh_print_request ritorna (nota non deve inviare direttamente all'output con echo e similari) l'html la puoi usare come 'page callback'. L'html ritornato verrà inserito all'interno della normale struttura della pagina e reso con il tema corrente.
'page arguments' non è obbligatorio, serve a passare eventuali parametri alla 'page callback'. Anche 'file' non è obbligatorio, in soldoni dice al sistema dove trovare la funzione dichiarata in 'page callback', utile se risiede in altro file rispetto a dove si trova hook_menu. Sono invece importanti 'access callback' e 'access arguments'. Il primo è la funzione per determinare se un utente ha il permesso di eseguire la voce di menù; il secondo è l'array di parametri da passare alla funzione di accesso. user_access ad esempio prende come parametro un permesso (ad esempio 'access content'). E' buona norma determinare sempre chi può accedere o meno ad una risorsa. Ad esempio se specifichi:
<?php
...
'access callback' => 'user_access',
'access arguments' => array('access user profiles'),
...
?>
potranno accedere alla tua pagina solo gli utenti che hanno un ruolo con permesso 'access user profiles' (Visualizza profili utente).
Altro parametro rilevante è 'weight' che determina l'ordinamento del tuo tab. Voci più leggere (negative) tendono a posizionarsi a sinistra, le più pesanti a destra.
Grazie di cuore per l'aiuto,
Grazie di cuore per l'aiuto, ci sono quasi:
il codice attualmente è questo:
...
$items['user/myrequest'] = array(
'title' => 'My request',
'page callback' => 'gh_print_request',
'access callback' => 'user_access',
'access arguments' => array('access user profiles'),
'type' => MENU_LOCAL_TASK,
'weight' => 5,
);
...
Se vado manualmente su "user/myrequest" vedo esattamente quello che voglio, non riesco ancora però a visualizzare la tab. Dove sbaglio?
Se vuoi inserire il tab tra
Se vuoi inserire il tab tra quelli di primo livello della pagina utente credo tu debba inserire il path 'user/%user/myrequest' e non 'user/myrequest'.
Ogni volta che fai una
Ogni volta che fai una modifica del genere devi ripulire la cache di Drupal. Il menù deve essere ricostruito altrimenti non vedrai la modifica.
Grazie mille di tutto! Sono
Grazie mille di tutto! Sono riuscito!!