Apakah mungkin untuk memasukkan requirejs-config.js
file (atau mengkonfigurasi RequireJS) melalui tema Magento? Atau kemampuan dicadangkan untuk modul Magento? Informasi dev docs tentang struktur tema tidak jelas untuk poin ini.
Dev docs tidak menyebutkan apa pun tentang RequireJS - namun, tema menyertakan web
yang artinya javascript dapat digabungkan dengan mereka. Jika javascript dapat dibundel dengan tema, itu berarti modul RequireJS dapat dibundel dengan tema, dan jika modul RequireJS dapat dibundel dengan tema, modul tersebut mungkin memerlukan konfigurasi RequireJS tertentu.
Asumsi naif saya akan tema akan memiliki kemampuan ini, tapi saya belum dapat menemukan dokumentasi dengan cara ini atau yang lain, dan belum sore bebas untuk menghabiskan melakukan kode yang diperlukan spelunking pada requirejs-config.js
file Magento termasuk.
sumber
Jawaban:
Anda benar-benar dapat memasukkan memerlukan-config.js dalam tema Anda Modul dirs.
Masalahnya adalah (sebenarnya untuk tim frontend kami) bahwa tampaknya tidak ada kemungkinan, untuk mengesampingkan konfigurasi, tetapi untuk memperpanjang konfigurasi.
Jadi, untuk mengambil modul Magento_Theme untuk contoh di sini, jika Anda menambahkan memerlukan-config.js di bawah
<theme_base_dir>/Magento_Theme
dir, konfigurasi akan ditambahkan ke file yang diperlukan-config.js yang dihasilkan dan juga konfigurasi dari modul Magento_Theme akan ditambahkan.Untuk menjawab pertanyaan Anda, saya juga mencoba untuk menambahkan memerlukan-config.js di bawah tema tema
<theme_base_dir>/web
dan juga di bawah tema tema direktori. Keduanya tidak bekerja. pembaruan: sebenarnya sesuai dengan jawaban di bawah ini, dimungkinkan dengan menempatkannya ke dalam basis tema temJadi jawabannya pada dasarnya ya, karena Anda dapat menambahkan persyaratan js di bawah modul apa pun (file tema terkait js mungkin lebih baik ditempatkan di bawah
<theme_base_dir>/Magento_Theme
dir)Meskipun saya akan mengatakan, harus ada kemungkinan untuk menambahkan tema yang terkait dengan memerlukan-config.js di luar Modul apa pun (mungkin Anda menonaktifkan modul yang diberikan) dan juga harus memungkinkan untuk mengganti modul yang membutuhkan-config.js.
Keduanya sepertinya tidak mungkin atm.
=== UPDATE ===
sebenarnya sepertinya mungkin untuk memiliki theme-need-config.js yang spesifik. Lihat @Gareth Daine's Jawaban di bawah ini
sumber
path/to/theme/files/[etc/Magento_Theme
OK, saya pikir saya mungkin telah menyelesaikannya dan saya percaya bahwa dokumentasinya ambigu dan perlu diperbarui untuk memperjelas prosesnya.
Saya pindah
requirejs-config.js
dari dalamweb/js
danweb
direktori masing-masing untuk keduaMagento_Theme
dan akar tema saya di<Vendor>/<theme>
dan sekarang konfigurasi RequireJS saya digabung menjadi mainrequirejs-config.js
dengan semua termasuk lainnya.Jadi, tampaknya Anda harus memasukkan
requirejs-config.js
file di lokasi berikut berdasarkan persyaratan tema / modul.Tingkat Tema
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Tingkat Modul
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Jadi, dalam
requirejs-config.js
untuk tema Anda, Anda harus memetakan komponen Anda ke jalur dan kemudian gunakanshim
untuk mendeklarasikan dependensi:Maka Anda harus membuat templat untuk menahan inisialisasi komponen melalui
<script>
tag (kecuali jika Anda melampirkannya langsung ke elemen dalam file .phtml) jika ini adalah rute yang ingin Anda turunkan, sertakan konten berikut:Sebagai alternatif, ikat ke elemen:
Kemudian cukup sertakan templat .phtml dalam instruksi tata letak Anda, misalnya, saya menempatkan milik saya di dalam yang
default.xml
terletak diapp/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
bawah simpul tubuh dan direferensikan:<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />
sumber
Tidak memiliki perwakilan yang cukup untuk membuat komentar ini, tetapi hanya untuk mencatat bahwa jawaban Gareth tidak bekerja untuk saya.
Membungkus 'komponen': 'js / komponen' dengan
'*':{}
melakukan trik.Juga daripada membuat file templat saya menambahkan kode di bawah ini di bagian atas
app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml
sumber
Ya
requirejs-config.js
dapat ditambahkan ke tema sebagai berikut. Ini adalah bagaimana saya menambahkan perpustakaan dotdotdot di tema khusus magento2 saya.1. Unduh dan tambahkan Js Library di tema Anda mengikuti jalur:
2. Buat file requirejs tema sebagai follow dan biarkan requirejs tahu pustaka yang baru ditambahkan.
3. Gunakan perpustakaan yang ditambahkan di file js utama tema Anda sebagai berikut:
4. dan sertakan file js tema Anda di kepala situs Anda sebagai berikut:
Anda dapat menambahkan perpustakaan JS eksternal dan file khusus pada setiap halaman di magento2.
sumber
requirejs-config.js
cara ini. Namun, RequireJS kemudian mencoba memuatjs/some.library.js
dari root alih-alih dari direktori tema..js
ekstensi ... konyol :)