Esta é a minha primeira resposta neste site. Eu tenho tentado fazer isso funcionar nos últimos dois dias e finalmente consegui fazê-lo funcionar, então achei que seria bom compartilhá-lo.
Primeiro de tudo você precisa criar um módulo:
- registration.php
- etc / module.xml
- view / frontend / layout / default.xml
- view / frontend / templates / minicart_open.phtml
- view / frontend / web / js / view / minicart_open.js
Etapa 1. Você precisa adicionar um modelo ao site. A maneira de fazer isso é usando o default.xml
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="minicart.autoopen" template="Company_ModuleName::minicart_open.phtml"/>
</referenceContainer>
Etapa 2. Então, dentro do minicart_open.phtml, precisamos chamar nosso arquivo js (componente), anexando-o à div pai do minicart. Nesse caso, [data-block = 'minicart']. Veja este link para mais detalhes.
<script type="text/x-magento-init">
{
"[data-block='minicart']" : {
"Company_ModuleName/js/view/minicart_open" : {}
}
}
</script>
Etapa 3. E, finalmente, dentro de minicart_open.js, o 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");
});
});
}
});
Basicamente, esse código estende a funcionalidade do arquivo vendor/magento/module-checkout/view/frontend/web/js/view/minicart.js
e diz que quando a chamada AJAX for concluída (contentUpdated), o minicart deverá ser aberto.
E é isso, uma tarefa simples com muita teoria por trás. Espero que ajude.