Zeit für ein PHP-Typografie-Pop-Quiz! (Vollständige Offenlegung: Ich habe in unserem Büro nicht gewonnen).
Wie bereits erwähnt, ist dies der Code l()
, mit dem wir uns befassen:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Hier ist die Frage: Welcher Wert wird in eine leere Zeichenfolge umgewandelt, übergibt jedoch Folgendes?
(isset($var) && $var !== '')
Die Antwort lautet FALSE
:!
Also könnten wir das versuchen:
l(t('My link'), NULL, array('fragment' => FALSE));
Welches gibt uns:
<a href="/#">My link</a>
Zum Glück können wir diesen führenden Schrägstrich entfernen, indem wir ihn weitergeben external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Welches gibt uns:
<a href="#">My link</a>
Boom. Was tun wir, um das manuelle Verketten von HTML-Strings zu vermeiden?
Nachsatz:
Ich bin mir nicht sicher, ob ich unter normalen Umständen empfehlen würde, einen solchen Link von PHP aus zu drucken. Ohne Ihr Javascript wird der gesamte Link dazu führen, dass Ihr Benutzer an den Anfang der Seite springt ( was zu meiner kleinen Überraschung ein spezielles Verhalten ist ). Es sollte wahrscheinlich irgendwo hinweisen, dass ohne Javascript funktioniert.
Wenn der Link wirklich nur mit Javascript Sinn macht (wie die Steuerelemente für eine Diashow nur mit js oder so), halte ich es für besser, den Link zur Seite mit Javascript hinzuzufügen. Wenn Sie es aber auch wirklich in Ihre Quelle einfügen möchten, vergewissern Sie sich, dass dies display:none
standardmäßig der Fall ist . Drupal hat die .js
Klasse auf dem HTML, um sie dann anzuzeigen, wenn Javascript vorhanden ist.
javascript:void(0)