Tempo di quiz pop tipizzazione PHP! (Informativa completa: non ho vinto nel nostro ufficio).
Come già sottolineato, questo è il codice di l()
cui ci occupiamo:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Quindi, ecco la domanda: quale valore viene lanciato su una stringa vuota ma passa quanto segue?
(isset($var) && $var !== '')
La risposta è FALSE
:!
Quindi, potremmo provare questo:
l(t('My link'), NULL, array('fragment' => FALSE));
Che ci dà:
<a href="/#">My link</a>
Per fortuna possiamo eliminare quella barra iniziale passando external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Che ci dà:
<a href="#">My link</a>
Boom. Le cose che facciamo per evitare di concatenare manualmente le stringhe HTML, eh?
poscritto:
Non sono sicuro che consiglierei di stampare un link come questo da PHP in circostanze normali. Senza il tuo javascript, tutto quel link lo farà saltare l'utente in cima alla pagina ( che, con mia leggera sorpresa, è un comportamento speculato ). Probabilmente dovrebbe puntare da qualche parte che funziona senza javascript.
Se il collegamento ha davvero senso solo con javascript in giro (come i controlli per una presentazione solo js o qualcosa del genere), penso che sia meglio aggiungere il collegamento alla pagina con javascript. In alternativa, se vuoi davvero inserirlo nella tua fonte, assicurati che sia display:none
predefinito. Drupal ha la .js
classe sull'html per poi mostrarlo quando JavaScript è in giro.
javascript:void(0)