Menyesuaikan navigasi utama Magento 2 (topmenu) javaScript

8

Saya telah menghabiskan waktu sambil menggali ke dalam modul tema dan template kosong mencoba untuk membuat perubahan pada navigasi Magento2 utama. Sejauh ini saya telah membuat modul khusus untuk mengontrol konten yang dirender ke dalam halaman (Menambahkan tautan ke subnav) tetapi saya tidak dapat mengetahui di mana menu navigasi javaScript berada.

Saya dapat melihat file navigation.menu.js di templat kosong dan menu.js di modul tema tetapi tak satu pun dari ini tampaknya untuk menu utama dan saya tidak dapat menemukan tempat lain untuk mencari JS.

Karena blok dihasilkan oleh XML dan navigasi tampaknya berjalan di jQuery UI, saya tidak punya banyak yang bisa saya gunakan untuk mencari. Sampai sekarang saya terutama telah memodifikasi templat kustom yang dibangun di templat dasar dengan mencari direktori vendor tapi saya kosong.

Saya menjalankan Magento 2.1 dengan templat khusus yang dibuat dari templat dasar, Jika ada yang bisa mengarahkan saya ke arah yang benar, itu akan sangat membantu.

Sunting1:

Jadi setelah lebih banyak googling dan pengujian saya akhirnya menemukan file menu.js kedua di lib / web / mage yang tampaknya merupakan tempat yang tepat, namun sekarang saya tidak dapat menimpanya.

Dengan informasi baru saya, saya benar-benar menemukan dokumen dev Magento2 yang memiliki contoh tentang menimpa menu dan menu admin. Jadi saya menambahkan yang berikut ke modul saya

Namespace / Module / view / frontend / require-config.js

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

Namespace / Module / view / 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;
});

Sekarang mencari di vendor / magento / module-theme / view / frontend / templates / html / topmenu.phtml file saya dapat melihat bahwa mereka telah menggunakan data-mage-init dari widget menu. Seperti yang saya mengerti ini harus menggunakan versi file yang dimodifikasi, namun sepertinya tidak berfungsi. Saya menambahkan log konsol ke init default dan telah mencoba banyak konotasi kasus dan ruang nama untuk memastikan saya tidak membuat ini salah (saya telah melihat banyak contoh tetapi orang cenderung hanya menggunakan atau tidak di tempat lain) , tapi saya tidak bisa mendapatkan init baru untuk dipanggil.

Saya juga telah mengosongkan direktori pub / static / frontend dan memindahkan kembali setelah setiap perubahan juga untuk memastikan hanya versi yang benar yang bisa dipanggil.

Chris Morris
sumber

Jawaban:

1

Jika Anda ingin menimpa menu navigasi. Anda perlu menambahkannya di tema Anda:

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

Setelah itu Anda perlu menjalankan:

php bin/magento setup:static-content:deploy

dan bersihkan cache, hanya untuk memastikan.

Saya harap ini membantu!

Anca Mihaela
sumber