¡Tiempo de prueba pop de tipografía PHP! (Divulgación completa: no gané en nuestra oficina).
Como ya se señaló, este es el código l()
que nos preocupa:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Así que aquí está la pregunta: ¿Qué valor se convierte en una cadena vacía pero pasa lo siguiente?
(isset($var) && $var !== '')
La respuesta es FALSE
:!
Entonces, podríamos intentar esto:
l(t('My link'), NULL, array('fragment' => FALSE));
Lo que nos da:
<a href="/#">My link</a>
Afortunadamente, podemos eliminar esa barra diagonal al pasar external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Lo que nos da:
<a href="#">My link</a>
Auge. Lo que hacemos para evitar concatenar cadenas html manualmente, ¿eh?
Posdata:
No estoy seguro de que recomendaría imprimir un enlace como este desde PHP en circunstancias normales. Sin su javascript, todo ese enlace lo hará saltar a su usuario a la parte superior de la página ( que, para mi sorpresa, es un comportamiento específico ). Probablemente debería apuntar a algún lugar que funcione sin javascript.
Si el enlace realmente solo tiene sentido con javascript (como los controles para una presentación de diapositivas solo js o algo así), creo que es mejor agregar el enlace a la página con javascript. Alternativamente, si realmente desea ponerlo en su fuente, asegúrese de que sea display:none
'd' por defecto. Drupal tiene la .js
clase en el html para luego mostrarla cuando javascript está disponible.
javascript:void(0)