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