タグ付けされた質問 「event-observer」

イベント/オブザーバーは、コアコードを変更せずにMagentoと動的に連携するために使用されます。

2
オブザーバーを使用してカートに製品を追加したばかりのカスタムオプションと賞品を作成する
オブザーバーのcheckoutCartProductAddAfterイベントを監視するオブザーバーを使用してquoteitemにカスタムオプションを追加し、商品がカートに追加された後に起動します。 public function checkoutCartProductAddAfter(Varien_Event_Observer $observer) { $item = $observer->getQuoteItem(); $item->addOption(new Varien_Object( array( 'product' => $item->getProduct(), 'label' => 'Free Gifts', 'value' => 'Spend $50 and get gift product worth $9.99' ) )); return; } オブザーバーは機能していますが、追加した製品にカスタムオプションを追加できません。追加した製品にオブザーバーを使用してカスタムオプションを追加するためのヘルプを提供してください。

4
カスタムモジュールでイベントをディスパッチするタイミング
これは、Magento 1とMagento 2の両方に関する質問です。 私は、良いプラクティスとして、それを理解してサードパーティのモジュールの開発者は、他のモジュールで動作するようにそれを容易にするために彼らのカスタムモジュールでの発送のイベントに奨励されています。 私が知りたいのですが: 開発者はカスタムモジュールのどこでイベントをディスパッチする必要がありますか? イベントをディスパッチするための推奨スポットはありますか?例えば、コントローラー、モデル、ブロック、ヘルパー、オブザーバー? イベントのディスパッチはパフォーマンスにどのように影響しますか?

2
階層化ナビゲーションのレイアウトを変更する
階層化されたナビゲーションがあり、顧客<select/>はリンクの長いリストの代わりにフィールドを持つことを望んでいます。 フィルターの名前/ IDが一致する場合、オブザーバーでテンプレートを変更することを考えました。 より良いアイデアや推奨事項はありますか?テンプレートを変更する代わりに、ブロックを上書き/書き換えするか、2つのフィルターのブロッククラスのみを変更しますか? テンプレートの変更に使用するイベントは何ですか? 私はレイアウトのものを変更するオブザーバーを持っているため、ここで/programming/14524791/magento-enable-or-disable-a-module-in-code/14529629と同じ問題を抱えています。これはテーマにのみ関連します。更新を実行する前にテーマをチェックするのは良いアイデアかもしれませんか?

3
Magento 2:支払い方法選択のイベントオブザーバー
フロントエンドチェックアウトページの利用可能な支払い方法リストから支払い方法が選択されたときにオブザーバーを呼び出す必要があるカスタム拡張機能に取り組んでいます。 誰がこれにどのイベントオブザーバーを使用すべきか教えてもらえますか?カスタム関数を呼び出して、カートの小計に料金を追加する必要があります。

2
magento 2で画像のカスタム属性を保存する方法
条件に基づいてフロントエンドで製品の画像をいくつか表示する必要があります。仮想ミラーの使用を確認する必要があります。 <?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Dcw\Vm\Observer; use Magento\Framework\Event\ObserverInterface; class ChangeTemplateObserver extends \Magento\ProductVideo\Observer\ChangeTemplateObserver { /** * @param mixed $observer * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @return void */ public function execute(\Magento\Framework\Event\Observer $observer) { $observer->getBlock()->setTemplate('Dcw_Vm::helper/gallery.phtml'); } } テンプレート: <div class="admin__field field-image-vm"> …

1
カートルールが無効になった場合のイベントまたはプラグインスポットはありますか?
ショッピングカートの価格ルールが有効でなくなったとき(有効期限が切れたとき、または適用されなくなった他の製品の数量を変更したときなど)にプラグインできるイベントまたは場所はありますか?カートから自動的に削除されることはわかっていますが、コードでこれが発生している場所を見つけることができません。 小計がXの金額を超えるクーポンのカートに無料の製品を追加するモジュールを書いています。カート内のアイテム数を減らして小計がXを下回る場合を除いて、すべて正常に機能しています。クーポンは削除されますが、商品はカート内に残ります。 これまでのところ、私はこれまでに必要なことをするために次のイベントを利用しました... salesrule_validator_process checkout_cart_update_items_after sales_quote_collect_totals_before とメソッドMagento\Quote\Model\CouponManagementがあるのでどちらが有望に思えるかはわかりましたが、カートが更新されたときに呼び出されていないようです。set()remove() でcheckout_cart_update_items_after、それはまた、私は確認することができます論理的な場所のように思えるが、それはまだに応じて設定されたルールを表示されます$cart->getQuote()->getAppliedRuleIds() 更新:ルールがまだカートにあるかどうかを知っているcheckout_cart_save_after後に実行されるイベントのオブザーバーを追加することcollectTotals()になりました。次に、と比較$quote->getAppliedRuleIds()し$quote->getOrigData('applied_rule_ids')て、ルールが削除されているかどうかを確認します。これを行うにはもっと良い方法があるように感じますが、今のところうまくいきます。クーポンの有効期限が切れてもまだ問題があります...

3
Magento2-プログラムで製品がカートに追加されないようにする方法
私がしたいのは、カスタム属性が引用で設定されている場合、カートに商品を追加したくないです。カスタム属性が正しく設定されています。 製品がカートに追加されないようにするために、このイベントを監視するオブザーバーを作成しました controller_action_predispatch_checkout_cart_add 私のオブザーバーファイルコード: public function execute(\Magento\Framework\Event\Observer $observer) { $addedItemId = $observer->getRequest()->getParam('product'); $quote = $this->_cart->getQuote(); if(!empty($quote)) { $customAttribute = $quote->getData('custom_attribute'); if(!empty($customAttribute)) { $controller = $observer->getControllerAction(); $storeId = $this->_objectManager->get('Magento\Store\Model\StoreManagerInterface')->getStore()->getId(); $product = $this->_productRepository->getById($addedItemId, false, $storeId); $observer->getRequest()->setParam('product', null); $this->_messageManager->addError(__('This product cannot be added to your cart.')); echo false; $this->_actionFlag->set('', \Magento\Framework\App\Action\Action::FLAG_NO_DISPATCH, true); $this->redirect->redirect($controller->getResponse(), 'checkout/cart/index'); …



3
Magento 2の注文後にどのオブザーバーを使用しますか?
私はこのMagento 2拡張機能に取り組んでおり、一部の機能は、注文に関する情報をWebサービスを使用して外部アプリケーションにプッシュすることです。チェックアウトで注文した後、この情報をプッシュする必要があります。 現時点checkout_onepage_controller_success_actionでは、外部アプリで注文を作成するメソッドをトリガーするイベントを使用しています。このイベントをに配置しました/etc/frontend/events.xml。 これまでのところこれは機能していますが、注文ステータスに問題が見つかりました。注文がまだpendingステータスになっている場合と、注文がにある場合がありprocessingます。これは、支払い方法が最初に注文を保留中として初期化し、支払いが承認された後、注文が処理に変更されるためです。processing注文のみをプッシュしたい。checkout_onepage_controller_success_action支払いが承認される前にイベントが実行されることがあり、これが問題を引き起こしているようです。 これを解決する方法はありますか?コードを実行する前に支払い処理を確実に実行するにはどうすればよいcheckout_onepage_controller_success_actionですか? 私のコードに従って: events.xml <?xml version="1.0"?> <!-- /** * Copyright © 2017 companyname.com */ --> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="checkout_onepage_controller_success_action"> <observer name="companyname_order_success" instance="Companyname\Shipping\Observer\CreateCompanynameOrderObserver" /> </event> </config> CreateCompanynameOrderObserver.php /** * Create an order in Companyname when order status match the statuses in the backend * * @param EventObserver …

4
カートに追加イベントを監視しています-見積もりアイテムIDが空です
アイテムがカートに追加されたときに発生するイベントをキャッチしようとしています。私は現在、次のイベントを見ています。checkout_cart_product_add_after magentoのソースによると、このイベントはすべての見積もりが完了した後に発生します。しかし、カートIDと見積もりIDにアクセスすると、値が空になります。 $quoteItem = $observer->getQuoteItem(); $quote_item_id = $quoteItem->getItemId(); $cart = Mage::getSingleton('checkout/session'); $quote_id= $cart->getQuoteId(); カートにアイテムがない場合、上記は両方のIDに対して空を返します。カートにすでにアイテムが含まれている場合、カートIDには値がありますが、quote_item_idにはありません。 これは以前に尋ねられたことがあるが、質問は解決されておらず、議論はこの問題からはずれていることに注意してください。quote_item_idが必要です。

2
コンテンツがブラウザーに送信される前にディスパッチされる最後のイベントは何ですか?
Cookieを設定または更新する必要がありますが、Cookie生成コードが実行される前に、要求処理のすべて(または可能な限り)が確実に行われるようにしたいと考えています。つまり、ユーザーがログインした場合、コードの実行前にログイン処理が行われたことを確認したい、またはユーザーがカートに何かを追加した場合、すべてのカート処理が最初に行われることを知りたいです。 応答がブラウザーに送信される直前にディスパッチされるイベントはありますか?

1
サードパーティの拡張機能からオブザーバーを削除
Magento 2プラットフォームにブログモジュールをインストールしました。このブログモジュールには、新しいメニュー項目をプライマリナビゲーションに自動的に追加するオブザーバーがあります。これを止めたい。 events.xmlファイルには、次のようになります。 <?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd"> <event name="page_block_html_topmenu_gethtml_before"> <observer name="aw_blog_add_topmenu_items" instance="Aheadworks\Blog\Observer\AddBlogToTopmenuItemsObserver" /> </event> </config> ご覧のとおり、プライマリナビゲーションにリンクを追加するオブザーバーを参照しています。削除events.xmlすると問題は解決しますが、コアモジュールファイルの変更を伴わない方法を探しています。

2
カスタムオプションのテキストフィールドが変更されたときに価格を計算するMagentoイベント
長さと幅の2つのカスタムテキストフィールドを持つ製品を作成しようとしています。ユーザーが長さと幅の両方を入力する場合、価格はカスタム式で計算する必要があります。 私はオブザーバーを接続するための正しいイベントを見つけようとしています-誰かがそれが何であるか知っていますか? これが私が知っていることと試したことです 1)製品ビューのカスタムフィールドテキストボックスに、オブザーバーイベント-"opConfig.reloadPrice() 2)イベントsales_quote_add_itemにオブザーバーを作成すると、カートに追加されたときに式を介して価格を変更できます。この方法でも、カートに追加する前に製品ビューで変更する方法が必要です。 3)イベントcatalog_product_get_final_priceも試してみましたが、これは商品ページが読み込まれたときにのみ発生するようです。そのため、商品の長さまたは幅を追加した後、再度発生しません。 どんなアイデアでも大歓迎です!

3
顧客パスワード変更のイベント/オブザーバー?
お客様がパスワードを変更するイベントにフックする方法を探しています。したがって、誰かが顧客のフロントエンドでパスワードを変更した場合、どこかに電子メールを送信したいと思います。 私はhttp://www.nicksays.co.uk/magento-events-cheat-sheet-1-7/でリストを調べましたが、パスワードを変更するイベントのようには見えません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.