Câu trả lời:
Đơn giản hóa âm thanh Menu như những gì bạn muốn.
Mô-đun Simplify_menu sử dụng TwigExtension để có quyền truy cập vào menu chính của Drupal (hoặc bất kỳ menu nào khác cho vấn đề đó), kết xuất mảng để có thể truy cập từ mẫu twig. Trong số nhiều ưu điểm của việc có toàn quyền kiểm soát mảng kết xuất của menu trong mẫu twig là khả năng tùy chỉnh đánh dấu cho các menu của bạn để đảm bảo chúng có thể truy cập và tuân thủ các tiêu chuẩn.
// Get menu items
{% set items = simplify_menu('main') %}
// Iterate menu tree
<ul>
{% for menu_item in items.menu_tree %}
<li class="{{ item_class }} navigation__item">
<a href="{{ menu_item.url }}" class="{{ link_class }}">{{ menu_item.text }}</a>
</li>
{% endfor %}
</ul>
Mặt khác, có một số menu-*
mẫu twig để sử dụng khi hiển thị menu từ một khối. Bật cài đặt gỡ lỗi Twig của bạn trong Drupal để xem các đề xuất là gì.
Tuy nhiên, bạn cần có kiến thức khá tốt về chủ đề menu để có được chính xác (như xử lý các mục con và không cấu trúc menu phẳng như ví dụ ở trên) - điều đó nói rằng, tôi sẽ kiên quyết để một khối hiển thị menu trong một khu vực nhất định. Sau đó, kiểm tra menu.html.twig
từ chủ đề cơ sở của bạn (đẳng cấp hoặc ổn định) để có ý tưởng về các tùy chọn của bạn là gì nếu bạn muốn sửa đổi đánh dấu.
Hãy chắc chắn sử dụng một gợi ý mẫu twig phong nha và không chỉ menu.html.twig
- vì điều đó sẽ ảnh hưởng đến mọi menu được Drupal hiển thị ... đó là mẫu mặc định.
Tôi cũng đề nghị cài đặt Menu Block vì điều đó sẽ cho phép thêm linh hoạt trong các đề xuất tệp theo chủ đề và twig. Nó cũng làm cho việc hiển thị cây của một menu (như điều hướng dựa trên phần trong thanh bên) trở nên dễ dàng.
{% set items = simplify_menu('main') %}
nhưng (trong trường hợp này) menu điều hướng chính không được hiển thị?
header.twig
đã thử {{ simplify_menu('crmnavigation') }}
, nhưng nó không tải khối? Bạn có biết làm cách nào để tải khối và menu bên trong nó header.twig
bằng Menu Simplify không?
Kích hoạt mô-đun Simplify_menu, sau đó thêm mã bên dưới vào page.html.twig hoặc mẫu twig khác mà bạn muốn hiển thị menu của mình:
<nav class="navigation__main" role="navigation">
{% set item_class = 'navigation__item' %}
{% set link_class = 'navigation__link' %}
<ul class="navigation__items">
{% set items = simplify_menu('main') %}
{% for menu_item in items.menu_tree %}
<li class="{{ item_class }}"><a href="{{ menu_item.url }}" class="{{ link_class }}">{{ menu_item.text }}</a></li>
{% endfor %}
</ul>
</nav>
những 'main'
là id đơn mà bạn có thể tìm thấy bằng cách lơ lửng trên nút chỉnh sửa của trình đơn trong trang menu và nhìn vào url hiển thị ở dưới cùng của trình duyệt.
Đối với những người vẫn đang tìm kiếm một phương pháp thay thế, tôi khuyên bạn nên sử dụng mô-đun Twig Tweak như một trường hợp sử dụng ổn định hơn và toàn cầu hơn, hãy xem bảng cheat của nó
Để hiển thị menu thông qua chỉnh twig, bạn chỉ cần làm như sau:
{# Expand menu items to display the entire menu tree. #}
{{ drupal_menu('menu_machine_name') }}
{# Specify menu level and depth. #}
{{ drupal_menu('admin', 2, 3) }}