Czy można dołączyć requirejs-config.js
plik (lub inaczej skonfigurować RequireJS) za pomocą motywu Magento? A może funkcja jest zarezerwowana dla modułów Magento? Informacje deweloperów na temat struktury motywu są niejednoznaczne w tym punkcie.
Dokumenty deweloperów nie wspominają nic o RequireJS - jednak motywy zawierają takie, web
co oznacza, że javascript można z nimi łączyć. Jeśli skrypt javascript można powiązać z kompozycją, oznacza to, że moduł RequireJS można połączyć z kompozycją, a jeśli moduł RequireJS można połączyć z kompozycją, moduł ten może wymagać określonej konfiguracji RequireJS.
Moim naiwnym założeniem byłoby, że motywy miałyby taką możliwość, ale nie byłem w stanie znaleźć żadnej dokumentacji na ten czy inny sposób i nie mam wolnego popołudnia, aby spędzić wymaganą pisownię kodu w requirejs-config.js
pliku Magento, w tym.
źródło
Odpowiedzi:
możesz faktycznie dołączyć plik config-config.js do katalogów modułów motywu.
Problemem jest (tak naprawdę dla naszego zespołu frontendowego), że wydaje się, że nie ma możliwości przesłonięcia konfiguracji, ale rozszerzenia konfiguracji.
Tak więc, aby wziąć przykład Magento_Theme na przykład tutaj, jeśli dodasz plik wymaga-config.js w katalogu
<theme_base_dir>/Magento_Theme
, konfiguracja zostanie dodana do wygenerowanego pliku wymagania-config.js, a także konfiguracja z modułu Magento_Theme.Aby odpowiedzieć na twoje pytanie, próbowałem również dodać plik config-config.js w katalogu motywów,
<theme_base_dir>/web
a także w katalogu głównym motywów. Oba nie działały. aktualizacja: właściwie zgodnie z odpowiedzią poniżej, jest to możliwe poprzez umieszczenie go w bazie motywu reżTak więc odpowiedź byłaby w zasadzie tak, ponieważ można dodać dowolne wymagania js w dowolnym module (pliki js związane z tematem najlepiej umieścić w katalogu
<theme_base_dir>/Magento_Theme
)Chociaż powiedziałbym, powinna istnieć możliwość dodania związanego z kompozycją pliku wymagań-config.js poza dowolnym modułem (być może dezaktywujesz dany moduł), a także powinna istnieć możliwość zastąpienia modułów wymagań-config.js.
Oba wydają się niemożliwe bankomat.
=== AKTUALIZACJA ===
w rzeczywistości wydaje się, że możliwe jest posiadanie pliku config-config.js specyficznego dla tematu. Zobacz odpowiedź @Garetha Daine'a poniżej
źródło
path/to/theme/files/[etc/Magento_Theme
OK, myślę, że mogłem to rozwiązać i uważam, że dokumentacja jest niejednoznaczna i wymaga aktualizacji w celu wyjaśnienia procesu.
Przeniosłem moje
requirejs-config.js
z wewnątrzweb/js
iweb
katalogów odpowiednio dla obuMagento_Theme
i katalogu głównego mojej kompozycji w,<Vendor>/<theme>
a teraz moja konfiguracja RequireJS jest scalona z głównymrequirejs-config.js
ze wszystkimi innymi włącznikami .Wygląda więc na to, że musisz dołączyć
requirejs-config.js
plik w następujących lokalizacjach w zależności od wymagań motywu / modułu.Poziom motywu
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Poziom modułu
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Tak więc w swoim
requirejs-config.js
motywie powinieneś odwzorować komponent na ścieżkę, a następnie użyćshim
do zadeklarowania zależności:Następnie musisz utworzyć szablon do przechowywania inicjalizacji komponentów za pomocą
<script>
znacznika (chyba że podłączysz go bezpośrednio do elementu w pliku .phtml), jeśli jest to trasa, którą chcesz zejść, dołącz następującą treść:Alternatywnie, powiąż go z elementem:
Następnie po prostu dołącz szablon .phtml do instrukcji układu, na przykład umieściłem mój w obszarze
default.xml
znajdującym sięapp/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
pod węzłem body i wspomniałem:<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />
źródło
Nie miałem wystarczającej liczby przedstawicieli, aby skomentować ten komentarz, ale tylko zauważyć, że odpowiedź Garetha nie do końca działała dla mnie.
Owijanie „komponentu”: „js / komponent”
'*':{}
załatwiło sprawę.Zamiast tworzyć plik szablonu, dodałem poniższy kod na górze
app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml
źródło
Tak
requirejs-config.js
można dodać do motywu w następujący sposób. W ten sposób dodaję bibliotekę dotdotdot do niestandardowego motywu magento2.1. Pobierz i dodaj bibliotekę Js do swojego motywu, postępując zgodnie ze ścieżką:
2. Utwórz plik wymagań dla motywu w następujący sposób i powiadom go o nowo dodanej bibliotece.
3. Użyj dodanej biblioteki w głównym pliku js kompozycji w następujący sposób:
4. i dołącz plik js motywu do głowy witryny w następujący sposób:
Możesz dodać dowolną zewnętrzną bibliotekę JS i niestandardowy plik na każdej stronie w magento2.
źródło
requirejs-config.js
ten sposób próbowałem dodać bibliotekę . Jednak RequireJS następnie próbuje załadowaćjs/some.library.js
z katalogu głównego zamiast z katalogu kompozycji..js
rozszerzenie ... głupie :)