Aktuell teste ich mal einige Sachen in Shopware aus. Der Testshop ist ein aktueller mit 5.5.8 als Version. Hierzu habe ich eigene Freitextfelder im Backend bei s_order_basket_attributes definiert und mit Inhalten versehen. Im Frontend werden diese eigenen Freitextfelder jedoch nicht ausgegeben - nur die Standard-Felder mit ob_attr1 bis ob_attr6. Im Template habe ich das ganze mit {$sBasketItem|print_r} kontrolliert.
Ich denke hierbei handlet es sich um einen Shopware-Fehler.
Nein, werde ich vorerst nicht. Wenn dann müsste es global erweitert werden, also nicht nur um meine Freitextfelder bezogen. Das sollte ggf. mal bei einem nächsten SW Update passieren.
erst einmal ein Fehler / Bug ist das nicht, weil es Shopware einfach gar nicht vorgesehen hat und es auch für den Betrieb des Shops nicht nötig ist.
Die “gängige” Lösung, die man wahrscheinlich bei den meisten Plugins für solch einen Zweck findet, ist es eigentlich, sich einfach an Shopware_Modules_Basket_GetBasket_FilterSQL zu hängen, sich dort das bestehende Query zu holen und dann einfach über PHP - replace oder ähnliches ob_attr6 durch ob_attr6, s_order_basket_attributes.my_attribute zu ersetzen. Absolut updatesicher, man überschreibt nicht wirklich irgendwas und es funktioniert tadellos und man hat dann auch die Werte seiner eigenen Attribute. Den Weg nutzt wahrscheinlich auch jeder, der die eigenen Freitextfelder dort benötigt.
erst einmal ein Fehler / Bug ist das nicht, weil es Shopware einfach gar nicht vorgesehen hat
Ich konnte bei anderen Plugins sehen, dass hier durchaus Freitextfelder angelegt werden. Ok, sie werden halt nicht im Frontend direkt im Template ausgegeben, was bei den meisten Freitextfeldern jedoch der Fall ist. Von daher bin ich von einem Fehler/Bug ausgegangen. In meinem Fall benötige ich dies für ein Plugin um NICHT auf die Standard-Attribute zugreifen und so ggf. ein Konflikt zu umgehen. Eine genauere Erklärung führt hier jetzt aber zu weit. Aktuell benutzte ich wieder die Standard-Atrribute.
Unabhängig davon hab ich dies aber dennoch als Ticket angelegt.
Hast du im Backend mal versucht nach Erstellung deiner Freitextfelder den Button „Model generieren“ zu verwenden?
Nein, das bringt nichts, denn wie oben schon beschrieben werden im Core nur die Standard-Atrribute ausgelesen. Alle selbstdefinierten werden nicht erfasst.
naja ich habe ja oben erklärt, wie man es updatesicher und schnell macht (und es auch die meisten Plugins machen, die Sie dort benötigen), dass die Freitextfelder im Frontend verfügbar sind.
Wie erwähnt ist es aber auch kein Fehler, nur weil an irgendeiner Stelle irgendwelche eigene Freitextfelder nicht übertragen werden - das kann man ja zur Not auch selbst erledigen. Die Standard - Freitextfelder werden ja übertragen, somit ist im Prinzip die Funktion für Shopware korrekt erfüllt.
Das zeigt mal wieder eindrucksvoll, warum Shopware so ein Leuchtturm unter den Performance-Wundern ist. Anstatt per Join einfach alle Attribute aus sBasket heraus zu übergeben, muss sich jedes kleine Plugin für sein Attribut in das Filter-Event einklinken… Kein Wunder, dass Shopware, was Performance betrifft, eine Katastrofe ist.
Das ist wohl war. Zumindest bei anderen Plugins kann ich sehen, dass dieses Spiel auch nur bedingt funktioniert. In meinem Falle muss der Wert bis zur Bestellmail durchgeschliffen werden. Bei fremdem Plugins scheint das wohl auch so ein Problem zu sein. Ok, weil mein Plugin jetzt nur bei einem bestimmten Kunden zum Einsatz kommt, kann ich auf die originalen Attribute aufspringen, was ich in der Regel jedoch selten mache weil mir das schlichtweg zu unsicher ist wenn ca. 30 andere Plugins im Shop drin sind.
erst einmal ein Fehler / Bug ist das nicht, weil es Shopware einfach gar nicht vorgesehen hat und es auch für den Betrieb des Shops nicht nötig ist
das sehe ich allerdings nicht so. Im Shopware Backend wurde hierzu bei der Freitext-Verwaltung die Möglichkeit geschaffen, dass man bei s_order_basket_attributes eigene Freitextfelder definieren kann. Das macht keinen Sinn, wenn man später im Template nicht darauf zugreifen kann. Von daher ist das für mich ein Fehler.