In Shopware 4 waren alle Produktbilder in media/image. In Shopware 5 wurden die Bilder in Unterordner verschoben.
So erhält man den Pfad dazu:
Einen Bilderpfad erhält man z.B. über diesen Select
private function getImageUrl($detail) { // [fh] 20161017-112100 - This function returns the image url of the first image as a return value. $articleDetailID = $detail->getId(); $articleID = $detail->getArticleId(); $query = "SELECT s_media.path, rel.option_id, s_articles_img.position as pos, s_articles_img.description as description, s_articles_img_attributes.attribute1 as imageCaption FROM s_media JOIN s_articles_img ON s_articles_img.media_id = s_media.id OR s_media.name = s_articles_img.img JOIN s_article_img_mappings ON s_article_img_mappings.image_id = s_articles_img.id JOIN s_article_img_mapping_rules ON s_article_img_mapping_rules.mapping_id = s_article_img_mappings.id JOIN s_article_configurator_option_relations as rel ON rel.option_id = s_article_img_mapping_rules.option_id JOIN s_articles_img_attributes ON s_articles_img_attributes.imageID = s_articles_img.id WHERE rel.article_id = '$articleDetailID' AND s_articles_img.articleID ='$articleID' AND rel.option_id != 82 GROUP BY path ORDER BY pos"; $result = Shopware()->DB()->fetchAll($query); $path = $result[0]['path']; return $path; }
Funktionsaufruf:
$imageUrlOld = $this->getImageUrl($article);
Ausgegeben würde der Pfad ($imageUrlOld) so ähnlich: media/image/3477.jpg
Oder alle Thumbnails über die Shopware Methoden und das Artikel Objekt:
if($article) { $imagesArrayCollection = $article->getArticle()->getImages(); if($imagesArrayCollection) { $images = $imagesArrayCollection->first(); if($images) { $media = $images->getMedia(); if($media){ $articleImages = $images->getMedia()->getThumbnails(); } } } }
Jetzt muss der Pfad (oder die Pfade bei den Thumbnails) umgewandelt werden:
$mediaService = Shopware()->Container()->get('shopware_media.media_service'); $imageFullUrl = $mediaService->getUrl($imageUrlOld);
Ausgegeben würde dieser Pfad ($imageFullUrl) so ähnlich: https://shopware.4uweb.de/media/image/ba/98/da/3477.jpg
Um z.B. für ein PDF einen Serverpfad zu generieren hilft dies:
$protocol = empty($_SERVER['HTTPS']) ? 'http' : 'https'; $domain = $_SERVER['SERVER_NAME']; $root = $_SERVER['DOCUMENT_ROOT']; $url = $protocol.'://'.$domain; $imageUrl = str_replace($url, $root, $imageFullUrl);
Ausgegeben würde dieser Pfad ($imageUrl) so ähnlich: /var/www/fvhg/test.forum-verlag.com/media/image/ba/98/da/3477.jpg