質問

基本的に私は特定の製品タイプの配達の現金を無効にする必要があります。 基本的には、Mage Storeのストアクレジットを使用しています。これはマゼントの財布用です。 支払いオプションでは、配達の現金を表示しています。その物理的な製品や仮想製品ではありません。だから私はこの製品タイプの配達の現金を無効にする必要があります。

役に立ちましたか?

解決

Magento Event/Observer

最初に、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

ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top