¿Es posible incluir un requirejs-config.js
archivo (o configurar RequireJS) a través de un tema de Magento? ¿O la capacidad está reservada para los módulos de Magento? La información de los documentos de desarrollo sobre la estructura del tema es ambigua en este punto.
Dev docs no menciona nada sobre RequireJS; sin embargo, los temas sí incluyen a, lo web
que significa que javascript se puede combinar con ellos. Si javascript se puede agrupar con un tema, eso significa que un módulo RequireJS se puede agrupar con un tema, y si un módulo RequireJS se puede agrupar con un tema, ese módulo puede requerir una configuración específica de RequireJS.
Mi ingenua suposición sería que los temas tendrían esta capacidad, pero no he podido encontrar ninguna documentación de esta manera u otra, y no tengo una tarde libre para pasar haciendo el código requerido de espeleología en el requirejs-config.js
archivo de Magento incluido.
fuente
Respuestas:
en realidad puede incluir un require-config.js en los directorios del módulo de temas.
El problema es (en realidad para nuestro equipo frontend) que parece que no hay posibilidad de anular la configuración, sino de extenderla.
Entonces, para tomar el módulo Magento_Theme como ejemplo aquí, si agrega require-config.js en
<theme_base_dir>/Magento_Theme
dir, la configuración se agregará al archivo require-config.js generado y también se agregará la configuración del módulo Magento_Theme.Para responder a su pregunta, también traté de agregar require-config.js bajo el
<theme_base_dir>/web
directorio de temas y también bajo el directorio raíz de temas. Ambos no funcionaron. actualización: en realidad de acuerdo con la respuesta a continuación, es posible colocándolo en el directorio base del temaEntonces, la respuesta sería básicamente sí, ya que podría agregar cualquier requisito js en cualquier módulo (los archivos js relacionados con el tema pueden colocarse mejor bajo el
<theme_base_dir>/Magento_Theme
directorio)Aunque diría que debería existir la posibilidad de agregar un tema relacionado con require-config.js fuera de cualquier módulo (tal vez desactive el módulo dado) y también debería ser posible anular un módulo require-config.js.
Ambos parecen no ser posibles cajeros automáticos.
=== ACTUALIZACIÓN ===
En realidad, parece posible tener un tema específico require-config.js. Ver la respuesta de @Gareth Daine a continuación
fuente
path/to/theme/files/[etc/Magento_Theme
OK, creo que lo resolví y creo que la documentación es ambigua y necesita actualizarse para aclarar el proceso.
Moví mi
requirejs-config.js
desde dentro de los directoriosweb/js
yweb
respectivamente para ambosMagento_Theme
y la raíz de mi tema en<Vendor>/<theme>
y ahora mi configuración de RequireJS se fusionó en la principalrequirejs-config.js
con todas las demás inclusiones .Por lo tanto, parece que debe incluir el
requirejs-config.js
archivo en las siguientes ubicaciones según los requisitos del tema / módulo.Nivel de tema
app/design/frontend/<Vendor>/<theme>/requirejs-config.js
Nivel de módulo
app/design/frontend/<Vendor>/<theme>/<Module_Name>/requirejs-config.js
Entonces, en su
requirejs-config.js
tema, debe asignar su componente a una ruta y luego usarloshim
para declarar cualquier dependencia:Luego, deberá crear una plantilla para mantener la inicialización de los componentes a través de una
<script>
etiqueta (a menos que la adjunte directamente a un elemento dentro de un archivo .phtml) si esta es la ruta que desea seguir, incluya el siguiente contenido:Alternativamente, vincúlelo a un elemento:
A continuación, basta con incluir la plantilla .phtml en sus instrucciones de diseño, por ejemplo, coloqué la mina dentro de la
default.xml
ubicada enapp/design/frontend/<Vendor>/<theme>/Magento_Theme/layout
bajo el nodo del cuerpo y se hace referencia:<block class="Magento\Framework\View\Element\Template" name="theme.js" template="Magento_Theme::html/js.phtml" />
fuente
No tuve suficiente representante para hacer de esto un comentario, pero solo para notar que la respuesta de Gareth no funcionó para mí.
Envolviendo el 'componente': 'js / component' con
'*':{}
hizo el truco.Además, en lugar de crear un archivo de plantilla, agregué el siguiente código en la parte superior de
app/design/frontend/<Vendor>/<theme>/Magento_Theme/layout/default.xml
fuente
si
requirejs-config.js
se puede agregar al tema de la siguiente manera. Así es como agrego la biblioteca dotdotdot en mi tema personalizado magento2.1. Descargue y agregue Js Library en su tema siguiendo la ruta:
2. Cree el archivo requirejs de un tema de la siguiente manera y permita que los requirejs conozcan la biblioteca recién agregada.
3. Use la biblioteca agregada en el archivo js principal de su tema de la siguiente manera:
4. e incluya el archivo js de su tema en la cabeza de su sitio de la siguiente manera:
Puede agregar cualquier biblioteca JS externa y archivo personalizado en cada página en magento2.
fuente
requirejs-config.js
esta manera. Sin embargo, RequireJS intenta cargarjs/some.library.js
desde la raíz en lugar de desde el directorio del tema..js
extensión ... tonto :)