PHP типизирует время поп-викторины! (Полное раскрытие: я не выиграл в нашем офисе).
Как уже отмечалось, это код, l()
который нас интересует:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Итак, вот вопрос: какое значение приводится к пустой строке, но передает следующее?
(isset($var) && $var !== '')
Ответ: FALSE
!
Итак, мы можем попробовать это:
l(t('My link'), NULL, array('fragment' => FALSE));
Что дает нам:
<a href="/#">My link</a>
К счастью, мы можем убрать эту ведущую косую черту, передавая external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Что дает нам:
<a href="#">My link</a>
Boom. Что мы делаем, чтобы избежать конкатенации строк html вручную, а?
Постскриптум:
Я не уверен, что на самом деле рекомендую напечатать такую ссылку с php при нормальных обстоятельствах. Без вашего javascript все, что эта ссылка сделает , переместит вашего пользователя в верхнюю часть страницы ( что, к моему небольшому удивлению, является специфическим поведением ). Вероятно, это должно указывать на то, что работает без JavaScript.
Если ссылка действительно имеет смысл только с javascript (например, с элементами управления для слайд-шоу только для js или чего-то еще), я думаю, что лучше добавить ссылку на страницу с помощью javascript. В качестве альтернативы, если вы действительно хотите поместить его в свой источник, убедитесь, что он установлен display:none
по умолчанию. У Drupal есть .js
класс в html, который затем показывает его, когда есть javascript.
javascript:void(0)