Di Magento 1 saya selalu menggunakan
$_product->getMediaGallery('images')
Tetapi dalam sumber dari Magento 2 saya melihat
$productImage = $block->getImage($_product, $image);
echo $productImage->toHtml();
Itu hanya mendapatkan gambar produk pertama. Bagaimana saya mendapatkan gambar kedua atau ketiga (tidak hanya gambar dasar)?
Fungsi GetMediaGallery tidak ada?
Pembaruan: $ _product-> getMediaGalleryImages () melempar NULL dalam var_dump
dan
untuk getMediaGallery dan getMediaGalleryEntries saya mendapatkan kesalahan pemberitahuan yang sama:
Undefined property: Magento\Catalog\Model\Product\Interceptor::$getMediaGallery
\Magento\Catalog\Model\Product::getMediaGalleryImages()
Jawaban:
Pemuatan kategori telah berubah di 2.1, jadi ini mungkin hanya relevan dari 2.1 dan seterusnya:
Galeri gambar ditambahkan ke produk melalui antarmuka ekstensi yang ditentukan melalui di.xml. Hasilnya adalah bahwa kita dapat secara manual membuat instance dari kelas ReadHandler galeri dan melewatkan produk untuk memuat semua gambar galeri.
Seperti biasa di Magento 2 cara terbaik untuk membuat instance suatu kelas adalah melalui metode __construct (), jadi inilah kelas blok rintisan:
Dalam templat Anda, dengan asumsi Anda memiliki $ produk dimuat melalui koleksi produk, Anda akan dapat menelepon:
sumber
Gunakan kode di bawah ini untuk mendapatkan semua gambar galeri di halaman daftar produk:
sumber
buat helper misalnya:
panggil dan gunakan di dalam list.phtml Anda: $ _helperGallery = $ this-> helper ('Ibnab \ Common \ Helper \ Data'); sekarang Anda dapat menggunakan dengan produk yang disebut saat ini di dalam untuk masing-masing (dengan teknik Anda):
sumber lengkap tentunya
sumber
Ada fungsi yang tersedia di magento
Magento\Catalog\Model\ResourceModel\Product\Collection::addMediaGalleryData()
yang akan menambahkan gambar galeri media ke koleksi produk Anda.Cukup gunakan di koleksi Anda seperti,
Dan Anda akan bisa mendapatkan gambar galeri media menggunakan
sumber
Anda dapat menggunakan metode yang sama persis seperti Magento 1:
Juga, Magento 2 menyediakan metode baru untuk mendapatkan galeri media sebagai array:
sumber
mengembalikan array dengan gambar galeri
sumber
sumber