Làm cách nào để thêm liên kết băm trong menu?


21

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?


Nếu bạn sử dụng url tuyệt đối lúc đầu, nó sẽ hoạt động. Giống như yourdomain.com/somepath#someother
hzak

Câu trả lời:


15

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.


Thật không may, mô-đun này cho phiên bản 6 và không có ai cho 7 nhưng có thể được sửa đổi. dù sao cũng cảm ơn bạn .
mohamad salama

1
Thay vì sử dụng l('linktext', '', array('fragment' => ' ', 'external' => TRUE));theo phản hồi của @ Sebastian.
Duncanmoo

"Các mục menu đặc biệt" thêm a <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. :(
Mayeenul Hồi giáo

Xin lỗi để gửi quá muộn, nhưng tôi chỉ chạy qua chủ đề này. Thay vì thay đổi css, bạn có thể sử dụng một ít js để bọc nolink trong thẻ neo bằng hàm băm. Với jQuery, nó sẽ làjQuery("span.nolink").wrap("<a href='#'></a>");
Goldentoa11

15

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.


13

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


1
Điều gì về việc ở lại trên trang bạn đang ở? Ví dụ: cố gắng lấy liên kết Bỏ qua Điều hướng để đưa bạn xuống div điều hướng bất kể bạn đang ở trang nào? @ Sơnabus
kine456

2
Cách tốt nhất để làm điều đó, không cần mô-đun hoặc plugin!
Andreas Daoutis

Thậm chí làm việc với <front>#gohere. Tốt đẹp! :)
Huelfe

6

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!


2

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);

1

Chỉ cần thiết lập externalđể TRUElàm điều đó cho tôi. Đã thử nghiệm trong Druapl 7.32.

l('Some Name', '#', array('external' => TRUE));


0

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';
  }
}

0
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.


0
/**
 * 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;
  }
}

Vui lòng không đăng câu trả lời "chỉ mã". Mặc dù điều này có thể giải quyết vấn đề, nhưng nó không giải thích cho người đọc lý do tại sao nó giải quyết vấn đề hoặc những gì nó cung cấp so với các giải pháp thay thế ở đây .
Shawn Conn

0

cài đặt các mục menu đặc biệt và Menu DHTML cho các menu phân cấp sau đó:

  • thêm từ vựng ví dụ x của bạn và thêm vào đó các thuật ngữ của bạn
  • nhấp vào sửa đổi ví dụ x hơn trong phần menu phân loại vị trí đặt menu
  • đi đến khối đặt menu thành một khối
  • trong phần chỉnh sửa quản trị trình đơn, bạn sẽ thấy các điều khoản được thêm tự động
  • nhấp vào sửa đổi một mục menu sau đó vượt qua <void>mục này

bâ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ả


Chào mừng bạn đến với Hỏi & Đáp về Drupal. Sẽ hữu ích hơn khi giải thích cách sử dụng các mục menu đặc biệt thay vì chỉ dán ảnh. Bạn có thể xem xét nâng cao câu trả lời của bạn. Cảm ơn bạn.
Kojo

1
tôi nghĩ bây giờ mọi thứ đều ổn
elaz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.