2009-11-09 24 views
18

Tôi muốn đầu ra nàyDrupal: Tạo neo chỉ liên kết với l()

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

sử dụng l() chức năng, do đó liên kết chỉ nhảy đến một neo trên trang hiện tại.

tôi mong đợi này để làm việc

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

nhưng nó tạo ra một liên kết tuyệt đối để www.example.com/#namedanchor thay vì www.example.com/currentpage#namedanchor

Trả lời

41

Nếu bạn muốn tạo liên kết chỉ với đoạn, bạn cần "lừa" hàm url một chút. Vì nó sẽ nối thêm basepath vào tất cả các url nội bộ, '' sẽ trở thành http://example.com.

Những gì bạn cần làm là để thiết lập các tùy chọn bên ngoài để đúng:

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

này sẽ cung cấp cho các mong muốn

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

Alternative bạn có thể cung cấp đầy đủ các url như Jeremy gợi ý.

+1

hoàn hảo, cảm ơn! – ack

+0

có lẽ nên thêm hàm 't()' xung quanh đối số đầu tiên trong 'l()', phải không? – cdmo

2

Đây là tài liệu cho l

Nó Dosn't trông giống như nó sẽ bằng mặc định sử dụng trang hiện tại khi không có đường dẫn nào được xác định. Vì vậy, bạn nên gọi nó như sau:

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

Để tạo một neo sử dụng l():

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

Sản lượng này sẽ:

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

Sau đó, để liên kết đến đây sử dụng l():

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

này sẽ xuất:

<a href="/path/to/currentpage#name-of-anchor">link to anchor</a> 
Các vấn đề liên quan