Làm cách nào tôi có thể đưa một menu phân loại làm menu phụ của một mục menu tiêu chuẩn?


12

Tôi có một menu chính, với cấu trúc cấp cao nhất tương tự như sau:

Home - Categories - Something Else - ... - Contact

Mỗi liên kết cấp cao nhất sẽ đi đến một trang nút thích hợp.

Tôi có vốn từ vựng cho Danh mục (đa cấp) và tôi cần có các thuật ngữ phân loại đó trong menu phụ trong mục "Danh mục". Tôi muốn tránh mã hóa cứng các mục vào menu chính, vì menu phụ sẽ tăng / thu hẹp như từ vựng.

Trước đây, tôi đã viết mã quá phức tạp để thực hiện điều này, nối vào các hoạt động phân loại và quản lý các mục con của một menu cụ thể dựa trên đó (rất giống với Menu Taxonomy Menu , nhưng không phải có một menu khác cho mỗi menu từ vựng).

Trong khi phương pháp đó hoạt động, nó không lý tưởng và chắc chắn không chung chung. Tôi không thể nâng mã đó từ dự án cũ sang dự án mới, nó sẽ đòi hỏi một lượng tùy chỉnh hợp lý.

Tôi không thể cảm thấy phải có một giải pháp dựa trên mô-đun 'tiêu chuẩn' cho vấn đề này.

Tôi đã thấy một số đề xuất ngoài kia để sử dụng kết hợp nhiều mô-đun khác nhau (thậm chí một số đề xuất sử dụng mô-đun dựa trên Lượt xem, đủ kỳ lạ). Tôi sẵn sàng cho bất kỳ đề xuất nào, nhưng nếu nó liên quan đến việc cài đặt nhiều hơn 1 hoặc 2 mô-đun và tải cấu hình cụ thể theo ngữ cảnh, mã hóa cứng, có lẽ nó sẽ không giúp ích quá nhiều trong trường hợp này.


1
Tôi nghĩ rằng tôi đã nhìn thấy nó ... Chủ đề tương tự chứa ý tưởng về việc sử dụng các quy tắc để tạo ra các mục dựa trên phân loại trong menu, nhưng điều đó dường như cũng không lý tưởng lắm.
Mołot

Nếu tôi hiểu chính xác, bạn có trông giống như mô-đun này drupal.org/project/taxonomy_treemenu , nó có thể tích hợp với menu đẹp nhưng cho D6
Bala

Bạn có phải có các mục menu thực tế hay có thể thêm cây thuật ngữ phân loại vào menu khi nó được hiển thị không?
rooby

Cảm ơn @Bala, cần một giải pháp D7
Clive

1
Clive tôi có một đề nghị. Như tôi biết, bạn có thể tạo menu taxonomu với tên từ vựng được bao gồm và sau đó chỉ cần thêm các liên kết menu khác trực tiếp vào menu được tạo. Các mục phân loại có thể được cập nhật tự động ... Tôi không biết liệu nó có hoạt động không, chỉ cần thử.
milkovsky

Câu trả lời:


13

Tùy chọn a) Trừ khi tôi nhầm, bạn có thể không chọn vị trí Menu phân loại của bạn sẽ được tạo ra (Vị trí menu) khi bạn tạo nó không? Vấn đề duy nhất tôi nghĩ bạn có thể gặp phải với điều này là tôi nghĩ nó đòi hỏi bạn phải xây dựng lại thực đơn mỗi khi phân loại được cập nhật

Tùy chọn b) Tôi đã thực hiện một cái gì đó tương đối hợp lý với điều này trên trang web của mình, tôi đã sử dụng mô-đun Chế độ xem Menu , để cho phép tôi đặt chế độ xem vào menu chính của mình.

Nếu bạn tạo chế độ xem mới liệt kê tất cả các thuật ngữ phân loại của bạn, dưới dạng hiển thị khối, hãy áp dụng bất kỳ bộ lọc / sửa đổi bổ sung nào trong chế độ xem nếu cần (bạn có thể không nhưng trong ví dụ của tôi tôi muốn). Sau đó, khi bạn thêm một liên kết mới vào menu chính của mình, bạn có thể chọn sử dụng chế độ xem thay vì liên kết. Từ đó bạn chọn chế độ xem bạn muốn sử dụng, chọn mục trình đơn 'Danh mục' làm phụ huynh và lưu (sau khi lưu bạn phải bật nó trong menu, có vẻ như là một lỗi với chính mô-đun)

Tôi không thể đảm bảo rằng đây là giải pháp tốt nhất cho bạn, nhưng nó đã hoạt động khi tôi vừa thử nghiệm nó


1
Vâng, hóa ra tôi đã khá ngu ngốc - Menu Taxonomy có chức năng chính xác này được tích hợp ngay (tùy chọn của bạn a). Menu cụ thể mà tôi đang xử lý khá nhỏ và các danh mục sẽ không thay đổi thường xuyên, vì vậy việc xây dựng lại không phải là vấn đề. Rất cám ơn bạn đã kiểm tra vệ sinh
Clive

3

Menupoly có API cho "nguồn cây menu" tùy chỉnh. Tôi chưa bao giờ thực sự sử dụng điều này cho một cái gì đó ngoài các liên kết menu, vì vậy có thể có vấn đề chúng tôi phải khắc phục trên đường. Nhưng kiến ​​trúc cơ bản là có.

Nếu bạn đi theo con đường này, bạn sẽ

  • Sử dụng menu chính hiện tại của bạn, không có bất kỳ liên kết thuật ngữ phân loại nào ngoài trang "Danh mục".
  • Tạo cây phân loại của bạn độc lập với điều đó.
  • Viết một "nguồn cây menu" tùy chỉnh tìm nạp từ menu_links như bình thường, nhưng khi tìm thấy thuật ngữ phân loại, thay vào đó, nó tìm nạp từ phân loại.
    Vì vậy, bằng cách nào đó bạn cần có khả năng phát hiện ra rằng liên kết "Danh mục" có liên quan đến phân loại.
  • Nếu một liên kết menu có liên quan đến phân loại và đồng thời có một menu con thông thường, bạn cần bằng cách nào đó trộn hai loại trẻ em lại với nhau.

Tuyến đường này sẽ là một số công việc, nhưng nó có thể hữu ích cho những người khác, và nó có thể thanh lịch và có thể tái sử dụng hơn logic trang web cụ thể của bạn.

Hiện tại thậm chí không có "nguồn cây menu" chỉ phân loại, vì vậy có lẽ đó là bước đầu tiên hợp lý trước khi bắt đầu với một plugin hỗn hợp.


điều này đang được nói, câu trả lời được chấp nhận bởi Andrew Morris có thể hoàn toàn đủ tốt. Và nó có nghĩa là ít công việc hơn đối với tôi :) Vẫn muốn đăng bài này cho bất cứ ai có thể thấy nó hữu ích.
donquixote

V. thú vị, cảm ơn. Câu trả lời được chấp nhận là làm tốt công việc nhưng tôi cũng rất quan tâm để có được giải pháp mã. Tôi có thể giả sử nếu đó là một trong những mô-đun của bạn rằng tất cả được xây dựng dựa trên độ tốt của PSR-0 không? :)
Clive

Cái này sử dụng chế độ tương thích PHP 5.2 của xautoload, hơi giống PEAR nhưng với các thư mục nông. Vì vậy, không được PSR chấp thuận. Tôi có thể đi PSR-0 một ngày nào đó ..
donquixote

mặc dù tôi rất quan tâm đến PSR-X (đáng buồn là có thể không vào được D8, thật đáng buồn)
donquixote

2

Metro Menus sẽ thực hiện yêu cầu của bạn và thậm chí nó có các giao diện được tích hợp sẵn và có thể tạo riêng cho bạn hoạt động giống như các menu đẹp. Với mô-đun này, bạn có thể chọn bất kỳ mục phụ nào với bất kỳ độ sâu nào từ menu hoặc phân loại và tôi không sử dụng mục này trước đây.

Khả năng tương thích với màn hình cảm ứng (iPad, iPhone và vv).

nhập mô tả hình ảnh ở đây


2

Bạn có thể sử dụng mô-đun menu Om Maxi cho cùng. Nó sẽ cho phép quản trị viên tạo các menu với các khối bạn muốn dưới dạng tệp đính kèm, mô-đun như chế độ xem, trình chiếu, menu, người dùng, menu đẹp, quicktabs và các khối tùy chỉnh với bảng, danh sách, hình ảnh, video, v.v.

Bạn có thể tạo một menu riêng bằng Menu Taxonomy Menu và có thể đính kèm menu này dưới dạng liên kết con vào menu được tạo bởi menu om maxi.

Cảm ơn


2

Gần đây tôi đã làm một cái gì đó tương tự cho một menu danh mục sản phẩm. Điều này chỉ sâu 1 cấp, nhưng có thể dễ dàng sửa đổi để hiển thị các cấp tiếp theo.

/**
 * Implements theme_menu_link().
 */
function THEME_menu_link__main_menu($variables) {

  $sub_menu = '';
  $element = $variables['element'];
  $menu_string = $element['#title'];

  if (module_load_include('inc','pathauto','pathauto') !== FALSE) {
    $menu_string =  pathauto_cleanstring($menu_string);
  }

  if ($menu_string == 'categories') {
    $sub_menu = get_categories_menu();
  }

  if ($sub_menu) {
    $element['#attributes']['class'][] = 'haschildren';
  }

  $output = l($element['#title'], $element['#href'], $element['#localized_options']);
  return '<li' . drupal_attributes($element['#attributes']) . '>' . $output . $sub_menu . "</li>\n";
}

function get_categories_menu() {

  $current_category = arg(2); // Get current category from path
  $volcab = taxonomy_vocabulary_machine_name_load('product-categories');
  $tree = taxonomy_get_tree($volcab->vid,0,1);

  $output = '<ul class="menu product-category">';
  foreach ($tree as $term) {
    $safe_term = pathauto_cleanstring($term->name);
    $class = ($current_category==$safe_term) ? ' class="active"' : '';
    $output .= '<li><a' . $class . ' href="/drupal//path/to/' . $safe_term . '">' . $term->name . '</a></li>';
  }
  $output .= '</ul>';

  return $output;
}

Hàm get_carget_menu tốt hơn là một khối, nhưng được hiển thị ở đây dưới dạng một hàm khác trong template.php để thuận tiện.

Hy vọng nó sẽ giúp hoặc ít nhất là một bước hướng tới một giải pháp.

Paul

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.