Esta es mi primera respuesta en este sitio. He estado luchando tratando de hacer que esto funcione durante los últimos dos días y finalmente pude hacerlo funcionar, así que pensé que sería bueno compartirlo.
Primero que nada necesitas crear un módulo:
- registro.php
- etc / module.xml
- view / frontend / layout / default.xml
- view / frontend / templates / minicart_open.phtml
- view / frontend / web / js / view / minicart_open.js
Paso 1. Necesita agregar una plantilla al sitio. La forma de hacerlo es utilizando default.xml
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="minicart.autoopen" template="Company_ModuleName::minicart_open.phtml"/>
</referenceContainer>
Paso 2. Luego, dentro de minicart_open.phtml necesitamos llamar a nuestro archivo js (componente) adjuntándolo al div padre del minicart. En este caso, [bloque de datos = 'minicart']. Vea este enlace para más detalles.
<script type="text/x-magento-init">
{
"[data-block='minicart']" : {
"Company_ModuleName/js/view/minicart_open" : {}
}
}
</script>
Paso 3. Y finalmente, dentro de minicart_open.js, el código mágico:
define(["jquery/ui","jquery"], function(Component, $){
return function(config, element){
var minicart = $(element);
minicart.on('contentLoading', function () {
minicart.on('contentUpdated', function () {
minicart.find('[data-role="dropdownDialog"]').dropdownDialog("open");
});
});
}
});
Básicamente, este código extiende la funcionalidad del archivo vendor/magento/module-checkout/view/frontend/web/js/view/minicart.js
y dice que una vez que se completa la llamada AJAX (contentUpdated), se debe abrir el minicart.
Y eso es todo, una tarea simple con mucha teoría detrás. Espero eso ayude.