Release date: November 2nd, 2018
Current version: 5.3.9
Change log

PrestaShop module

In the front office AJAX-ZOOM PrestaShop module is based on responsive mouseover zoom + optional 360°. In the back office there is a possibility for administrators to upload several 360's or import them from zip files, which were previously uploaded e.g. over ftp. Each individual 360° can be configured with separate AJAX-ZOOM settings and attached to a properties combinations same way it can be done with regular images on default.

For regular images there are no changes except that when the module is istalled the quality of the images is not reduces after upload any more.

You can freely download the AJAX-ZOOM plugin for Prestashop and test it in your development environment!

New: Added an optional possibility to place only 360 / Videos into a tab on product detail page. The module will create this additional tab automatically. You can also define a jQuery selector for any HTML element where into you want to put the AJAX-ZOOM 360-product viewer. If set that way, the default image box is kept, allowing using a different module for plain images. The selection of product variations for AJAX-ZOOM 360 views and videos is preserved. Thus, if you prefer, you can also use AJAX-ZOOM only as 360-product viewer separated from image viewer and just for the products, for which 360 images are available. You can view it in this demo product.

General features

Back office screenshots

Creating and managing 360 spin product views

Creating a 360 / 3D product view as fairly easy. Please see the screenshots to see how it is done step by step.

360 degree "Product Tour"

The 360 interactive product tour is an optional enhancement of your 360 / 3D images. You can create it easily and in short time with the integrated editor.

Hotspot editor 360 degree views

Hotspots are interactive markings on the images. They can have interactions like a popup with additional information as HTML / text and videos but do not necessarily need to have them. The module offers a very extensive hotspot editor integrated directly into admin backend. The 360 product tour and hotspots work great together / at the same time.

Hotspots on regular images

You can also add hotspots to regular images, not just 360 spin views.

Videos - YouTube, Vimeo, mp4..

Add videos from YouTube, Vimeo and other services or define a link to mp4 video, which will play in HTML5 video player. The functionality will also let you define separate video sources for each frontend language.

360 spin views at CMS pages

If you want to display certain 360 / 3D images on CMS pages of your shop, you can simply copy & paste the offered code and place it into WYSIWYG editor at the place, where you want the 360 spin to appear.

AJAX-ZOOM batch processing tool

Create cache for AJAX-ZOOM with the batch tool. You do not necessarily need to use the batch tool, because if image tiles and other AJAX-ZOOM caches have not been generated yet, AJAX-ZOOM will process the images on-the-fly. Latest, when they appear at the frontend. However, if you have thousands of images, it is a good idea to batch process all existing images, which you plan to show over AJAX-ZOOM, before launching the new website or before enabling AJAX-ZOOM at frontend.

Create 3D (multi-row) views over backend row by row

It is possible to create 3D multi-line views only from the backend, but not recommended. Nevertheless, follow the step by step screenshots how to do it.

Create 3D (multi-row) views over backend from ZIP file

An easier way of making 3D multi-row views importing the images from a ZIP file.

Module configuration section

Normally, you do not have to make any settings for AJAX ZOOM in order for it to work. However, if you want to personalize the look and feel, you will find many options in the configuration area. To try out the module, we recommend "displayOnlyForThisProductId" option, which allows you to activate AJAX ZOOM in the frontend only for certain products.

Front office screenshots

For more real impressions, please check out the links at top of this page!

Handling regular images

For the regular images there is no need to do anything. You can upload them as always. However depending on PrestaShop version the original uploaded images might be already compressed by PrestaShop image class. After activating AJAX-ZOOM this compression is disabled and if you are not satisfied with the quality you might want to reupload your high resolution images.

Staring from Module version 1.7 you can also add hotspots to regular images, not just 360 degree product views! The images are not changed and you can always edit, remove or just disable the hotspots.

Handling 360°/3D

To add 360° images go to 'CATALOG' -> 'Products' panel and select a product. There should be a new AJAX-ZOOM tab. In this tab you will be able to:



  1. Make sure your server and PrestaShop requirements are met!
  2. Unzip the folder 'ajaxzoom' from this archive to the '/modules/' directory of your PrestaShop installation.
  3. Download the latest version of AJAX-ZOOM from and unzip only 'axZm' folder into '/modules/ajaxzoom/' directory. This step is not required if you are using the module downloaded from our website but might be needed if after installation you will not find '/modules/ajaxzoom/axZm' directory (instant download might fail for various reasons).
  4. Set chmod for '/modules/ajaxzoom/pic' directory to be writeable by PHP.
  5. Activate the module through the 'Modules' menu in your PrestaShop back office panel.
  6. Click on "Configure" and save the settings with default values once.
  7. Installation is done. Now you can configure the module but it should work out of the box.
  8. In case it does not work as expected please read the instructions in the modules config page.
  9. Should you be not able to adjust AJAX-ZOOM to work perfectly in a theme on your own, please contact AJAX-ZOOM support.


"TECHNICAL ERROR" alert in back office

Mostly this errors result because of Cross-Origin policy of the browsers for AJAX requests. We should have fixed all the problems related to this issue by now, however if you have activated a redirect e.g. from to (without www) for frontend (or other way around), then please also login under into your backend (same as redirect for the frontend, so if in the front end you have redirect to, then please also login under in the back office). Same with protocols - http and https. If e.g. every request is redirected to https on frontend, then also please login to your backend over https.

Unable to install override: The method resize in the class ImageManager is already overridden

This means, that some other module already overrides this core funtionality. As solution to this problem you can remove the file /ajaxzoom/override/classes/ImageManager.php and reinstall / activate AJAX-ZOOM module for PrestaShop. Since this override is not critical for AJAX-ZOOM and even optional, you can safely remove it.

Images are not shown at frontend I

Please check that Ioncube Loaders are installed. If you have installed Ioncube Loaders over "local" php.ini file, placed in a directory, them copy the same file into, or create php.ini with something like zend_extension=/vrmd/webserver/php56/lib/, also into /modules/ajaxzoom/axZm/php.ini. In the browser, enter If there is text stating something about Ioncube, there is a problem with it.

Images are not shown at frontend II

There could be another reason, why the AJAX-ZOOM player is loaded but the images do not show in it. You do see a perpetual loading animation. Enter in the browser address bar. If the file zoomLoad.php is physically present but you get an error 404 (not present) or error 500 (server error), the most likely reason is that the folders and / or files permissions (chmod) are set to values, where group can edit them and on shared hosts the server configuration often treats this as not acceptable. Most likely, you will need to set the folders permission level (chmod) to 0755 and the files permission level (chmod) to 0644. Skip the leading zero if you are using an FTP program such as FileZilla.

RewriteBase (e.g. Bitnami / Prestashop / XAMPP)

Ver. 4.2.11+ if RewriteBase is set in .htaccess or app config file or similar you might need to change some settings in AJAX-ZOOM config file (/modules/ajaxzoom/axZm/ to make things work properly. Having tested AJAX-ZOOM extension on PC (localhost) with Prestashop package from "Bitnami" (default settings) we were able to get AJAX-ZOOM working under these conditions:

the url path to Prestashop was, whereby the document root on PC was C:/xampp/apps/prestashop/htdocs and not C:/xampp/apps/prestashop/htdocs/prestashop as one would expect. This is due to RewriteBase which is enabled on default. Also the document root here changed from standard XAMPP root which is C:/xampp/htdocs; so as of now all these settings need to be set manually in /modules/ajaxzoom/axZm/ for AJAX-ZOOM this way:

product.tpl problems

In some themes in product.tpl the {if isset($HOOK_PRODUCT_FOOTER) && $HOOK_PRODUCT_FOOTER}{$HOOK_PRODUCT_FOOTER}{/if} might be missing or "hidden" inside a different "if" statement. This is not something we could do about over our module, so in case there are no JS errors and there are no changes on product detail page, please make sure that the above HOOK code is present and does not depend on any other conditions.

Uploaded images are compressed

Update: this issue seems to be fixed in AJAX-ZOOM module for Prestashop Ver. 1.1.3

Unlike other ecommerce software we know PrestaShop compresses original uploaded images, which reduces image quality. The solution to prevent this is to override "resize" method in "ImageManagerCore". The problem we did not solve yet is that overriding this method over our module causes incompatibility issues across different Prestashop versions, especially if developer mode is enabled. So if you want to prevent Prestashop to compress your originally uploaded images you can override the "resize" method on your own just about like this:

	public static function resize(
		$dst_width = null, 
		$dst_height = null, 
		$file_type = 'jpg', 
		$force_type = false, 
		&$error = 0
	) {
		if(Configuration::get('AZ_UPLOADNOCOMPRESS') == 'true' && $dst_width == null && $dst_height == null) {
			return copy($src_file, $dst_file);
		} else {
			return parent::resize(

The above code would work in 1.6.0.x versions. However e.g. in 1.5.x there is no $error argument. In Prestashop 1.6.1.x however there are many other arguments in "resize" method. Open /classes/ImageManager.php, find public static function resize( method and adjust the above code in your override according to the argumets present in this class. Make sure that the arguments in public static function resize( match the argumets in return parent::resize(

Some images in products show correctly, others do not (blank)

Update: this issue was fixed in AJAX-ZOOM Ver. 4.2.18; please update /modules/ajaxzoom/axZm folder!

In short: use only first option "Use JPEG" under PREFERENCES->Images as there are no better alternatives in Prestashop so far. If you encounter this issue on some products, you should set "Use JPEG" and reupload the images.

Prestashop saves all images uploaded by the admin as JPG even if they are PNG. On default (first option) which can be found at PREFERENCES->Images, the png images are converted to JPG which is somewhat acceptable, although not optimal (see issue above). Other than that there are two Prestashop "exclusive" options for handling images (at least we did not see it somewhere else used extensively). The second "Use PNG only if the base image is in PNG format" keeps png format only for images, which are in real PNG images but still saves them as JPG. The third and the last one "Use PNG for all images" converts all images into PNG but again, saves them as JPG in file system.

Most third party scripts which use GD get confused if PNG image is saved as JPG without converting it. It is also said in the Prestashop settings - "WARNING: This feature may not be compatible with your theme, or with some of your modules. In particular, PNG mode is not compatible with the Watermark module. If you encounter any issues, turn it off by selecting "Use JPEG"." So does AJAX-ZOOM at the moment gets confused if GD and not ImageMagick is used. ImageMagick has to be explicitly enabled for AJAX-ZOOM in config file and also installed on the server as it is mostly not included in standard server installations.


If you encounter any other troubles please report / contact our support. We will fix any problem and document it with highest priority.


How to install "ionCube Loader"?

ionCube loader is a widely used PHP extension and it is required to operate AJAX-ZOOM on your server. Before installing the loader please check if it is not already installed on your server. In order to check this you can look into the output of phpinfo();. You can also use get_loaded_extensions PHP function - print_r( get_loaded_extensions() ); to see if ionCube is installed.

If you do not detect ionCube on your server please visit the official ionClube loaders page. There you will find "Loader Installer" and "Loader Wizard", which will give you the guidance on installing the loader matching your operating system (Windows, Linux, FreeBSD, OpenBSD, OS X, Solaris).

Many hosting companies do also have a guidance in their FAQ on how to do this specifically for their configurations. Lastly, a mail to your hosting’s provider support will surely help you. ionCube is industry standard and should be a copy & paste answer for your hosting provider. If not, you should switch your hotsting provider immediately.

Please note, that each PHP version requires a different loader extension. When your provider offers a possibility to switch between several PHP versions and you have added ionCube extension over a separate php.ini on your own, please think about updating this php.ini file to link to the appropriate ionCube extension file.

Restarting the Server (e.g. Apache) might be needed in order to the new extension be loaded (changes in php.ini effectively take place).

Do I need a license key to test AJAX-ZOOM module / plugin?

No, AJAX-ZOOM should work out of the box. For some modules / plugins, AJAX-ZOOM will not install itself, if "ionCube" extension is not present on the server (see above). Other than that, there is are limitations on number of images and image resolution of the demo version. If you would like to test AJAX-ZOOM with higher resolution images ( > 3.2 megapixels / million pixels), please request an "Evaluation" license key for your dev domain / subdomain free of charge.

If you do not have a development server but would like to install AJAX-ZOOM plugin on your production website, you should go to module / plugin settings and set "displayOnlyForThisProductID" option. This option will allow you to enable AJAX-ZOOM only on specified product ID, so you can test the module / plugin thoroughly without affecting the entire shop / conduct A/B tests.

How to translate the plugin into other languages or change text strings?

The translation of the strings is done over the plugin options and within the AJAX-ZOOM core PHP config file.

1. All plugin options are accessed over backend. For example, if you want to add russian translation to "zoomMsg360" option, which is defined as JSON, you would need to add "key" and "value" to this JSON.

    "en": "Drag to spin 360°, scroll to zoom in and out, right click and drag to pan",
    "de": "Ziehen um 360° zu drehen, zoomen mit dem Mausrad, rechte Maustaste ziehen verschiebt die Ansicht",
    "fr": "Faites glisser pour tourner à 360 °, faites défiler pour zoomer dans et hors, cliquer et faire glisser à droite pour vous déplacer",
    "es": "Arrastrar para girar en 360º, Rueda del ratón para utilizar el Zoom, botón derecho para mover la imagen"

So when you only need english as default language (please keep it) and want to add Russian translation string, you would change this option to

    "en": "Drag to spin 360°, scroll to zoom in and out, right click and drag to pan",
    "ru": "Крутить 360° левой кнопкой мыши, колесом увеличивать, правой кнопкой смещать zoom"

2. Some other text strings are located in [ajaxzoom plugin directory] /axZm/ file, which is part of AJAX-ZOOM core. Open this file in a text editor and find a string you are looking for. For example you are lookung for the "Click to load" message. It is located under $zoom['config']['spinNoInit'] option and looks like this:

$zoom['config']['spinNoInit'] = array(
    'enabled' => false,
    'file' => array('en' => 'click_to_load_en.png', 'de' => ''),
    'txt' => array(
        'en' => 'Click to load
view', 'de' => 'Klicken um die
360° Ansicht
zu laden' ), 'event' => 'click' );

As you can see, this is a PHP array and there are several other suboptions located in it. Best way to proceed is to either copy the entire array into or copy only the suboption with locales into this file. You can find outside of the /axZm folder in plugin directory.

2a. The below is what you would add to [ajaxzoom plugin directory] / file when you copy the entire array and add your translation, removing languages you do not need:

$zoom['config']['spinNoInit'] = array(
    'enabled' => true,
    'file' => array('en' => 'click_to_load_en.png', 'de' => ''),
    'txt' => array(
        'en' => 'Click to load
view', 'ru' => 'Нажмите мышкой, чтоб загрузить 360° вид' ), 'event' => 'click' );

2b. Or you could just add the suboption to [ajaxzoom plugin directory] / file like this:

$zoom['config']['spinNoInit']['txt'] = array(
    'en' => 'Click to load
view', 'ru' => 'Нажмите мышкой, чтоб загрузить 360° вид' ); // or $zoom['config']['spinNoInit']['txt']['ru'] = 'Нажмите мышкой, чтоб загрузить 360° вид';
You can also move the file [ajaxzoom plugin directory] / one level up, outside of ajaxzoom plugin directory, so when you update the plugin this file does not get overwritten.

3. There is also a third possiblity how to add translation to strings, which are located in [ajaxzoom plugin directory] /axZm/ In the backend, under plugin configuration, you will find "azOptions" and "azOptions360", which allow you to override configuration from [ajaxzoom plugin directory] /axZm/ related to frontend display. If we wanted to do the same as above over "azOptions360" plugin option (which is saved into the database), the result in your textarea would look like this:

Here, we do not need to define english, as the related JavaScript object will get extended by what you define in "azOptions360". The possibility number 2 above (writing into [ajaxzoom plugin directory] / is not applied then.

Download / Prices

Please note that you might need to download both: AJAX-ZOOM PrestaShop module and AJAX-ZOOM itself separately, see also installing section above.

Also there is no need to order AJAX-ZOOM before you have successfully installed and tested it!

The license price primarily depends on the number of different images, which are displayed on a domain in the AJAX-ZOOM viewer. For the complete license agreement, please visit the download section.


Ver. 1.16.0
  • Few bug fixes for older PS 1.6 versions
  • Loading speed improvements
  • Additional translations
  • Added AJAX-ZOOM batch tool to PS 1.5.x
Ver. 1.15.0
  • Fixed possible errors with translations, containing certain characters..
Ver. 1.14.0
  • Diverse improvements for handling 3D views at backend.
Ver. 1.13.0
  • Moved batch tool to own menu under products / items.
  • Allow the batch tool to enable 360 / 3D when cache for it is created.
  • Some backend UI changes and corrections.
  • Localizations in various languages.
Ver. 1.12.0
Intergrated the AJAX-ZOOM batch tool directly into the backend. AJAX-ZOOM core update (v. 5.3.5+) required.
Ver. 1.11.0
Small adjustments and notes for the new AJAX-ZOOM (core files) "simpleMode" option and "Simple" license type.
Ver. 1.10.0
Fixed possible PHP error / warning, causing AJAX-ZOOM not to show on frontend.
Ver. 1.9.0
  • New possibility to create a tab and add only 360 / videos to this tab ("displayInTab" option).
  • New possibility to place only 360 / videos anywhere by a jQuery selector ("displayInSelector" option).
  • If one of the above possibilities is used, the original image display is not replaced. Can be used with a different module, which replaces the standard image display.
  • Tested and adjusted for PrestaShop 1.5, 1.6 and 1.7
Ver. 1.8.0
Added a CSS file, which compensates missing / changed CSS in the new PS 1.7.3 backend theme.
Ver. 1.7.1
Minimal improvements
Ver. 1.7.0
  • Fixed bug not passing language variable in PS 1.7
  • Added possibility to add hotspots to regular images
  • Added possibility to define module settings for each product individually for testing purposes
  • Added collapsible tabs at product edit page with remembering the state
Ver. 1.6.0
  • Support for videos - YouTube, Vimeo, Dailymotion or link to mp4 videos located else where.
  • For variable products, you are able to associate videos only with certain product variations. Also you can, but not obligated to, define alternative video sources for shop languages...
  • Few other improvements in backend.
  • Tested with Prestashop 1.5, 1.6 and 1.7
Ver. 1.5.0
Added support for PHP 7.1 + small corrections.
Ver. 1.4.1
Small correction for uploading 360 images.
Ver. 1.4.0
Updated module settings. Also fixed a bug where individual settings for a 360 did not open in backend. This was due to PSR-2 coding style which caused JSON error.
Ver. 1.3.3
Fixed a bug for Prestashop 1.7 where the license data entered into module backend configuration were not read correctly.
Ver. 1.3.2
Small bugfix.
Ver. 1.3.1
Fixed loading correct images and 360 when calling a product variant directly for early 1.6 and 1.5 versions. Also converted to PSR-2-coding-style.
Ver. 1.2.20
The AJAX-ZOOM settings are not reset (set to defaults) when the module is uninstalled / installed or reset any more. Instead there is a button in module settings now which allows to reset to module defaults separately.
Ver. 1.2.19
Small bug correction.
Ver. 1.2.18
Small bug correction after update 1.2.17 which actually was a major update.
Ver. 1.2.17
  • Support for Prestashop 1.7
  • Implemented new mouseover (version 5)
For update from previous versions - overwrite module files, update axZm directory, reset module in backoffice and save settings once. Clear template cache if needed.
Ver. 1.2.16
Fixed a bug where single quotes in Product title leaded to json parse error in JS.
Ver. 1.2.15
Fixed a bug where double quotes in Product title leaded to json parse error in JS.
Ver. 1.2.14
Fixed Product Tour which was broken in Ver. 1.2.12 and 1.2.13
Ver. 1.2.13
Couple changes to frontend template for SEO.
Ver. 1.2.12
Small corrections.
Ver. 1.2.11
Module now tries to download latest version of AJAX-ZOOM instantly.
Ver. 1.2.10
Fixed a possible warning when uploading 360 from a folder (not zip file); Hopefully fixed SSL issue forever.
Ver. 1.2.8
Added new hotspot editor. Updated 360 product tour editor.
Ver. 1.2.7
Fixed SSL issues at couple places
Ver. 1.2.6
Fixed a bug created in 1.2.5 (uploading 360 images from folder or zip)
Ver. 1.2.5
Added missing image labels / titles to mouseover zoom flyout window.
Ver. 1.2.4
Added copy & paste code for placing 360 player into CMS or landing pages. Here an example.
Ver. 1.2.3
Bugfixes saving 360 product tour.
Ver. 1.2.2
Minor improvements.
Ver. 1.2.1
Some corrections for 360 degree "Product Tour".
Ver. 1.2.0
Added 360 degree "Product Tour".
Ver. 1.1.6
Security improvements.
Ver. 1.1.5
Minor improvements.
Ver. 1.1.4
Fixed SSL issue.
Ver. 1.1.3
Fixed some compatibility issues.
Ver. 1.1.2
Temporaly remove override ImageManager.php from /modules/override/ImageManager.php till we have an universal solution for that as it caused problems across different Prestashop versions.
Ver. 1.1.1
Fixed paths for multishop
Ver. 1.1.0
Fixed several bugs
Ver. 1.0.2
Sorted options according to documentation; few bugfixes; new options; gallery slider vertical over options (left or right)
Ver. 1.0.1
PrestaShop module released

Comments (1)

Laura Daniela 2016-08-14 23:21:46
Laura Daniela Thanks, you are the best

Leave a Comment

Looking for a place to add a personal image? Visit to get Your own gravatar, a globally-recognized avatar. After you're all setup, your personal image will be attached every time you comment.

To use live-support-chat you will need to have Skype installed on your device.

In case live support over Skype is not immediately available please leave a message or send us an email over contact form at first.

Every AJAX-ZOOM related inquiry / question will be answered!