2009-11-09 8 views
18

Chciałbym wyjściowe toDrupal: Tworzenie kotwicy odwołuje się wyłącznie z L()

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

użyciu funkcji l(), tak, że związek właśnie przechodzi do kotwicy na bieżącej stronie.

Spodziewałem się to do pracy

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

ale tworzy absolutną link www.example.com/#namedanchor zamiast www.example.com/currentpage#namedanchor

Odpowiedz

41

Jeśli chcesz utworzyć łącze z tylko fragment, trzeba „trick” funkcja url nieco. Ponieważ doda ścieżkę podstawową do wszystkich wewnętrznych adresów URL, '' stanie się http://example.com.

Co trzeba zrobić, to ustawić opcję zewnętrzną true:

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

To da pożądany

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

Alternatywą może podać pełny adres URL jak Jeremy sugeruje.

+1

idealne, dziękuję! – ack

+0

prawdopodobnie powinien dodać funkcję 't()' wokół pierwszego argumentu w 'l()', prawda? – cdmo

2

Oto dokumentacja l

dosn't wyglądać to będzie przez domyślnie użyj bieżącej strony, gdy nie zdefiniujesz ścieżki. Więc należy nazwać tak:

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

celu utworzenia kotwy za pomocą L():

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

Wyjście będzie:

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

Następnie do połączenia z tym zastosowaniem l():

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

tę wyświetli:

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