In Magento 1 habe ich immer verwendet
$_product->getMediaGallery('images')
Aber in der Quelle von Magento 2 sehe ich
$productImage = $block->getImage($_product, $image);
echo $productImage->toHtml();
Es wird nur das erste Produktbild angezeigt. Wie bekomme ich das zweite oder dritte Bild (nicht nur das Basisbild)?
GetMediaGallery-Funktion existiert nicht?
Update: $ _product-> getMediaGalleryImages () löst NULL in einem var_dump aus
und
Für getMediaGallery und getMediaGalleryEntries erhalte ich den gleichen Fehler:
Undefined property: Magento\Catalog\Model\Product\Interceptor::$getMediaGallery
\Magento\Catalog\Model\Product::getMediaGalleryImages()
Antworten:
Das Laden der Kategorie hat sich in 2.1 geändert, daher ist dies möglicherweise erst ab 2.1 relevant:
Die Bildergalerie wird dem Produkt über eine Erweiterungsschnittstelle hinzugefügt, die über di.xml definiert ist. Das Ergebnis ist, dass wir manuell eine Instanz der ReadHandler-Klasse der Galerie erstellen und ein Produkt übergeben können, um alle Galeriebilder zu laden.
Wie in Magento 2 üblich, können Sie eine Klasse am besten über die Methode __construct () instanziieren. Hier ist also eine Stub-Block-Klasse:
Angenommen, Sie haben $ product über eine Produktsammlung geladen, können Sie in Ihrer Vorlage Folgendes aufrufen:
quelle
Verwenden Sie den folgenden Code, um alle Bilder der Galerie auf der Produktlistenseite abzurufen:
quelle
Helfer erstellen zum Beispiel:
Rufen Sie auf und verwenden Sie es in Ihrer list.phtml: $ _helperGallery = $ this-> helper ('Ibnab \ Common \ Helper \ Data'); Jetzt können Sie mit aktuell aufgerufenen Produkten für jedes (mit Ihrer Technik) verwenden:
die komplette Quelle natürlich
quelle
In Magento ist eine Funktion verfügbar
Magento\Catalog\Model\ResourceModel\Product\Collection::addMediaGalleryData()
, mit der Sie Ihrer Produktkollektion Bilder aus der Mediengalerie hinzufügen können.Verwenden Sie es einfach auf Ihrer Sammlung wie,
Und Sie können Mediengalerie-Bilder mit erhalten
quelle
Sie können genau die gleiche Methode wie Magento 1 verwenden:
Außerdem bietet Magento 2 eine neue Methode, um die Mediengalerie als Array abzurufen:
quelle
Gibt ein Array mit den Galeriebildern zurück
quelle
quelle