Có cách nào để thêm một liên kết băm trong menu dưới menu drupal để chỉ tạo một mục menu nhảy xuống một neo hoặc id trên trang không?
Có cách nào để thêm một liên kết băm trong menu dưới menu drupal để chỉ tạo một mục menu nhảy xuống một neo hoặc id trên trang không?
Câu trả lời:
Thật không may, theo như tôi biết, Drupal không thể làm điều này ra khỏi hộp. Tuy nhiên, bạn có thể sử dụng mô-đun mục menu đặc biệt để tạo một mục menu mới và đặt "nolink" trong cài đặt đường dẫn.
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
theo phản hồi của @ Sebastian.
<span title="" class="nolink">...</span>
. Vấn đề là không có gì ngoài việc thiếu CSS. Chỉ cần sao chép ul.menu a{}
CSS và dán chúng cho ul.menu li span.nolink{}
. Nó làm việc tốt với tôi. Nhưng nó đã vô hiệu hóa mũi tên thả xuống được kích hoạt bởi li.expanded
. :(
jQuery("span.nolink").wrap("<a href='#'></a>");
Thực hiện theo những gì báo cáo trong một bình luận cho các l()
tài liệu .
Để tạo liên kết đến một neo được đặt tên (ví dụ: "#namedanchor"), bạn sẽ cần sử dụng một công việc nhỏ.
l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));
Để tạo liên kết chỉ băm (đến "#"), bạn sẽ cần điều chỉnh nó thành:
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
(Lưu ý rằng đoạn đó có chứa một khoảng trắng.)
Trong Drupal 7, đặt "HTML" thành TRUE
, sau đó nối thêm ký tự băm.
http://drupal.org/node/123103#comment-4955236
nút / 16 # gohere
url tự động sẽ thay đổi nó thành như thế
về chúng tôi # gohere
<front>#gohere
. Tốt đẹp! :)
Hãy thử sử dụng mô-đun Void Menu :
Menu Void cho phép bạn định cấu hình các giá trị đặc biệt cho các thẻ để sử dụng trong hệ thống menu Drupal 7. Bạn có thể tùy chỉnh tối đa 10 thẻ void khác nhau với bất kỳ giá trị nào bạn muốn và sử dụng chúng một cách tự do trong hệ thống menu Drupal.
...
Là một phần thưởng bổ sung và vì chức năng của mô-đun này, bạn cũng có thể sử dụng các neo thực tế làm các mục menu không phục vụ mục đích nào khác ngoài giữ chỗ. Điều này được thực hiện với thẻ void được đặt thành javascript: void (0); hoặc thậm chí một thẻ băm đơn giản #. Lợi ích của việc sử dụng mô-đun này qua Special_menu_items cho điều này là các menu của bạn sẽ không yêu cầu bất kỳ kiểu dáng bổ sung nào để tính đến các thẻ span được thêm bởi Special_menu_items và sẽ hợp lệ W3C vì mọi neo phải có thuộc tính href.
Đó là một giải pháp rất hay!
Chỉ gặp phải vấn đề tương tự. Tôi cần lập trình thêm các mục menu với các liên kết băm. Ma cua toi:
// the URL with hash in it is in the form 'normal_part_of_url'#'hash_part_of_url'
$item = array(
'link_path' => %normal_part_of_url%,
'link_title' => %your_link_title%,
'menu_name' => %menu_where_to_add_links%,
'options' => array('fragment'=>%hash_part_of_url%)
);
menu_link_save($item);
Chỉ cần thiết lập external
để TRUE
làm điều đó cho tôi. Đã thử nghiệm trong Druapl 7.32.
l('Some Name', '#', array('external' => TRUE));
Sử dụng chức năng dịch Drupals cũng hoạt động.
/**
* Implements hook_menu().
*
* Defines a valid link to use when creating menu items.
*/
function greenacorn_menu() {
$items['<main-content>'] = array(
'page callback' => 'drupal_not_found',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}
/**
* Implements hook_menu_link_alter().
*
* Flags the link to be altered at runtime.
*
* Note: Changes here would be saved back to the database.
*/
function greenacorn_menu_link_alter(&$item, $menu) {
if ($item['link_path'] == '<main-content>') {
$item['options']['alter'] = TRUE;
}
}
/**
* Implements hook_translated_menu_link_alter().
*
* Refactors the link to go to the fragment #main-content.
*/
function greenacorn_translated_menu_link_alter(&$item, $map) {
if ($item['link_path'] == '<main-content>') {
$item['href'] = '';
$item['localized_options']['fragment'] = 'main-content';
}
}
function test_menu() {
$items = array();
$items['sample'] = array(
'title' => t('Sample page'),
'type' => MENU_NORMAL_ITEM,
'menu_name' => 'main-menu',
'page callback' => 'samplepage',
'access callback' => TRUE,
'options' => array('fragment' => 'sampleHash'),
);
return $items;
}
Bạn có thể thêm liên kết băm vào menu bằng cách sử dụng mã ở trên.
/**
* Implements hook_module_implements_alter().
*/
function MODULE_module_implements_alter(&$implementations, $hook) {
if ($hook == 'url_outbound_alter') {
$stored = $implementations['MODULE'];
unset($implementations['MODULE']);
$implementations['MODULE'] = $stored;
}
}
/**
* Implements hook_url_outbound_alter().
*/
function MODULE_url_outbound_alter(&$path, &$options, $original_path) {
if (strpos($path, '#') !== FALSE) {
$fragment = substr($path, strpos($path, "#") + 1);
$path = str_replace('#' . $fragment, '', $path);
$options['fragment'] = $fragment;
}
}
cài đặt các mục menu đặc biệt và Menu DHTML cho các menu phân cấp sau đó:
<void>
mục nàybây giờ trở lại trang chủ của bạn và bạn sẽ thấy rằng mục menu mà chúng tôi đã sửa đổi trong nhấp chuột không đi đâu cả