Service Extensions

Guten Morgen, ich möchte gerne die Preise manipulieren. Dazu will ich mich hier einklinken: https://github.com/shopware/shopware/bl … e.php#L257 Ich kann mit jetzt auf den Product List Service hängen, und das komplette Produkt Object mnipulieren: Enlight\_Bootstrap\_AfterInitResource\_shopware\_storefront.list\_product\_service /\*\* \* @inheritdoc \*/ public function getList(array $numbers, Struct\ProductContextInterface $context) { $products = $this-\>service-\>getList($numbers, $context); /\*\*@var $product Struct\ListProduct\*/ foreach ($products as $product) { //Hier meine Manipulation } return $products; } Einfacher wäre es doch sicher, wenn ich direkt die Function “calculatePrice” manipulieren könnte. Das geht sicher auch irgendwie. Hat mir hierzu jemand eine Idee oder einen Denkanstoss? Danke

Niemand eine Idee?

Hi, schau doch bitte in unsere Entwickler Dokumentation, dort ist alles genau beschrieben: programmierung-f103/categoryfacet-im-frontend-nutzen-t29910.html Gruß Oliver

Hallo Oliver, danke für deine Antwort. Dein Link verstehe ich nicht. Da geht es ja um die SearchBundle und die Filter etc. Ich habe die Doku jetzt schon ein paar mal gelesen und auch die Testplugins durchgeschaut. Ich erkläre jetzt noch mal mein Probem. ich will hier kein fertigen Code, sondern nur Denkanstöße. 1. Wo liegt der Unterscheid zwischen HauptService und UnterSrevices? Dazu habe ich nichts gefunden: <service id="shopware_storefront.list_product_service" class="Shopware\Bundle\StoreFrontBundle\Service\Core\ListProductService"> <argument type="service" id="shopware_storefront.list_product_gateway"></argument> <argument type="service" id="shopware_storefront.graduated_prices_service"></argument> <argument type="service" id="shopware_storefront.cheapest_price_service"></argument> <argument type="service" id="shopware_storefront.price_calculation_service"></argument> <argument type="service" id="shopware_storefront.media_service"></argument> <argument type="service" id="shopware_storefront.marketing_service"></argument> <argument type="service" id="shopware_storefront.vote_service"></argument> <argument type="service" id="events"></argument> </service> Da meine Änderungen mit dem Price zutun haben, muss ich auf price_calculation_service zugreifen. Das funktioniert im meinem Fall bereits. Der Zugriff funktioniert identisch, wie für list_product_service. D.h. bzgl. dem Zugriff gibt es keinen Unterschied von einem HauptService zu eine UnterService? 2. list_product_service gibt es nur eine public Function. Diese greift wiederum auf einige privat Functions zu. U.A. gibt es eine Funktion welche prüft ob es einen Kundengruppenrabatt gibt. Genau hier will ich eingreifen. Ich will Artikel von Kundenrabatt ausschließen. https://github.com/shopware/shopware/bl … e.php#L276 Hier für hätte ich gerne den “Best Practise” Weg. Gibt es eine Möglichkeite genau an diese Stell zu kommen? Ich hoffe jetzt ist es etwas verständlicher.

Evtl. hilft dir das hier weiter: http://shopware-blog.com/additionaltext … schreiben/

Morgen Thomas, danke für den Link. An diesen Ansatz (Replace) hatte ich auch schon gedacht. Eig. wollte ich verhintern, dass ich diesen Service komplett ersetzen muss. Aber scheinbar gibt es keinen anderen Weg um an die privat function ran zu kommen.