Produktbilder unabhängig von der Verwendung von Isotope Lesern oder Listen ausgeben.
<?php
class ImageHelper {
/**
* @param $iProductId ID des Produktes, für das das Produktbild abgerufen werden soll.
* @param $iReaderFrontendModule ID des Frontendmoduls mit dem Dummy-Produktleser.
*/
public static function getProductImage($iProductId, $iReaderFrontendModule)
{
global $objPage;
global $objIsotopeListPage;
// Reader-Modul aus Datenbank holen.
$oReaderModule = \Contao\ModuleModel::findById($iReaderFrontendModule);
// Isotope ProductReader-Modul erstellen.
$oReader = new \Isotope\Module\ProductReader($oReaderModule);
// Produkt aus Datenbank holen.
$oProduct = Isotope\Model\Product\Standard::findAvailableByPk($iProductId);
// Konfiguration für Galerie einsetzen. Original von: Isotope\Modules\ProductReader
$arrConfig = array(
'module' => $oReader,
'template' => ($oReader->iso_reader_layout ? : $oProduct->getRelated('type')->reader_template),
'gallery' => ($oReader->iso_gallery ? : $oProduct->getRelated('type')->reader_gallery),
'buttons' => $oReader->iso_buttons,
'useQuantity' => $oReader->iso_use_quantity,
'jumpTo' => ($objIsotopeListPage ? : $objPage),
);
// Galerie für Produkt erstellen.
$oGallery = \Isotope\Model\Gallery\Standard::createForProductAttribute($oProduct, 'images', $arrConfig);
// MainImage ausgeben.
return $oGallery->generateMainImage();
}
}
?>
<?php
// Beispiel-Aufruf: Produk-ID: 126, Dummy-Produktreader-ID: 25
$sProductImage = ImageHelper::getProductImage(126, 25);
?>
<?php // Gibt nur die Bildquelle aus. ?>
<?php echo $this->src; ?>
<?php // Gibt den img-Tag aus. ?>
<img src="<?php echo $this->src; ?>" itemprop="image" alt="<?php echo $this->alt; ?>" <?php echo $this->size; ?>>
Im templates-Ordner eine Kopie von isotope/templates/gallery/iso_gallery_standard.html5 anlegen, z. B. iso_gallery_single. Das Template den eigenen Bedürfnissen anpassen (siehe Beispiel-Datei iso_gallery_single.html5)
Über die Shop-Konfiguration eine neue Galerie anlegen, z. B. "Single Product". In der erstellten Galerie die Konfiguration für Bildgröße vornehmen. Als eigenes Galerie-Template das zuvor erstellte Template auswählen.
Ein Frontend-Modul vom Typ "Produktleser" anlegen. Dort als Galerie die zuvor angelegte Galerie auswählen, z. B. "Single Product".
Die Bildgenerierung über eine eigene Funktion / Helferklasse ausführen. Siehe Beispiel-Datei ImageHelper.php.