Stefanmelz of slashworks
3/20/2017 - 2:05 PM

Produktbilder unabhängig von der Verwendung von Isotope Lesern oder Listen ausgeben.

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; ?>>

Galerie-Template erstellen

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)

Galerie anlegen

Ü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.

Dummy Produktleser-Modul anlegen

Ein Frontend-Modul vom Typ "Produktleser" anlegen. Dort als Galerie die zuvor angelegte Galerie auswählen, z. B. "Single Product".

Bild-Generierungs-Funktion aufrufen

Die Bildgenerierung über eine eigene Funktion / Helferklasse ausführen. Siehe Beispiel-Datei ImageHelper.php.