我想输出这个
<a href='#namedanchor'>link</a>
使用l()函数,以便链接只跳转到当前页面上的锚点。
我希望这可以工作
l('link', '', array('fragment' => 'namedanchor'));
但它会创建指向www.example.com/#namedanchor
而非www.example.com/currentpage#namedanchor
答案 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'));