To jest moja pierwsza odpowiedź na tej stronie. Przez ostatnie dwa dni walczyłem o to, by to zadziałało i w końcu udało mi się go uruchomić, więc pomyślałem, że miło byłoby się nim podzielić.
Przede wszystkim musisz utworzyć moduł:
- Registration.php
- etc / module.xml
- view / frontend / layout / default.xml
- view / frontend / templates / minicart_open.phtml
- view / frontend / web / js / view / minicart_open.js
Krok 1. Musisz dodać szablon do witryny. Można to zrobić za pomocą pliku default.xml
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="minicart.autoopen" template="Company_ModuleName::minicart_open.phtml"/>
</referenceContainer>
Krok 2. Następnie wewnątrz minicart_open.phtml musimy wywołać nasz plik js (komponent), dołączając go do nadrzędnego div minicart. W tym przypadku [data-block = 'minicart']. Zobacz ten link, aby uzyskać więcej informacji.
<script type="text/x-magento-init">
{
"[data-block='minicart']" : {
"Company_ModuleName/js/view/minicart_open" : {}
}
}
</script>
Krok 3. I wreszcie, w minicart_open.js, magiczny kod:
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");
});
});
}
});
Zasadniczo ten kod rozszerza funkcjonalność pliku vendor/magento/module-checkout/view/frontend/web/js/view/minicart.js
i mówi, że po zakończeniu wywołania AJAX (contentUpdated) minicart powinien zostać otwarty.
I to wszystko, proste zadanie z dużą ilością teorii. Mam nadzieję, że to pomoże.