Kindartikel Bilder Fallback

Version: Oxid PE 6.2.3

Moin,

ich importiere aktuell meine Artikelbilder so, dass ich einfach die Bilderpfade in den Artikel schreibe.

Jetzt möchte ich jedoch ebenfalls das die Kindartikel die Bilder der Eltern als Väter bekommen.

z.B.

oxartnum: 12345 oxpic1: 12345.jpg (Bild gepflegt)
oxartnum: 12345-1 oxparent: 12345 oxpic1: 12345-1.jpg (Bild gepflegt)
oxartnum: 12345-2 oxparent: 12345 oxpic1: 12345-2.jpg (Kein Bild gepflegt)

Wenn ich nun 12345-1 öffne soll als Bild “12345-1.jpg” aufgerufen werden, wird jedoch 12345-2 geöffnet soll als Bild “12345.jpg” kommen.

Ich habe mich bereits durch das Article Model, PictureHandler und Config durchgearbeitet.

Es wäre großartig wenn mir jemand auf die Sprünge helfen könnte,

Vielen Dank!

D.h. das Feld ist nicht leer, aber das Bild nicht da? Dann musst getPictureUrl bearbeiten und _isFieldEmpty um file_exists() erweitern.

1 Like

Moin :slight_smile:

meines Wissens gibt OXID eShop Framework die Pfade vor, daher werden nur die Dateinamen in der Datenbank gespeichert und es wird erwartet, dass das Masterbild im dafür vorgesehenen Bildpfad (Verzeichnis) liegt.

Diese Logik müsstest über eine Modulüberladung der Methode welche die Bildpfade + Dateinamen zurückliefert implementieren.

1 Like

Moin,

danke für die Antwort, ich habe versucht und teste nun ob das Fileexistiert jedoch verstehe ich nicht ganz den Punkt wo das Vaterimage überladen wird…

Moin,

danke für die Antwort, ich habe das ganze bereits in ein Modul verpackt ich übersteuere aktuell die getPictureUrl und _isFieldEmpty des Article Models jedoch finde ich nicht den Punkt wo das Vaterimage nachgeladen wird…

Okay dann hoffe ich, dass du die Article Klasse überladen hast und dort die Methode getPictureUrl() definiert hast um Sie durch Deine Anpassung zu überladen. (Schritt 1)

Dann wäre der erste Punkt um die Überladungskette einzuhalten, dass Du

$return = parent::getPictureUrl($iIndex);

den Stand holst aus dem Standard bzw. aus anderen Überladungen. (Schritt 2)

Dann musst Du natürlich wie erwähnt prüfen ob das in der Datenbank hinterlegte Bild vorliegt. (Schritt 3)

Erst wenn kein Bild vorliegt brauchst Du Deine Anpassung, dass Du Dir über den Schlüssel oxarticles__oxparentid prüfst ob es ein Variant oder Eltern Artikel ist um dann entsprechend das nächstmögliche Bild abzufragen. Dazu kannst Du einfach die Methode

\OxidEsales\Eshop\Core\Registry::getPictureHandler()->getProductPicUrl(...)

in einer While-Schleife solange aufrufen, bis Du ein Bild zurück erhälst. (Schritt 4)

Ergänzung: Damit Du in keine Endlosschleife erzeugst die Durchläufe nach der max. Anzahl von möglichen Bilder begrenzen als Abbruchbedingung.

Am Besten legst Dir eine Helfer Methode an um zu prüfen ob das Bild auch vorhanden oder prüfst ob es eine bestehende Methode gibt die verwenden kannst.

1 Like

Vielen vielen Dank, hat super geklappt!

1 Like