特定の製品タイプの配達の現金を無効にする方法
-
13-12-2019 - |
質問
基本的に私は特定の製品タイプの配達の現金を無効にする必要があります。 基本的には、Mage Storeのストアクレジットを使用しています。これはマゼントの財布用です。 支払いオプションでは、配達の現金を表示しています。その物理的な製品や仮想製品ではありません。だから私はこの製品タイプの配達の現金を無効にする必要があります。
解決
最初に、payment_method_is_active
を使用してONを使用して現在の引用製品の種類によって異なります。
これのコード:
module config.xmlコード:
<global>
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>yourmodel/observer</class>
<method>filterpaymentmethod</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
</global>
.
オブザーバーコードは次のとおりです。
.<?php class YOURNANESPACE_YOURMODULE_Model_Observer { public function filterpaymentmethod(Varien_Event_Observer $observer) { /* call get payment method */ $method = $observer->getEvent()->getMethodInstance(); /* get Quote */ $quote = $observer->getEvent()->getQuote(); $result = $observer->getEvent()->getResult(); if (empty($quote) || (null === $quote)) { return $this; } /* Disable Your payment method for adminStore */ if ($method->getCode() == 'YOUR_PAYMENT_METHOD_CODE') { foreach ($quote->getAllItems() as $item) { // get Cart item product Type // if ($item->getProductType() == 'YourProductType'): $result->isAvailable = false; endif; } } } }
他のヒント
Magento payment_method_is_active
イベント
Magento Extensionの開発方法を知っていると仮定しています[config.xml
app>code>codepool>namespace>package>etc
に書き込みます。
<global>
...
<events>
<payment_method_is_active>
<observers>
<paymentfilter_payment_method_is_active>
<type>singleton</type>
<class>PaymentFilter_Model_Observer</class>
<method>paymentMethodIsActive</method>
</paymentfilter_payment_method_is_active>
</observers>
</payment_method_is_active>
</events>
...
</global>
.
オブザーバの作成ファイルapp/code/codepool>namespace>package/Model/Observer.php
class namespace_package_Model_Observer {
public function paymentMethodIsActive(Varien_Event_Observer $observer) {
$event = $observer->getEvent();
$method = $event->getMethodInstance();
$result = $event->getResult();
$currencyCode = Mage::app()->getStore()->getCurrentCurrencyCode();
if($someTrueConditionGoesHere){
$result->isAvailable = true;
}else{
$result->isAvailable = false;
}
}
}
. これを見てみましょう。これはあなたの問題を解決すると思いますあなたはただあなたが単にあなたが任意の将来の情報を持っていて、イベント - オブザーバーまたはによってモジュールからも、そして検証または条件を実行することができる方法.phtmlファイルを変更する必要があると思いますPHTMLファイルの変更?
https://stackoverflow.com/questions/29819037/disable-Cash.-ON配信用製品
と
https://stackoverflow.com/質問/ 14011348 /無効 - お支払いオプション専用の配達予約 - 特定商品 - Magento
所属していません magento.stackexchange