Đây là câu trả lời đầu tiên của tôi trên trang web này. Tôi đã vật lộn để cố gắng làm cho công việc này trong hai ngày qua và cuối cùng tôi đã có thể làm cho nó hoạt động, vì vậy tôi mặc dù sẽ rất tốt để chia sẻ nó.
Trước hết bạn cần tạo một mô-đun:
- đăng ký.php
- vv / module.xml
- xem / frontend / layout / default.xml
- xem / frontend / samples / minicart_open.phtml
- xem / frontend / web / js / view / minicart_open.js
Bước 1. Bạn cần thêm một mẫu vào trang web. Cách để làm điều đó là bằng cách sử dụng default.xml
<referenceContainer name="content">
<block class="Magento\Framework\View\Element\Template" name="minicart.autoopen" template="Company_ModuleName::minicart_open.phtml"/>
</referenceContainer>
Bước 2. Sau đó, bên trong minicart_open.phtml, chúng ta cần gọi tệp js (thành phần) bằng cách gắn nó vào div cha của minicart. Trong trường hợp này, [data-block = 'minicart']. Xem liên kết này để biết thêm chi tiết.
<script type="text/x-magento-init">
{
"[data-block='minicart']" : {
"Company_ModuleName/js/view/minicart_open" : {}
}
}
</script>
Bước 3. Và cuối cùng, bên trong minicart_open.js, mã ma thuật:
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");
});
});
}
});
Về cơ bản mã này mở rộng chức năng của tệp vendor/magento/module-checkout/view/frontend/web/js/view/minicart.js
và nó nói rằng một khi cuộc gọi AJAX được hoàn thành (contentUpdated), minicart sẽ được mở.
Và đó là nó, một nhiệm vụ đơn giản với rất nhiều lý thuyết đằng sau. Hy vọng nó giúp.