THEME() function overloading

3 contenuti / 0 new
Ultimo contenuto
THEME() function overloading

Vorrei apportare delle modifiche alla funzione che mi da in output i primary links e secondary links per applicare i secondary links in base all'evento onmouseover sul primary link associato.

Ad esempio:
Ho un menu composto in questo modo_
*HOME (primary link) -> [ NEWS - NEWS2] (secondary links associati al primary)
ecc ecc

vorrei che al passaggio del mouse sopra home mi compaiano i relativi secondary links.

Ecco la funzione che mi stampa i primary links, io dovrei overloadare questa funzione per far si che mi stampi anche l'onmouseover con relativi sotto link in un div posizionato piu sotto..

<?php
print theme('links', $primary_links, array('class' => 'links primary-links'));
?>

Il problema è che non riesco in nessun modo a trovare dov'è generata questa funzione (nel tema che sto usando viene semplicemente richiamata come da esempio appena sopra; volevo overloadarla come posso fare? non sono molto esperto in drupal mi servirebbe un esempio sulla linea guida da eseguire per far ciò (ad esempio se devo creare un nuovo file come nominarlo dove posizionarlo ecc)

Ringrazio tutti quelli che si scomoderanno a rispondermi :)

Ciao, premetto che quel che ti dico è valido solo se il tuo tema usa un PhpTemplate Engine, se non lo sai basta guardare nella directory del tuo tema e vedere se ci sono file con estensione *.tpl.php . Se ci sono stai usando il PhpTemplate Engine e quindi puoi andare avanti.
Dunque la funzione theme($hook, eventuali argomenti ....) , nel tuo caso $hook=links', chiamerà una funzione verificandone l'esistenza nel seguente ordine e logica:

  • chiamerà la miotema_links() se la funzione esiste in /miotema/template.tpl.php
  • chiamerà la phptemplate_links() se la funzione esiste in /themes/engines/phptemplate/phptemplate.engine
  • altrimenti chiamerà la theme_links() che è sicuramente presente in /includes/theme.inc

Occhio perchè certe volte, se viene chiamata una funzione che esegue dei loop (...links è plurale) del tipo theme_links() al suo interno viene sicuramente chiamata la corrispondente al singolare theme_link() ed quest'ultima che generalmente viene implementata:

  • nel tema come miotema_link() in miotema/template.tpl.php
  • oppure nel motore con phptemplate_link in /themes/engines/phptemplate/phptemplate.engine

Ciao spero di non aver creato confusione
Enzo

________________________________________________________________________________________
Quando risolverai il problema, scrivi come hai fatto, e se puoi scrivi [RISOLTO]
Sarà utile ad altri. Grazie
enzoazzolini.it

consiglio spassionato.. dai un occhio al modulo nicemenu ;)

Ciao
Marco
--
My blog
Working at @agavee