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.

5

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.

  • 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 – aton1004 Feb 2 '17 at 5:37
  • @aton1004 Can you tell me what you have try? And what you try to archive? – Dhiren Vasoya Feb 2 '17 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 – aton1004 Feb 2 '17 at 8:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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