Tôi đã dành một sự công bằng trong khi đào sâu vào mô-đun chủ đề và các mẫu trống để cố gắng thay đổi điều hướng Magento2 chính. Cho đến nay tôi đã tạo một mô-đun tùy chỉnh để kiểm soát nội dung được hiển thị trên trang (Thêm liên kết vào subnav) nhưng tôi không thể tìm ra javaScript của menu điều hướng ở đâu.
Tôi có thể thấy tệp navigation.menu.js trong mẫu trống và menu.js trong mô-đun chủ đề nhưng dường như cả hai đều không dành cho menu chính và tôi không thể tìm thấy bất kỳ nơi nào khác để tìm kiếm JS.
Vì khối được tạo bởi XML và điều hướng dường như chạy trên Giao diện người dùng jQuery nên tôi không thể sử dụng nhiều để tìm kiếm. Cho đến bây giờ, tôi chủ yếu sửa đổi một mẫu tùy chỉnh được xây dựng trên mẫu cơ sở bằng cách tìm kiếm thư mục nhà cung cấp nhưng tôi đang trống.
Tôi đang chạy Magento 2.1 với một mẫu tùy chỉnh được tạo từ mẫu cơ sở, Nếu ai đó có thể chỉ cho tôi đi đúng hướng thì đó sẽ là một sự trợ giúp tuyệt vời.
Chỉnh sửa1:
Vì vậy, sau khi thử nghiệm và kiểm tra thêm, cuối cùng tôi đã tìm thấy tệp menu.js thứ hai trong lib / web / mage dường như là đúng nơi, tuy nhiên bây giờ tôi không thể ghi đè lên nó.
Với thông tin mới của tôi, tôi thực sự tình cờ tìm thấy các tài liệu phát triển Magento2 có một ví dụ về ghi đè menu và menu quản trị. Vì vậy, tôi đã thêm vào sau đây vào mô-đun của tôi
Không gian tên / Mô-đun / chế độ xem / frontend / request-config.js
var config = {
map: {
'*': {
'menu': 'Test_Topmenu/js/navigation-menu'
}
}
};
Không gian tên / Mô-đun / chế độ xem / frontend / web / js / navigation-menu.js
define([
'jquery',
'jquery/ui',
'mage/menu'
], function ($) {
"use strict";
$.widget('Test_Topmenu.navigationMenu', $.mage.menu, {
_init: function () {
console.log('new init');
}
});
return $.Test_Topmenu.navigationMenu;
});
Bây giờ tìm kiếm trong tập tin nhà cung cấp / magento / module-theme / view / frontend / samples / html / topmenu.phtml tôi có thể thấy rằng họ đã sử dụng một data-mage-init của widget menu. Theo tôi hiểu thì nó nên sử dụng phiên bản sửa đổi của tệp, tuy nhiên nó dường như không hoạt động. Tôi đã thêm nhật ký giao diện điều khiển vào init mặc định và đã thử nhiều ý nghĩa về trường hợp và không gian tên để đảm bảo rằng tôi đã cài đặt sai (tôi đã thấy rất nhiều ví dụ nhưng mọi người có xu hướng chỉ sử dụng hoặc không sử dụng ở những nơi khác) , nhưng tôi không thể có được init mới được gọi.
Tôi cũng đã làm trống thư mục pub / static / frontend và triển khai lại sau mỗi thay đổi để đảm bảo chỉ các phiên bản chính xác mới có thể được gọi.