Zum Hauptinhalt springen

Umgang mit Assets

In manchen Fällen müssen auch Assets (z. B. Produktbilder oder Videos) exportiert und in Shopware für die weitere Nutzung bereitgestellt werden. Dafür stehen sowohl in Pimcore als auch in Shopware verschiedene Möglichkeiten zur Verfügung.

Pimcore

In Pimcore steht der AssetHelper zur Verfügung. Dieser kann im Adapter über die Methode $this->assetHelper() bezogen werden.

Klasse

Twocream\ShopwareConnectorBundle\Helper\AssetHelper

Methode copyAsset

Die Methode generiert aus dem übergebenen Asset die jeweils angegebenen Thumbnail. Dabei wird das Thumbnail an dem konfigurierten Asset-Pfad sowie unter der konfigurierten Asset-Domain des Exportziels auf dem Dateisystem gespeichert.

Best Practice

Es wird empfohlen, den Asset-Pfad und die Asset-Domain unabhängig von Pimcore zu betrachten, damit die Assets auch dann erreichbar bleiben, wenn Pimcore nicht verfügbar sein sollte.

NameWert
Funktionpublic function copyAsset($asset = null, array $thumbnailNames = [], string $folder = 'media', string $type = self::ASSET_TYPE_DEFAULT, bool $useReducedAsset = false, string $quality = self::QUALITY_STANDARD): array
(Optional) Argument $assetAsset aus Pimcore
(Optional) Argument $thumbnailNamesGibt die Thumbnails an, für die das Asset generiert werden soll
(Optional) Argument $folderOptionaler Unterordner unterhalb des definierten Asset-Pfads, in dem die generierten Dateien abgelegt werden
(Optional) Argument $typestandard | original | free | transparent
(Optional) Argument $useReducedAssetErmöglicht ein reduziertes Asset
(Optional) Argument $qualitystandard | high
Rückgabewertsiehe Ausgabe

Beispiel

protected function prepare($object): array
{
$productImage = $this->assetHelper()->copyAsset(
$object->getImages(),
[
'shopware_1000x1000',
'shopware_3840x2160',
]
);

return [
// ...,
'custom-fields' => [
'images' => $productImage,
],
// ...,
];
}

Ausgabe

[
"1000x1000": "http://pimcore-example-domain.com/media/48/4871/1000x1000/standard/Example.jpg",
"3840x2160": "http://pimcore-example-domain.com/media/48/4871/3840x2160/standard/Example.jpg",
]

Shopware

Auf Shopware-Seite können die Assets in ein zuvor angelegtes Custom-Feld (!) importiert werden. Über dieses Feld kann anschließend die URL zum jeweiligen Thumbnails abgerufen werden.

Beispiel

protected function store(Result $result): ?EntityWrittenContainerEvent
{
// ...

foreach ($result as $entry) {
$records[] = [
// ...,
'customFields' => [
'images' => json_encode($entry['custom-fields']['images'])
],
// ...,
];
}

// ...
}