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.
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.
Name | Wert |
---|---|
Funktion | public 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 $asset | Asset aus Pimcore |
(Optional) Argument $thumbnailNames | Gibt die Thumbnails an, für die das Asset generiert werden soll |
(Optional) Argument $folder | Optionaler Unterordner unterhalb des definierten Asset-Pfads, in dem die generierten Dateien abgelegt werden |
(Optional) Argument $type | standard | original | free | transparent |
(Optional) Argument $useReducedAsset | Ermöglicht ein reduziertes Asset |
(Optional) Argument $quality | standard | high |
Rückgabewert | siehe 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'])
],
// ...,
];
}
// ...
}