Magento2アイテムが追加されたらミニカートを開く



Magento 2 Open Minicart When Item Is Added



解決:

minicart.jsファイルを変更するだけで実行できます。

ベンダー/magento/Magento_Checkout/view/web/js/view/minicart.jsに移動します



テーマフォルダにコピーして、ファイルのオーバーライドを作成します。

初期化:関数の下に、次のように表示されます



$( '[data-block =' minicart ']')。on( 'contentLoading'、function(event){

関数をこのコードに置き換えます。

$( '[data-block =' minicart ']')。on( 'contentLoading'、function(event){addToCartCalls ++; self.isLoading(true); $( '[data-block =' minicart ']')。 ( 'contentUpdated' で、関数(){$( '[データブロック=' minicart ']')(見つける '[データ - ]')dropdownDialog( 'オープン');のsetTimeout(関数(){$( '[data-block =' minicart ']')。find( '[data-]')。dropdownDialog( 'close');}、4000);});});

要件に応じてタイムアウトを変更できます。

コマンドを実行してファイルをアップロードし、キャッシュをクリーンアップします



php bin / magento cache:clean

乾杯!


Magento2の場合

カートに商品を追加するときにミニカートをポップアップするmagento2

Magento1にあるカートとhttps://stackoverflow.com/questions/13841390/toggle-dropdown-mini-cart-when-product-added-to-basketに商品が追加されたときにヘッダーカートを開くということです。

Magento 2では、このためのイベントオブザーバーを作成できます

app code Custom Module etc frontend events.xml

  

app code Custom Module Observer OpenMiniCartObserver.php

名前空間Custom  Module  Observer; Magento  Framework  Event  ObserverInterfaceを使用します; Magento  Framework  App  Request  DataPersistorInterfaceを使用します; Magento  Framework  App  ObjectManagerを使用します;クラスOpenMiniCartObserverは、ObserverInterface {protected $ _urlManager;を実装します。保護された$ redirect;パブリック関数の__construct( Magentoの Frameworkの UrlInterface $ urlManager、 Magentoの Frameworkのアプリケーションレスポンス RedirectInterface $リダイレクト){$この - > _ urlManager = $ urlManager。 $ this-> redirect = $ redirect; }パブリック関数は、( Magentoの枠組みイベントオブザーバ$オブザーバ){$ actionNameの= $ observer-> GETEVENT()を実行 - >のGetRequest() - > getFullActionName(); $ controller = $ observer-> getControllerAction(); $ objectManager =  Magento  Framework  App  ObjectManager :: getInstance(); $ cartUpdated = $ objectManager-> get( 'Magento  Checkout  Model  Session')-> getCartWasUpdated(false); IF($ cartUpdated){//オープンミニカート}の$ this  - > redirect->リダイレクト($ controller->てgetResponse()の$ this  - > redirect-> getRefererUrl()); }

まだいくつかのJSのものが欠けています


Ajendra Panwarの答えは良いですが、ミニカートのJSファイル全体を上書きしなくても、まったく同じことができることを指摘したいと思います。このオーバーライドを実行すると、アップグレードの問題が発生する可能性があります。使用しているのと同じ機能にフックするだけなので、オーバーライドは不要です。オーバーライドでJsファイルを呼び出しましたheader.phtmlですが、これはサイトのすべてのページにロードされている任意のphtmlファイルに含めることができます。

app / design / frontend / {namespace} / {theme} /Magento_Theme/templates/html/header.phtml

... {'*':{'Magento_Theme / js / mini-cart-action':{}}} .. ..

次に、コードのJSファイルを作成します。

app / design / frontend / {namespace} / {theme} /Magento_Theme/web/js/mini-cart-action.js

([ 'jqueryの']、関数($){return関数(){$( '[データブロック=' minicart ']')を定義する。( 'contentLoading'、関数(){$( '[データブロックに= 'minicart'] '(contentUpdated」、関数(){$( 'HTML、本体')(:遅い)で' アニメーション{scrollTopスプライト0} ')。'; $( '[データブロック=' minicart ']')。find( '[data-]')。dropdownDialog( 'open');});});}});

JSファイルがpubフォルダー。ファイルが正しく読み込まれていることを確認するには、サイトの任意のページのネットワークタップを調べます。

ここに画像の説明を入力してください