2009-11-09 41 views
18

我想輸出這些Drupal的:創建錨只與L鏈路()

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

使用l()函數,這樣的鏈接只是跳轉到當前頁面上的錨。

我預計這個工作

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

,但它創建了一個絕對鏈接到www.example.com/#namedanchor而不是www.example.com/currentpage#namedanchor

回答

41

如果你想創建只是片段的鏈接,你需要「技巧」的URL功能的位。由於它會將基路徑附加到所有內部URL,''將變爲http://example.com

你需要做的是外部選項設置爲true:

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

這將給所需

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

替代您提供的完整的URL傑里米建議。

+1

完美,謝謝! – ack 2009-11-09 16:59:45

+0

可能應該在'l()'的第一個參數周圍加上't()'函數,對吧? – cdmo 2017-06-01 15:45:15

2

這裏是l

文檔它不到風度看起來像它會通過當沒有路徑定義時,默認使用當前頁面。所以,你應該這樣稱呼它:

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

要使用1-()創建錨定:

$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> 

然後,鏈接到此使用1-():

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

這將輸出:

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