Frage

Grundsätzlich muss ich die Nachnahme für bestimmte Produkttypen deaktivieren.Grundsätzlich verwende ich das Guthaben von Mage Store.Dies ist für die Brieftasche in Magento.Bei der Zahlungsoption wird die Zahlung per Nachnahme angezeigt.Es handelt sich nicht um ein physisches oder virtuelles Produkt.Deshalb muss ich die Nachnahme für diesen Produkttyp deaktivieren.

War es hilfreich?

Lösung

Sie können dies tun, indem Sie Magento Event/Observer

Zuerst verwenden payment_method_is_active Die Deaktivierung hängt vom aktuellen Angebotsprodukttyp ab.

Code dafür:

Modul config.xml-Code:

<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>

Beobachtercode ist:

<?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;
            }
        }
    }

}

Andere Tipps

Dafür müssen Sie Magento verwenden payment_method_is_active Ereignis

Ich gehe davon aus, dass Sie wissen, wie man eine Magento-Erweiterung entwickelt. Wenn nicht, überprüfen Sie dies bitte Mit dieser Antwort erhalten Sie das gesamte ModulSchreiben Sie diesen Code in Ihr config.xml aus 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>

Beobachterdatei erstellen 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;
                }

        }

    }

Haben Sie so aussehen, dass dies der Meinung ist, dass sich Bee Ihr Problem lösen würde. Sie müssen nur die Methoden.phtml-Datei und dessen Ändern von Zitaten info ändern und die Validierungen oder Bedingungen sowie vom Modul von Event - Beobachter oder von durchführenDie Änderung in der PHTML-Datei?

https://stackoverflow.com/questions/29819037/disable-cash-On-lieferung-für-spezifische Produkte

und

https://stackoverflow.com/ fragen / 14011348 / deaktiviert-zahlungsoptionen-only-cash-on-lating-for-spects-product-magento

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top