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>
ブーム。HTML文字列を手動で連結することを避けるために行うことはありますか?
追記:
通常の状況で、実際にこのようなリンクをphpから印刷することをお勧めするかどうかはわかりません。あなたのjavascriptがなければ、そのすべてのリンクはあなたのユーザーをページのトップにジャンプさせます(これはちょっと驚いたことに、予期された動作です)。おそらく、JavaScriptがなくても動作する場所を指しているはずです。
リンクが本当に JavaScriptでのみ意味がある場合(jsのみのスライドショーのコントロールなど)、JavaScriptを使用してページにリンクを追加する方が良いと思います。または、本当にソースに入れたい場合はdisplay:none
、デフォルトで「d」になっていることを確認してください。Drupalは.js
htmlにクラスを持ち、javascriptが実行されたときにそれを表示します。
javascript:void(0)