Salve,
sto provando da diversi giorni la funzione Menu Set Active Item, ma dalla documentazione non mi è chiaro se posso usarla come sto facendo visto che mi genera un "bug".
Ho un tipo di contenuto "Eventi" con un cck data inizio e fine.
Due viste che raccolgono gli eventi scaduti e quelli in corso/futuri
Due menu per queste due viste.
Nel nodo.tpl ho fatto un controllo sul valore del cck data, cosi se viusalizzo un nodo di un evento scaduto mi si accende il menu alla vista "eventi scaduti" e viceversa con i nodi eventi in corso, usando menu_set_active_item con il path alle rispettive viste.
Ma questo anche scrivendolo come mi ha detto ealmuno, mi genera una modifica del path anche a livelo di sistema, cioè quando visualizzo un nodo evento (scaduto per esempio) se clicco su modifica mi modifica la vista e non il nodo.
Qualcuno ha mai affrontato questo problema? Si può risolvere in altro modo?
http://api.drupal.org/api/drupal/includes--menu.inc/function/menu_set_ac...
http://stackoverflow.com/questions/3087141/drupal-how-to-set-active-menu...
Follow me @DarthDrupal and @Dinamicamente.org
Dinamicamente.org
Ok,
ho letto e provato.
La strada giusta è quella di fare un modulo mi sembra di aver capito, in cui inserisco:
function custom_nodeapi (&$node, $op, $a3 = NULL, $a4 = NULL){
if ($op == 'view' && $node->nid == 7) {
$path = drupal_get_normal_path('?q=demo');
if($path && $menu_item = menu_get_item($path)) {
menu_set_item(NULL, $menu_item);
}
}
}
per esempio.
Non sono pratico di moduli fai date, ma mi sembra di capire che non bastano queste righe nel file miomodulo.module + miododulo.info per far attivare il menu "demo" quando vedo il nodo nid 7?
Ho si?
Come non detto.
Il modulino funziona, solo che mi fa scomparire il link modifica. . .
Infatti ho visto che fa un pò di casino, avevo letto in un post di richiamare la funzione menu_local_task(0) per far visualizzare i tab originari ma non ho visto molti risultati.
In alternativa si può agire a livello ti theming utilizzando la funzione theme_menu_item.
Ho fatto una prova implementandola nel template.php del tema e funziona:
Questa è solo un esempio, si dovrà poi adattare in base a quali nodi dovranno attivare quali voci di menu...
Fonte/Ispirazione: http://drupal.org/node/345624
Follow me @DarthDrupal and @Dinamicamente.org
Dinamicamente.org
Ciao,
interessante il codice che hai postato.
A me non funziona, ho messo il nid del nodo su cui faccio la prova, la voce di menu che voglio attivare mentre guardo quel nodo, ma non mi aggiunge nessuna classe, ora se ha te funziona forse ho qualche modulo che va in conflitto.
Ora provo a vedere.
Il codice se non ho capito male va nel file template.php del tema in uso(sto provando su un garland - D6).
Si, va messo in template.php, prova a cambiare phptemplate con il nome del tuo tema (se il tema non usa phptemplate non va), ricordati di mettere l'aperto php, il chiuso non serve.
Elimina la cache e prova ad aggiornare, dovrebbe aggiungere la classe active-trail.
http://www.chromeos.eu
esatto confermo le indicazioni di ealmuno.
Sempre cancellare la cache dopo una modifica a livello di theming.
Follow me @DarthDrupal and @Dinamicamente.org
Dinamicamente.org
Ok,
ho fatto una decina di prove su temi differenti e non funzionava, su un D6 installato in locale.
(localhost/~macintel/drupal-6.16/)
Su un D6 in produzione funziona, poco male.
Grazie!!!
Ora non mi resta che personalizzare il controllo sui nodi.
Mi confermate che nel template.php posso controllare anche il valore di cck data per esempio?
Si
http://www.chromeos.eu
Hai provato il modulo Menu Trails?
Ciao,
il modulo l'ho provato ma mi sembra un po' sempliciotto, mi sembra più flessibile "Menu Position" o solo il codice di DarthDrupal.
Proprio oggi il mitico Johan Falk ha pubblicato uno screencast su quest'argomento. Lui usa rules e menu position. http://nodeone.se/blogg/using-rules-to-set-active-menu-items
Follow me @DarthDrupal and @Dinamicamente.org
Dinamicamente.org