2009-11-09 8 views
18

l()関数を使ってこのDrupal:l()でアンカーのみのリンクを作成する

<a href='#namedanchor'>link</a> 

を出力したいので、リンクが現在のページのアンカーにジャンプするだけです。

私は

l('link', '', array('fragment' => 'namedanchor')); 

の動作を期待していましたが、www.example.com/currentpage#namedanchorの代わりにwww.example.com/#namedanchorへの絶対リンクを作成します。

答えて

41

あなただけのフラグメントとのリンクを作成したい場合は、「トリック」のURL機能ビットをする必要があります。すべての内部URLにベースパスを追加するので、''http://example.comになります。あなたがする必要がどのような

は真の外部オプションを設定することです:

l('link', '', array('fragment' => 'namedanchor', 'external' => TRUE)); 

これはジェレミーが提案するようにあなたの完全なURLを与えることができる希望

<a href='#namedanchor'>link</a> 

代替を提供します。

$path = isset($_GET['q']) ? $_GET['q'] : '<front>'; 
l(t('link text'), $path, array('attributes' => array('name' => 'name-of-anchor'))); 

この意志出力:

<a href="/path/to/currentpage" name="name-of-anchor">link text</a> 

をその後、この使用L()にリンクする:

$path = isset($_GET['q']) ? $_GET['q'] : '<front>'; 
l(t('link to anchor'), $path, array('fragment' => 'name-of-anchor')); 

このL()を使用してアンカーを作成する

+1

完璧、ありがとう! – ack

+0

はおそらく 'l()'の最初の引数の周りに 't()'関数を追加すべきでしょうか? – cdmo

2

www.example.com/#namedanchorへの絶対リンクはそれはそれはBYますように見えるdosn't l

のドキュメントで作成しますデフォルトでは、パスが定義されていないときに現在のページを使用します。だから、このようにそれを呼び出す必要があります:

l('link', 'currentpage', array('fragment' => 'namedanchor')); 
3

出力:

<a href="/path/to/currentpage#name-of-anchor">link to anchor</a> 
関連する問題