2009-11-09 7 views
18

Je voudrais cette sortieDrupal: Création d'ancrage seul lien avec l()

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

en utilisant la fonction l(), de sorte que le lien saute juste un point d'ancrage sur la page en cours.

Je me attendais que cela fonctionne

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

mais il crée un lien absolu à www.example.com/#namedanchor au lieu de www.example.com/currentpage#namedanchor

Répondre

41

Si vous voulez créer un lien avec juste le fragment, vous devez « truc » la fonction url un peu. Comme il ajoutera le chemin de base à toutes les URL internes, '' deviendra http://example.com.

Ce que vous devez faire est de définir l'option externe true:

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

Cela donnera au choix

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

Alternative, vous pouvez donner l'URL complète comme l'indique Jeremy.

+1

parfait, merci! – ack

+0

devrait probablement ajouter la fonction 't()' autour du premier argument dans 'l()', non? – cdmo

2

Voici la documentation l

Il dosn't ressembler ce sera par par défaut, utilisez la page en cours si aucun chemin n'est défini. Donc, vous devriez l'appeler comme ceci:

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

Pour créer un point d'ancrage à l'aide l():

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

Affichera:

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

Ensuite, pour créer un lien vers ce en utilisant l():

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

Cette produira:

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