Drupal:用l()创建仅锚链接

时间:2009-11-09 00:13:41

标签: drupal

我想输出这个

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

使用l()函数,以便链接只跳转到当前页面上的锚点。

我希望这可以工作

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

但它会创建指向www.example.com/#namedanchor而非www.example.com/currentpage#namedanchor

的绝对链接

3 个答案:

答案 0 :(得分:41)

如果要创建仅包含片段的链接,则需要“欺骗”url函数。因为它会将基本路径附加到所有内部网址,''将成为http://example.com

您需要做的是将外部选项设置为true:

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

这将提供所需的

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

替代方案你可以像杰里米所说的那样提供完整的网址。

答案 1 :(得分:3)

使用l():

创建锚点
$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'));

这将输出:

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

答案 2 :(得分:2)

以下是l

的文档

当没有定义路径时,它看起来不会默认使用当前页面。所以你应该这样称呼它:

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