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.
Disabling image resizing routine
In order to disable image resizing routine in a whole store you can apply the following simple mod:
Create an empty module. We are creating a module with developer ID XCExample and module ID DisableImageResize.
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);
}
}The only thing we change is we set
PARAM_USE_CACHE
tofalse
. If you check default\XLite\View\Image
class, you will see that thisPARAM_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.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: XCExample-DisableImageResize-v5_3_0.tar