Сравнение товаров для JoomShopping - документация
Подробное руководство по установке, настройке и использованию дополнения для сравнения товаров в JoomShopping.
Установка и обновление дополнения для сравнения товаров
Для установки дополнения необходимо скачать установочный пакет boxapp_comparison_for_joomshopping_UNZIPFIRST.zip
, ссылка на скачивание которого есть на странице дополнения. Это архив, содержащий внутри установочные пакеты самого дополнения boxapp_comparison_for_joomshopping_[версия].zip
, плагина для настройки дополнения plg_jshoppingadmin_comparisonparams_[версия].zip
и краткую инструкцию по установке в файле readme.txt
.
После скачивания необходимо распаковать архив boxapp_comparison_for_joomshopping_UNZIPFIRST.zip
в любую удобную директорию. Для установки дополнения нужно зайти в административную часть сайта и выбрать пункт меню Компоненты / JoomShopping / Установка и обновление.
administrator/index.php?option=com_jshopping&controller=update
В поле Загрузка файла необходимо выбрать файл пакета boxapp_comparison_for_joomshopping_[версия].zip
из папки, в которую был распакован скачанный архив, и нажать на кнопку Загрузить. Установщик JoomShopping скопирует все файлы, расположенные в этом архиве в соответствующие папки сайта. Существующие файлы будут заменены, поэтому при повторной установке дополнения более новой версии можно просто повторить процедуру установки.
Для удаления дополнения сравнения товаров в JoomShopping достаточно удалить все файлы, которые находились в установочном пакете. Пути к файлам в папке сайта точно соответствуют их путям в установочном пакете. Таким образом для удаления дополнения нужно зайти в папку сайта и удалить все файлы дополнения, имена и пути к которым просто определить по расположению этих файлов в установочном пакете.
Установка и обновление плагина для настройки дополнения сравнения товаров
Плагин plg_jshoppingadmin_comparisonparams_[версия].zip
предназначен для настройки дополнения сравнения товаров в JoomShopping. Его установка является не обязательной, без плагина дополнение будет полноценно работать с настройками по-умолчанию. Установка плагина осуществляется с помощью Менеджера расширений Joomla, что подробно описано в статье Установка расширений в Joomla!, использование менеджера расширений. После установки плагина его обязательно нужно включить в Менеджере плагинов Joomla (пункт меню Расширения / Менеджер плагинов) для того, чтобы выбранные параметры применялись при работе дополнения сравнения товаров.
Для изменения параметров дополнения нужно зайти в пункт меню Расширения / Менеджер плагинов, выбрать плагин "JoomShopping admin plugin - параметры сравнения товаров", установить необходимые параметры и нажать на кнопку Сохранить.

Интеграция с шаблоном JoomShopping
Для того, чтобы добавлять товары к сравнению на странице категории товаров, необходимо внести ряд изменений в шаблон JoomShopping. Наиболее простой способ сделать это – установить Блочный шаблон JoomShopping с микроразметкой или Шаблон BoxApp2 для JoomShopping на базе UIkit framework. В эти шаблоны уже интегрированы все изменения, необходимые для добавления товаров к сравнению на странице категории товаров. После установки необходимо выбрать этот шаблон в настройках JoomShooping, что более подробно описано в его документации.
Если нет возможности использовать наш шаблон, то для добавления товаров к сравнению на странице категории необходимо внести ряд изменений в текущий шаблон JoomShopping. Его название легко можно определить, если зайти в пункт меню Компоненты / JoomShopping / Настройки и выбрать Основные.
administrator/index.php?option=com_jshopping&controller=config&task=general
В поле Шаблон будет находиться название текущего шаблона JoomShopping. Соответствующая папка шаблона будет расположена по пути
components/com_jshopping/templates/[имя_шаблона_JoomShopping]
Для того, чтобы не потерять изменения при обновлении текущего шаблона, необходимо перекрыть файлы, которые необходимо изменить, в текущем шаблоне Joomla. Для этого скопируем следующие папки
components/com_jshopping/templates/[имя_шаблона_JoomShopping]/category
components/com_jshopping/templates/[имя_шаблона_JoomShopping]/list_products
в соответствующую папку текущего шаблона Joomla по пути
templates/[имя_шаблона_Joomla]/html/com_jshopping/category
templates/[имя_шаблона_Joomla]/html/com_jshopping/list_products
Теперь при переходе на страницу категории будет использоваться файл шаблона категории, расположенный в папке текущего шаблона Joomla. Более подробную информацию о перекрытии вывода компонентов можно найти в статье Перекрытие вывода компонентов и модулей в шаблоне Joomla!
Далее необходимо найти файл
templates/[имя_шаблона_Joomla]/html/com_jshopping/list_products/list_products.php
и внести в него следующие изменения:
-
найти в верхней части файла строки
defined('_JEXEC') or die('Restricted access'); ?>
и заменить их на следующий кодdefined('_JEXEC') or die('Restricted access'); $comparison = JModelLegacy::getInstance('comparison', 'jshop'); $plugin = JPluginHelper::getPlugin('jshoppingadmin', 'comparisonparams'); $comparisonParams = isset($plugin->params) ? $plugin->params : array(); $comparisonParams = new JRegistry($comparisonParams); $comparisonIds = array(); $showComparison = false; if ($comparison instanceof jshopComparison && $comparisonParams->get('enable', true)) { JHtml::script('com_jshopping/jquery.product-list-comparison.js', false, true); JSFactory::loadExtLanguageFile('boxapp_comparison'); $showComparison = true; $comparison->load(); foreach ($comparison->products as $key => $product) { $comparisonIds[$product['product_id']] = $key; } $comparisonViewUrl = $comparison->getViewUrl(JFactory::getApplication()->input->getInt('category_id'), intval($comparisonParams->get('menu_id'))); } ?> <?php if ($showComparison) : ?> <script type="text/javascript"> jQuery(function() { jQuery(document).initProductListComparison({ productInCompareMessage: '<?php echo(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE); ?>', addProductToCompareMessage: '<?php echo(_JSHOP_COMPARISON_ADD_TO_COMPARE); ?>' }); }); </script> <?php endif; ?>
-
ниже найти строку
<?php foreach ($this->rows as $k=>$product) : ?>
и после нее вставить код<?php if ($showComparison) : ?> <?php if(array_key_exists($product->product_id, $comparisonIds)) { $product->inComparison = true; $product->comparisonUrl = SEFLink('index.php?option=com_jshopping&controller=comparison&task=delete&number_id=' . $comparisonIds[$product->product_id] . ($product->category_id ? '&category_id=' . $product->category_id : '') . '&ajax=1'); } else { $product->inComparison = false; $product->comparisonUrl = SEFLink('index.php?option=com_jshopping&controller=comparison&task=add&product_id=' . $product->product_id . ($product->category_id ? '&category_id=' . $product->category_id : '') . '&ajax=1'); } ?> <?php endif; ?>
После этого в этой же папке нужно найти файл
templates/[имя_шаблона_Joomla]/html/com_jshopping/list_products/product.php
найти в нем блок вывода стоимости товара
<?php if ($product->_display_price){?> <div class = "jshop_price"> <?php if ($this->config->product_list_show_price_description) print _JSHOP_PRICE.": ";?> <?php if ($product->show_price_from) print _JSHOP_FROM." ";?> <span><?php print formatprice($product->product_price);?><?php print $product->_tmp_var_price_ext;?></span> </div> <?php }?>
в вставить после него следующий код
<?php if ($showComparison) : ?> <div class="product_comparison_block"> <input id="product_comparison_input_<?php echo($product->product_id); ?>" type="checkbox" value="<?php echo($product->comparisonUrl); ?>" name="inComparison" class="product_comparison_input" <?php echo($product->inComparison ? 'checked="checked"' : ''); ?> /> <label class="product_comparison_input_label" for="product_comparison_input_<?php echo($product->product_id); ?>"> <?php if($product->inComparison) : ?> <a href="<?php echo($comparisonViewUrl); ?>" title="<?php echo(htmlspecialchars(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE)); ?>" target="_blank" class="product_comparison_link"> <?php echo(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE); ?> </a> <?php else : ?> <?php echo(_JSHOP_COMPARISON_ADD_TO_COMPARE); ?> <?php endif; ?> </label> </div> <?php endif; ?>
При этом на странице категории товаров для каждого из них будет выведен checkbox добавления/удаления товара для сравнения после его стоимости. Последний блок кода можно вставить в любое другое место шаблона, где необходимо отобразить checkbox добавления/удаления товара для сравнения.
Для добавления аналогичного checkbox на страницу товара необходимо добавить код инициализации для сравнения товаров в шаблон товара. Для этого необходимо скопировать папку
components/com_jshopping/templates/[имя_шаблона_JoomShopping]/product
по пути
templates/[имя_шаблона_Joomla]/html/com_jshopping/product
Далее в этой папке нужно найти файл product_default.php
, который является файлом шаблона товара. В нем нужно внести следующие изменения:
-
В верхней части файла найти код
<?php defined('_JEXEC') or die('Restricted access'); ... ?>
и добавить перед строкой с текстом?>
следующий код$comparison = JModelLegacy::getInstance('comparison', 'jshop'); $plugin = JPluginHelper::getPlugin('jshoppingadmin', 'comparisonparams'); $comparisonParams = isset($plugin->params) ? $plugin->params : array(); $comparisonParams = new JRegistry($comparisonParams); $comparisonIds = array(); $showComparison = false; if ($comparison instanceof jshopComparison && $comparisonParams->get('enable', true)) { JHtml::script('com_jshopping/jquery.product-list-comparison.js', false, true); JSFactory::loadExtLanguageFile('boxapp_comparison'); $showComparison = true; $comparison->load(); foreach ($comparison->products as $key => $product) { $comparisonIds[$product['product_id']] = $key; } $comparisonViewUrl = $comparison->getViewUrl(JFactory::getApplication()->input->getInt('category_id'), intval($comparisonParams->get('menu_id'))); } if ($showComparison) { if (array_key_exists($this->product->product_id, $comparisonIds)) { $this->product->inComparison = true; $this->product->comparisonUrl = SEFLink('index.php?option=com_jshopping&controller=comparison&task=delete&number_id=' . $comparisonIds[$this->product->product_id] . ($this->product->category_id ? '&category_id=' . $this->product->category_id : '') . '&ajax=1'); } else { $this->product->inComparison = false; $this->product->comparisonUrl = SEFLink('index.php?option=com_jshopping&controller=comparison&task=add&product_id=' . $this->product->product_id . ($this->product->category_id ? '&category_id=' . $this->product->category_id : '') . '&ajax=1'); } }
-
после строки с текстом
?>
нужно добавить блок кода<?php if ($showComparison) : ?> <script type="text/javascript"> jQuery(function() { jQuery(document).initProductListComparison({ productInCompareMessage: '<?php echo(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE); ?>', addProductToCompareMessage: '<?php echo(_JSHOP_COMPARISON_ADD_TO_COMPARE); ?>' }); }); </script> <?php endif; ?>
-
После этого нужно разместить код
<?php if ($showComparison) : ?> <div class="product_comparison_block"> <input id="product_comparison_input_<?php echo($this->product->product_id); ?>" type="checkbox" value="<?php echo($this->product->comparisonUrl); ?>" name="inComparison" class="product_comparison_input" <?php echo($this->product->inComparison ? 'checked="checked"' : ''); ?> /> <label class="product_comparison_input_label" for="product_comparison_input_<?php echo($this->product->product_id); ?>"> <?php if($this->product->inComparison) : ?> <a href="<?php echo($comparisonViewUrl); ?>" title="<?php echo(htmlspecialchars(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE)); ?>" target="_blank" class="product_comparison_link"> <?php echo(_JSHOP_COMPARISON_PRODUCT_IN_COMPARE); ?> </a> <?php else : ?> <?php echo(_JSHOP_COMPARISON_ADD_TO_COMPARE); ?> <?php endif; ?> </label> </div> <?php endif; ?>
в том месте шаблона, в котором необходимо выводить непосредственно checkbox для добавления/удаления товара для сравнения.
Если на сайте используется не default шаблон для JoomShopping, то кроме всех вышеперечисленных изменений также нужно скопировать файл шаблона для страницы сравнения товаров
components/com_jshopping/templates/default/comparison/default.php
по пути
templates/[имя_шаблона_Joomla]/html/com_jshopping/comparison/default.php
Использование
Для добавления товаров к сравнению необходимо зайти на странице категории товаров нажать на соответствующем checkbox с названием "Добавить к сравнению" под изображением товара. Для удаления добавленного к сравнению товара можно снять checkbox возле ссылки "В сравнении" или удалить товар на странице сравнения.
На странице сравнения товаров есть ряд функций:
- ряд фильтров для товаров и их характеристик
- возможность очистить сравнение (удалить все товары из сравнения)
- удалить товар из сравнения
- добавить товар в корзину
- перейти на страницу товара