Preise ändern mittels Plugin

Hey,

ich versuche die Preise auf der Detail Seite sowie dann im Warenkorb und in der Kasse zu ändern mit einem Plugin. Ich versuche den Preis zu nehmen zu ändern und zurück zu geben und das aber nur wenn die Subshop ID 5 ist. Aber es funktioniert nicht :frowning:

 true,
            'update' => true,
            'enable' => true
        );
    }

    /**
     * this derived method is called automatically each time the plugin will be installed
     *
     * @return bool | if false is return the installation will failed
     */
    public function install()
    {
        /** Keine Uninstall nötig, da keine DB Tabelle angelegt wird */
        $this->subscribeEvent(
            'Enlight_Controller_Action_Frontend_Listing_Index',
            'onPostDispatchListing'
        );
        $this->subscribeEvent(
            'Enlight_Controller_Action_Frontend_Detail_Index',
            'onPostDispatchDetail'
        );
        $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatch_Frontend',
            'onPostDispatch'
        );
        return true;
    }

    /** Pluginname in einer Extramethode*/
    public function getLabel()
    {
        return 'PreisNeu';
    }

    /** Versionierung des Plugins */
    public function getVersion()
    {
        return '0.0.1';
    }

    /* Preis überschreiben Warenkorb */
    public static function getSubscribedEvents()
    {
        return ['Shopware_Modules_Basket_getPriceForUpdateArticle_FilterPrice' => 'onFilterPrice'];
    }

    /**
     * @param \Enlight_Event_EventArgs $args
     */
    public function onFilterPrice(\Enlight_Event_EventArgs $args)
    {
        //SubshopID ermitteln
        $subshopid = Shopware()->Shop()->getId();

        if ($subshopid = '5') {

            $price = $args->getReturn();
            //$price['price']	= $price['price'] / 1.40;
            $price['price'] = '1';
            $args->setReturn($price);
        }
    }

    /* Preis überschreiben Generell */
    /**
     * @param \Enlight_Event_EventArgs $args
     */
    public function sCalculatingPrice(\Enlight_Event_EventArgs $args)
    {
        //SubshopID ermitteln
        $subshopid = Shopware()->Shop()->getId();

        if ($subshopid = '5') {
            $price = $args->getReturn();
            $price['price'] = '1';
            $args->setReturn($price);
        }
    }
}

 

Hallo Futterwerkstatt,

dein Event Handler onFilterPrice() wird nicht ausgeführt. In der Bootstrap Klasse kannst du die Methode getSubscribedEvents() zum Registrieren der Event Handler nicht nutzen. Dafür müsstest du eine eigene Klasse erstellen. Alternativ kannst du den Event Handler auch in deinem Code in der install Methode registrieren. Hier ist nochmal ein Link zur entsprechenden Doku.

https://developers.shopware.com/developers-guide/event-guide/#subscribers

Du kannst dir auch SwagUserPrice ansehen, da machen wir das ja auch: GitHub - shopwareLabs/SwagUserPrice