modifica fnzione "l"

8 contenuti / 0 new
Ultimo contenuto
modifica fnzione "l"

Ciao a tutti sono sempre alle prese con un problema... ho la necessità di modificare, aggiungendo dei tag, la funzione "l" sita in .../includes/common.inc:1585. Già mi è stato detto che non dovrei modificare questa funzione perchè in caso di aggiornamento di drupal perderei tutte le modifiche. Il mio obbiettivo è quello di modificare l'output html dei primary_links, per fare ciò ho copiato la funzione theme_links() in template.php del mio template personalizzato su base zen, e l'ho rinominata 'miotema'_links. In questa funzione mi viene chiamata la funzione "l":

if (isset($link['href'])) {
                // Pass in $link as $options, they share the same keys.
                $output .= l($link['title'], $link['href'], $link);
                }

Io devo aggiungere dei tag dopo il tag "a" che mi viene generato proprio da questa funzione, per esempio vorrei ottenere <a .....><span>Home page</span></a>.
Se non ho capito male la voce "Home page", per esempio mi vienen data dalla variabile $text chiamata nella funzione "l", questo mi può servire?
Come posso muovermi?
Grazie a tutti

Da http://api.drupal.org/api/function/l/6
l($text, $path, $options = array()) dove fra le possibili chiavi di $options c'è "html".

Quindi, nel tuo caso:
l("<span>".$link['title']."</span>", $link['href'], array('html' => TRUE))

NON toccare il core, non solo per gli aggiornamenti, ma perchè altre parti di drupal e/o dei moduli possono usare la funzione e se la cambi puoi avere risultati assai spiacevoli. l(), in particolare, è richiamatissima.

Ciao.

@studiobps - sta già usando $link come options, e così salti anche il check_plain...
Quindi

$link['html'] = TRUE;
l("<span>". check_plain($link['title']) ."</span>", $link['href'], $link);

Più imparo, più dubito.

siete stati fantastici risolto!!!! Ora mi potreste spiegare in parole semplici cosa è successo? Che modifica è avvenita con il codice che mi avete postato, per capire

Il duro lavoro fatto con passione, ripaga sempre!!!!

Esenzialmente tu hai fatto il lavoro più grosso creando una nuova funzione di temizzazione. La funzione l() è molto flessibile, basta sapere quale opzione impostare. Se metti l'opzione 'html' a vero allora l() presume che il titolo è già HTML e non lo tocca più (cioè non pulisci il testo con check_plain()). Ma se non lo fa lui, dobbiamo farlo noi. Tutto qua.

Più imparo, più dubito.

già perchè nella funzione l() originaria c'è strpos() e strip_tags(). Cmq in questo modo nessun aggiornamento di Drupal potrà togliere le modifiche da me fatte, giusto? Potrei usare questo metodo fondamentalmente per modificare qualsiasi tag html nei link con la funzione l() è corretto?

Il duro lavoro fatto con passione, ripaga sempre!!!!

nextpic wrote:
Cmq in questo modo nessun aggiornamento di Drupal potrà togliere le modifiche da me fatte, giusto? Potrei usare questo metodo fondamentalmente per modificare qualsiasi tag html nei link con la funzione l() è corretto?

Di Drupal no. Spero che hai fatto un sottotema altrimenti se aggiorni il tema ...
Si poi usare la tecnica sostituire funzione theme_xxx e poi cambiare gli opzioni di l().

Più imparo, più dubito.

no no per fortuna è un sottotema creato su base zen. Una cosa che non centra nulla, mi sono iscritto per partecipare al drupal camp, ma come si svolge la giornata?

Il duro lavoro fatto con passione, ripaga sempre!!!!