Introduction

Default X-Cart lazy resizes images and this article describes how to disable this process.

To illustrate the image-resizing process, imagine that you uploaded 5000px x 5000px product image and this image is used for thumbnail. Default thumbnail size is 160px x 160px and showing this huge image to a client without resizing would unnecessarily slow down the load time of the page, that is why X-Cart will resize 5000x5000 image on-fly and then store this resized copy to an image cache.

Table of Contents

Disabling image resizing routine

In order to disable image resizing routine in a whole store you can apply the following simple mod:

  1. Create an empty module. We are creating a module with developer ID XCExample and module ID DisableImageResize.
  2. Decorate the \XLite\View\Image class (more info about classnames), so that your class would look as follows: 

    <?php
    // vim: set ts=4 sw=4 sts=4 et:
    
    namespace XLite\Module\XCExample\DisableImageResize\View;
    
    /**
     * Image
     */
    class Image extends \XLite\View\Image implements \XLite\Base\IDecorator
    {
        protected function defineWidgetParams()
        {
            parent::defineWidgetParams();
    
            $this->widgetParams[self::PARAM_USE_CACHE] = new \XLite\Model\WidgetParam\TypeBool('Use cache', 0);
        }
    }
    
  3. The only thing we change is we set PARAM_USE_CACHE to false. If you check default \XLite\View\Image class, you will see that this PARAM_USE_CACHE triggers this condition: 

        $url = $this->getParam(self::PARAM_USE_CACHE)
            ? $this->resizedURL
            : $this->getParam(self::PARAM_IMAGE)->getFrontURL();
    

    so if PARAM_USE_CACHE is true, then X-Cart returns a resized image, otherwise it returns default image URL.

  4. Now it is time to re-deploy the store and check the results in store-front.

Module pack

You can download this module example here: https://www.dropbox.com/s/if0i5bomwyvuefj/XCExample-DisableImageResize-v5_3_0.tar