Hi Flo,
wie versprochen hatte ich mich heute Vormittag nochmals mit dem Thema beschäftigt und eine erstes Plugin zu dem Thema erstellt. Von der Konfiguration her ist es noch sehr rudimentär aber vielleicht hilft es dir auch weiter.
Kannst es dir herunterladen unter:
Ansonsten habe ich mich einfach an das Listing im Frontend gehängt. Das Plugin wird dabei auch nur für das Listing der Hersteller ausgeführt. Im Backend konfiguriert werden muss der Spaltenname des Freitextfeldes welches im Frontend ausgegeben werden soll. Werde das die Tage noch etwas sauberer gestalten. Aber vielleicht hilft es dir ja auch weiter…
Anbei zur Vollständigkeit die aktuelle Klasse. Bei Fragen kannst dich gerne melden. Bei mir hat das Plugin in zwei Shops auf jeden Fall funktioniert :)
Liebe Grüße
Kevin
'onSecureDetailPostDispatch'
];
}
/**
* @param Enlight_Event_EventArgs $arguments
*/
public function onSecureDetailPostDispatch(Enlight_Event_EventArgs $arguments)
{
/**@var $controller \Shopware_Controllers_Frontend_Detail */
$controller = $arguments->get('subject');
$connection = $this->container->get('dbal_connection');
$controller->View()->addTemplateDir($this->getPath() . '/Resources/views');
$config = $this->container->get('shopware.plugin.config_reader')->getByPluginName($this->getName());
$mediapathComplete = '';
//Implement only for Manufacturer Action
if($controller->Request()->getActionName() == 'manufacturer' && isset($config['supplierAttribute']))
{
//Get manufacturer id from params
$manufacturerId = $controller->Request()->getParam('sSupplier', null);
//Check if manufacturerId exists
if(isset($manufacturerId))
{
//get Manufacturer from manufacturer service
/**@var $manufacturer Manufacturer*/
$manufacturer = $this->container->get('shopware_storefront.manufacturer_service')->get(
$manufacturerId,
$this->container->get('shopware_storefront.context_service')->getShopContext()
);
//Check if manufacturer exists
if(isset($manufacturer))
{
//Now check if an image exists
$manufacturerArray = json_decode(json_encode($manufacturer->getAttribute('core')), true);
if(array_key_exists($config['supplierAttribute'], $manufacturerArray))
{
$manufacturerImage = $manufacturer->getAttribute('core')->get($config['supplierAttribute']);
}
else
{
$manufacturerImage = null;
}
if(isset($manufacturerImage))
{
//Get Shopware Mediaservice
$mediaservice = $this->container->get('shopware_media.media_service');
//Build SQL for media path
$mediapath = $connection->fetchColumn(
'SELECT path FROM s_media WHERE id = :mediaId',
array(':mediaId' => $manufacturerImage)
);
if($mediaservice->has($mediapath) == 1)
{
$mediapathComplete = $mediaservice->getUrl($mediapath);
}
}
}
}
}
$controller->View()->assign('kschmidManufacturerImage', $mediapathComplete);
}
}