Magento 2 – Override Magento\Catalog\Block\Product\View\Gallery Block

blocksmagento2overrides

I am working on custom extension and need to override Magento\Catalog\Block\Product\View\Gallery block.

I have followed this method.

In di.xml,

<preference for="Magento\Catalog\Block\Product\View\Gallery" type="[Company]\[Vendor]\Block\Catalog\Product\View\Gallery"/>

In [Company][Vendor]\Block\Catalog\Product\View\Gallery.php

namespace [Company]\[Vendor]\Block\Catalog\Product\View;

class Gallery extends \Magento\Catalog\Block\Product\View\Gallery
{

public function getGalleryImagesJson()
   {

        $imagesItems = [];
        foreach ($this->getGalleryImages() as $image) {
            $imagesItems[] = [
                'thumb' => $image->getData('small_image_url'),
                'img' => $image->getData('medium_image_url'),
                'full' => $image->getData('large_image_url'),
                'caption' => $image->getLabel(),
                'position' => $image->getPosition(),
                'isMain' => $this->isMainImage($image),
            ];
        }
        if (empty($imagesItems)) {
            $imagesItems[] = [
                'thumb' => $this->_imageHelper->getDefaultPlaceholderUrl('thumbnail'),
                'img' => $this->_imageHelper->getDefaultPlaceholderUrl('image'),
                'full' => $this->_imageHelper->getDefaultPlaceholderUrl('image'),
                'caption' => '',
                'position' => '0',
                'isMain' => true,
            ];
        }
     return json_encode($imagesItems);
    }
}

When I do this, More Views Images of the product is don't show any more.

Can you help me into this?

Thanks in advance.

Best Answer

I found the solution. I am doing the same thing by using the plugin functionality of magento2.

For that in di.xml file specify plugin.

<type name="Magento\Catalog\Block\Product\View\Gallery">
        <plugin name="plugin_block_catalog_product_view_gallery"
                type="[Company]\[Vendor]\Block\Catalog\Product\View\Gallery"
                sortOrder="10"
                disabled="false"/>
 </type>

It is better to used.

Related Topic