Temps de quiz pop de transtypage PHP! (Divulgation complète: je n'ai pas gagné dans notre bureau).
Comme l()
nous l'avons déjà souligné, voici le code en ce qui nous concerne:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Voici donc la question: quelle valeur transforme en une chaîne vide mais passe la suivante?
(isset($var) && $var !== '')
La réponse est FALSE
:!
Donc, nous pourrions essayer ceci:
l(t('My link'), NULL, array('fragment' => FALSE));
Ce qui nous donne:
<a href="/#">My link</a>
Heureusement, nous pouvons supprimer cette barre oblique en passant external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Ce qui nous donne:
<a href="#">My link</a>
Boom. Les choses que nous faisons pour éviter de concaténer manuellement les chaînes html, hein?
Post-scriptum:
Je ne suis pas sûr que je recommanderais d'imprimer un lien comme celui-ci à partir de php dans des circonstances normales. Sans votre javascript, tout ce lien va le faire sauter votre utilisateur en haut de la page ( ce qui, à ma légère surprise, est un comportement spéculé ). Il devrait probablement pointer quelque part qui fonctionne sans javascript.
Si le lien n'a vraiment de sens qu'avec javascript (comme les contrôles pour un diaporama js uniquement ou quelque chose comme ça), je pense qu'il est préférable d'ajouter le lien vers la page avec javascript. Alternativement, si vous voulez vraiment le mettre dans votre source, assurez-vous que c'est display:none
par défaut. Drupal a la .js
classe sur le html pour ensuite l'afficher lorsque javascript est autour.
javascript:void(0)