Wie Preise der Produktvarianten ausgeben?

Im Shopware-Backend können je Produkt Varianten angelegt werden. Wie können deren Preise als Liste im Frontend ausgegeben werden? Hintergrund: Das Array sConfigurator, das die Produktvarianten kapselt, enthält nur den Parameter (z.B: die Größe eines Produkts), nicht jedoch den Preis der jeweiligen Variante: [esd] => [articleName] => CARBON D [taxID] => 1 [tax] => 19 [instock] => 34 [isAvailable] => 1 [weight] => 0 [shippingtime] => [pricegroupActive] => [pricegroupID] => [length] => 0 [height] => 0 [width] => 0 [laststock] => [additionaltext] => [datum] => 2015-01-23 [sales] => 0 [filtergroupID] => 1 [priceStartingFrom] => 140,95 [pseudopricePercent] => [sVariantArticle] => [sConfigurator] => Array ( [0] => Array ( [groupID] => 5 [groupname] => Stocklänge [groupdescription] => [selected_value] => [selected] => [user_selected] => [values] => Array ( [5] => Array ( [optionID] => 5 [groupID] => 5 [optionname] => 115 cm [user_selected] => [selected] => [selectable] => 1 ) [1] => Array ( [optionID] => 1 [groupID] => 5 [optionname] => 120 cm [user_selected] => [selected] => [selectable] => 1 ) [2] => Array ( [optionID] => 2 [groupID] => 5 [optionname] => 125 cm [user_selected] => [selected] => [selectable] => 1 ) [3] => Array ( [optionID] => 3 [groupID] => 5 [optionname] => 130 cm [user_selected] => [selected] => [selectable] => 1 ) ) ) ) Vielen Dank für jede Hilfe!

Hast Du im Frontend Zugriff auf die Klasse “Article” und “Detail”? Die Preise sind im Article.mainDetail.prices bzw. für die Varianten in Article.details.Prices. Siehe auch: Shopware/Models/Article/Article.php Shopware/Models/Article/Detail.php Hoffe das hilft Dir weiter. Gruss Mark

1 Like

Hallo Mark, vielen Dank für Deine Antwort. Die Datenmodelle Shopware/Models/Article/Article.php Shopware/Models/Article/Detail.php habe ich mir angesehen. Mir ist jedoch noch unklar, wie man im Frontend-Template mit Smarty an die Preise der Varianten herankommt. Ich habe mir das komplette Article-Array mit {$sArticle|@print_r} ausgeben lassen. Dort tauchen die Preise der Varianten nicht auf. Muss man ein Plugin schreiben oder kaufen, das die Preise der Varianten aus der Datenbank lädt? Mit vielen Grüßen Thorsten

Hallo Mark, vielen Dank für Deine Antwort. Die Datenmodelle Shopware/Models/Article/Article.php Shopware/Models/Article/Detail.php habe ich mir angesehen. Mir ist jedoch noch unklar, wie man im Frontend-Template mit Smarty an die Preise der Varianten herankommt. Ich habe mir das komplette Article-Array mit {$sArticle|@print_r} ausgeben lassen. Dort tauchen die Preise der Varianten nicht auf. Muss man ein Plugin schreiben oder kaufen, das die Preise der Varianten aus der Datenbank lädt? Mit vielen Grüßen Thorsten

Hallo Thorsten Eine fertige Lösung kannich gerade Dir nicht anbieten. aber schau mal das Beispiel dieses Plugins an Eventuell hilft es als startpunkt. http://community.shopware.com/Varianten … _1029.html Zu den Fragen. Ja Du musst selber ein Plugin schreiben weil heute das „sArticle“ eine Variable bzw. ein einfacher Array ist die im Controller „Details“ zusammengestellt ist und nicht wie manes erwarten würde vom Typ Model „Shopware\Models\Article“ ist. Um zu verstehen was Du heute in den Template für Daten hast, schau Dir am Besten „/Shopware/engine/Shopware/Controllers/Frontend/Detail.php“ an. Dort im „IndexAction()“ wir der Artikel zwar über das Model API geholt wird aber später in ein Array umgewandelt und dem Template zugewiesen. Dabei werden die Varianten nicht im Array untergebracht. Warum diese Umwandlun in ein Array so gemacht wird kann ich nicht sagen. Der ursprüngliche Programmierer wird schon seine Gründe gehabt haben. Die Lösung ist ein Plugin mit eigenem Controller und entsprechende Templates zu schreiben. Der Controller müsste für das Event "Enlight_Controller_Action_PostDispatch_Frontend_Detail " subscribed werden und dann würde ich einfach den Origial Artikel im indexAction holen und der View dann zuweisen. $article = Shopware()-\>Modules()-\>Articles()-\>sGetArticleById($id) $this-\>View()-\>myArticle = $article; Im Template entsprechend dann an die Varianten ran navigieren und die Dinge ausgeben. Hoffe das hilft. Kannst ja dann Deine Lösung hier posten ; ) Gruss Mark

Hallo Thorsten,

hast du hierzu eine Lösung gefunden?

 

Gruß

Ich frage auch mal an, ob es hierfür eine Lösung gibt. Oder ob jemand einen Tipp geben kann, wie ich alle Detail-Objekte eines Produktes auslesen kann?