Сравнение товаров для 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

и внести в него следующие изменения:

  1. найти в верхней части файла строки
    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; ?>
    
  2. ниже найти строку
    <?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, который является файлом шаблона товара. В нем нужно внести следующие изменения:

  1. В верхней части файла найти код
    <?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');
        }
    }
  2. после строки с текстом ?> нужно добавить блок кода
    <?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; ?>
  3. После этого нужно разместить код
                            <?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 возле ссылки "В сравнении" или удалить товар на странице сравнения.

На странице сравнения товаров есть ряд функций:

  • ряд фильтров для товаров и их характеристик
  • возможность очистить сравнение (удалить все товары из сравнения)
  • удалить товар из сравнения
  • добавить товар в корзину
  • перейти на страницу товара