3

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.

11

1 Answer 1

6

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.

3
  • Hi Dhiren, I am trying the plugin method but on my plugin function afterGetGalleryImagesJson(), I want the product data, how can i do that. $this->getProduct(); didn't work. can you help please Feb 2, 2017 at 5:37
  • @aton1004 Can you tell me what you have try? And what you try to archive? Feb 2, 2017 at 5:49
  • thanks for the reply, actually i wanted product data to check some attribute value before making some changes to the result of gallery , I got it from registry Feb 2, 2017 at 8:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.