Настройка главной навигации в Magento 2 (topmenu) javaScript


8

Я потратил много времени, копаясь в модуле темы и пустых шаблонах, пытаясь внести изменения в основную навигацию Magento2. До сих пор я создал собственный модуль для управления контентом, отображаемым на странице (Добавление ссылок на subnav), но я не могу понять, где находится меню навигации javaScript.

Я вижу файл navigation.menu.js в пустом шаблоне и файл menu.js в модуле темы, но ни одно из них не относится к главному меню, и я не могу найти другие места для поиска JS.

Поскольку блок генерируется XML и навигация, похоже, выполняется в пользовательском интерфейсе jQuery, у меня не так много возможностей для поиска. До сих пор я в основном изменял пользовательский шаблон, построенный на базовом шаблоне, выполняя поиск в каталоге поставщиков, но я выхожу пустым.

Я использую Magento 2.1 с пользовательским шаблоном, созданным на основе базового шаблона. Если кто-нибудь и укажет мне правильное направление, это будет очень полезно.

Edit1:

Итак, после еще большего количества поисков и поисков я наконец нашел второй файл menu.js в lib / web / mage, который, кажется, является правильным местом, однако сейчас я не могу его переопределить.

С моей новой информацией я фактически наткнулся на документы разработчиков Magento2, в которых есть пример переопределения меню и меню администратора. Поэтому я добавил следующее в мой модуль

Пространство имен / модуль / просмотр / интерфейс / требуют-config.js

var config = {
    map: {
        '*': {
            'menu': 'Test_Topmenu/js/navigation-menu'
        }
    }
};

Пространство имен / модуль / вид / интерфейс / веб / JS / навигации-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;
});

Теперь, просматривая файл vendor / magento / module-theme / view / frontend / templates / html / topmenu.phtml, я вижу, что они использовали data-mage-init виджета меню. Насколько я понимаю, для этого следует использовать измененную версию файла, однако, похоже, она не работает. Я добавил консольный журнал в init по умолчанию и перепробовал многочисленные коннотации случаев и пространств имен, чтобы убедиться, что я их не настроил неправильно (я видел много примеров, но люди обычно используют или не используют в других местах) , но я не могу получить новый init для вызова.

Я также очищал каталог pub / static / frontend и повторно развертывал после каждого изменения, чтобы убедиться, что только правильные версии могут быть вызваны.

Ответы:


1

Если вы хотите переопределить файл navigation-menu.js, вам нужно добавить его в свою тему:

app/design/frontend/{yourVendorName}/{yourThemeName}/web/js/navigation-menu.js

После этого вам нужно запустить:

php bin/magento setup:static-content:deploy

и очистить кеш, просто чтобы быть уверенным.

Надеюсь, это поможет!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.