PHP tipecasting tempo de teste pop! (Divulgação completa: não ganhei em nosso escritório).
Como já apontado, este é o código no l()
qual estamos preocupados:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Então, aqui está a pergunta: Qual o valor convertido em uma sequência vazia, mas passa o seguinte?
(isset($var) && $var !== '')
A resposta é FALSE
:!
Então, poderíamos tentar o seguinte:
l(t('My link'), NULL, array('fragment' => FALSE));
O que nos dá:
<a href="/#">My link</a>
Felizmente, podemos remover essa barra principal passando adiante external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
O que nos dá:
<a href="#">My link</a>
Estrondo. O que fazemos para evitar concatenar manualmente as strings html, não é?
Postscript:
Não tenho certeza se eu realmente recomendaria imprimir um link como este do php em circunstâncias normais. Sem o seu javascript, todo esse link fará com que ele salte para o topo da página ( que, para minha pequena surpresa, é um comportamento especificado ). Provavelmente deve apontar para algum lugar que funcione sem javascript.
Se o link realmente só faz sentido com o javascript (como os controles de uma apresentação de slides apenas com js ou algo assim), acho melhor adicionar o link à página com javascript. Como alternativa, se você realmente deseja colocá-lo em sua fonte, verifique se está disponível display:none
por padrão. O Drupal tem a .js
classe no html para mostrá-lo quando o javascript estiver disponível.
javascript:void(0)