Бортовой журнал Ктулху

Кнопка сравнения на странице товара в Prestashop 1.6

Это краткое руководство по добавлению кнопки сравнения на страницу товара в Prestashop 1.6.

 

Краткое пояснение работы механизма сравнения

 При клике на чекбокс добавления к сравнению срабатывает событие в методе reloadProductComparison в файле products-comparison.js. По умолчанию этот файл подключен на каждой странице со списком товаров.

Нужно добавить загрузку этого файла после setMedia() в ProductController.php.

Дополнительно, каждый раз при добавлении или удалении товара в/из списка сравнения и вызове соответствующей ajax функции, переменная этого списка сохранятеся в куки.

Таким образом, нужно сделать следующие действия:

  • Переопределить функционал ProductController.php
  • Добавить product-comparsions.js на страницу товара
  • Добавить код кнопки сравнения в шаблон товара product.tpl

Переопределение ProductController.php

Самый простой способ - скопировать ProductController.php в /override/controllers/front. Более сложный - создать пустой файл с таким названием, в него добавить

 <?php
class ProductController extends ProductControllerCore
{
}
?>

Затем добавить метод SetMedia()

public function setMedia()
{
 parent::setMedia();
 
 if (Configuration::get('PS_COMPARATOR_MAX_ITEM'))
 $this->addJS(_THEME_JS_DIR_.'products-comparison.js');
}

Также добавляем метод initContent()

public function initContent()
{
 
 $this->context->smarty->assign('comparator_max_item', Configuration::get('PS_COMPARATOR_MAX_ITEM'));
 
 if (isset($this->context->cookie->id_compare))
 $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare));
 
 parent::initContent();
}

Кнопка сравнения на странице товара

В файле product.tpl добавляем код из файла product-list.tpl

{if isset($comparator_max_item) && $comparator_max_item}
 <div class="compare">
 <a class="add_to_compare" href="/{$product->link|escape:'html':'UTF-8'}" data-id-product="{$product->id_product}">{l s='Add to Compare'}</a>
 </div>
{/if}
{include file="./product-compare.tpl"}

screenshot 2016 09 30 11 18 57 1

По материалам nemops.com/compare-button-to-product-page/#.V-4HSB_6z3A