Dans Magento 1, j'ai toujours utilisé
$_product->getMediaGallery('images')
Mais dans la source de Magento 2, je vois
$productImage = $block->getImage($_product, $image);
echo $productImage->toHtml();
Il n'obtient que la première image du produit. Comment obtenir la deuxième ou la troisième image (pas seulement l'image de base)?
La fonction GetMediaGallery n'existe pas?
Mise à jour: $ _product-> getMediaGalleryImages () lève NULL dans un var_dump
et
pour getMediaGallery et getMediaGalleryEntries, j'obtiens la même erreur de notification:
Undefined property: Magento\Catalog\Model\Product\Interceptor::$getMediaGallery
\Magento\Catalog\Model\Product::getMediaGalleryImages()
Réponses:
Le chargement des catégories a changé en 2.1, donc cela ne peut être pertinent qu'à partir de 2.1:
La galerie d'images est ajoutée au produit via une interface d'extension définie via di.xml. Le résultat est que nous pouvons créer manuellement une instance de la classe ReadHandler de la galerie et passer un produit pour charger toutes ses images de la galerie.
Comme d'habitude dans Magento 2, la meilleure façon d'instancier une classe est via la méthode __construct (), voici donc une classe de bloc de stub:
Dans votre modèle, en supposant que $ product soit chargé via une collection de produits, vous pourrez appeler:
la source
Utilisez le code ci-dessous pour obtenir toutes les images de la galerie sur la page de liste des produits:
la source
créer une aide par exemple:
appeler et utiliser dans votre list.phtml: $ _helperGallery = $ this-> helper ('Ibnab \ Common \ Helper \ Data'); maintenant vous pouvez utiliser avec le produit appelé actuel à l'intérieur de chacun (avec votre technique):
la source complète bien sûr
la source
Il existe une fonction disponible dans magento
Magento\Catalog\Model\ResourceModel\Product\Collection::addMediaGalleryData()
qui ajoutera des images de galerie multimédia à votre collection de produits.Utilisez-le simplement sur votre collection comme,
Et vous pourrez obtenir des images de la galerie multimédia en utilisant
la source
Vous pouvez utiliser exactement la même méthode que Magento 1:
De plus, Magento 2 fournit une nouvelle méthode pour obtenir la galerie multimédia en tant que tableau:
la source
renvoie un tableau avec les images de la galerie
la source
la source