Ich habe ein Freitextfeld Einfachauswahl für die Eigenschaften Gruppen erstellt, mit der Entity Mediamanager. Dann habe ich der Gruppe ein entsprechendes Bild zugewiesen.
Im Frontend versuche ich nun dieses Bild auszugeben, bekomme allerdings irgendeine komische .tpl URL zurück, nicht die tatsächliche Image URL.
$sProperty.attributes.core->get('group_image')
Als Rückgabewert bekomme ich:
home/vagrant/code/project/var/cache/production_201807181357/templates/frontend_template_de_DE_1/5b/fa/cf/5bfacf29664871673c68fa21e0a7867979b003e7.snippet.index.tpl.php:4631:string '20' (length=2)
Kann mir jemand sagen, was ich hier ggf. falsch mache? Ich möchte im Frontend lediglich die Image URL ausgeben, sodass ich das Freitextfeld group_image / das Bild im Frontend anzeigen kann.
Die „Medienauswahl“ bei den Freitextfeldern speichert nur die Media-ID, nicht die URL.
Du müsstest dir also über die ID in PHP erstmal den Link im aktuellen Context (Shop) erzeugen und an das Template geben. Sonst erhälst du nur eine ID - scheint bei dir „20“ zu sein.
1 „Gefällt mir“
@Moritz Naczenski schrieb:
Die „Medienauswahl“ bei den Freitextfeldern speichert nur die Media-ID, nicht die URL.
Du müsstest dir also über die ID in PHP erstmal den Link im aktuellen Context (Shop) erzeugen und an das Template geben. Sonst erhälst du nur eine ID - scheint bei dir „20“ zu sein.
Okay, dann schaue ich mal ob ich das so hinbekomme
Und das Image hole ich mir dann über das Property/Group Model über die Method getAttribute?
Bzw. da hole ich mir die ID vom Image her und muss das dann irgendwie die URL über das Media Model generieren und im Frontend ausgeben? Habe ich das so richtig verstanden?
Ziemliche Umwege - Gibt es einen Grund, warum nicht einfach ganz normal die URL vom Freitextfeld ausgegeben wird?
@christiantrade schrieb:
Ziemliche Umwege - Gibt es einen Grund, warum nicht einfach ganz normal die URL vom Freitextfeld ausgegeben wird?
Naja, es gibt halt nicht „die URL“ zu deinem Bild. Das ändert sich ja je nach Context (bspw. Subshop) - aber auch abhängig von der Medienstrategie (bspw. CDN). Da einen festen Wert zu speichern, wäre sehr undynamisch.
Die Attribute kannst du in deinem Plugin recht einfach laden:
$service = $this->container->get('shopware_attribute.data_loader');
$sqlUserAttributes = [
'attributes' => $service->load('s_user_attributes', $userID)
];
Das wäre jetzt ein Beispiel für die User-Attribute, kannst du ja entsprechend anpassen.
Danach kannst du den Media-Service nutzen um die URL zu erzeugen: MediaService
1 „Gefällt mir“