Tôi đã bay trên web và không rõ ràng làm thế nào để chủ đề các menu tùy chỉnh. Tôi đã tìm kiếm hàng giờ và không tìm thấy một bài đăng nào minh họa quá trình, từ đầu đến cuối, tạo một menu và tùy chỉnh đầu ra của nó. Có vẻ như đây là một quá trình gồm nhiều giai đoạn:
- Tạo menu thông qua giao diện Drupal.
- Tạo một chức năng chủ đề trong
template.php
tập tin của bạn để chủ đề đầu ra. - Đưa menu này vào một tệp mẫu (bằng cách nào đó) bằng cách thêm nó dưới dạng một biến.
- Gọi
theme
hàm trên menu trong tệp mẫu.
1 là đủ dễ để làm, các vấn đề tôi gặp phải là với 2, 3 và 4. Nhìn vào mẫu trang mặc định, tôi thấy rằng nó hiển thị menu chính trong biến $main_menu
. Sau đó, bạn có thể thấy chức năng này theme('links__system_main_menu', array('links' => $main_menu...
, có nghĩa là nó đang tìm kiếm một chức năng chủ đề được đặt tên thích hợp ở đâu đó và sử dụng nó để tạo đầu ra.
Tôi biết nếu tôi đặt function theme_links__system_main_menu(&$variables) {...}
trong tệp template.php của mình thì Drupal sẽ sử dụng chức năng đó chứ không phải function theme_menu_links(&$variables) {...}
.
Điều tôi không biết là làm thế nào Drupal liên kết menu tùy chỉnh mà tôi đã tạo với chức năng đó. Ví dụ, giả sử tôi đã tạo một menu có tên My Menu
. Tôi có thể tạo chức năng sau trong template.php
tệp của mình và tạo chủ đề đầu ra cho menu đó không?function theme_links__system_my_menu(&$variables) {...}
Ngoài ra, làm thế nào để làm cho menu tùy chỉnh có sẵn cho một tệp mẫu? Làm thế nào để Drupal hiển thị $main_menu
biến cho page.tpl.php?
Tôi nghĩ rằng chìa khóa tôi thiếu ở đây là cách nhúng biến đại diện cho menu tùy chỉnh của tôi vào trang mẫu. Đối với hầu hết các phần mặc dù tôi hoàn toàn không biết phải làm gì sau khi đã tạo menu.
Cảm ơn đã giúp đỡ.
EDIT: Có lẽ nên đăng những gì tôi đang làm. Theo nhận xét của tôi về BetaRide bên dưới, tôi cần đưa HTML tùy chỉnh vào các <li>
thành phần của các mục menu. Cụ thể, tôi đang thêm các biểu tượng Twitter Bootstrap.