# OpenCart 2
Этот документ содержит инструкции по установке модуля REES46 OpenCart (далее модуль REES46) и его интегрирование с вашим интернет-магазином на основе OpenCart.
Важно!
Обратите внимание, что если какой-либо функционал (например, отображение блоков рекомендаций) не работает даже в случае соблюдения всех инструкций документации, то скорее всего возникает конфликт с другими модулями, либо вы используете модифицированную версию OpenCart 2. Пожалуйста, свяжитесь с нами по адресу desk@rees46.ru, и мы поможем вам разобраться с возникшей проблемой.
Информация
Этот документ применим для следующих версий OpenCart: v 2.0.1.0 - 2.3.x.x, а также для модуля Simple Checkout.
# Подключение модуля
В этом разделе объясняется, как установить, настроить и подключить модуль REES46 к вашему интернет-магазину под управлением OpenCart.
# Регистрация вашего магазина на REES46
До установки и подключения этого модуля, необходимо зарегистрировать ваш магазин на нашем сайте rees46.ru.
Чтобы зарегистрировать магазин:
- Зарегистрируйтесь на сайте REES46:
- Откройте эту страницу
- Создайте свой Личный Кабинет.
- Создайте проект для вашего магазина.
- Запишите Store Key (код магазина) и Secret Key (секретный ключ).
Примечание
Store Key и Secret Key - уникальные идентификаторы, например: 640e3aq6dd5e70c8156e75238bf4e2. Они используются для доступа к нашим ресурсам через программный интерфейс REES46.
Вы всегда можете найти Store Key и Secret Key в вашем личном кабинете rees46.ru.
# Установка модуля
# Установка специального патча
Перед установкой модуля, установите патч, следуя данным инструкциям:
- Скачайте на локальный компьютер специальный патч Quick Fix. Для этого откройте данную страницу (opens new window) и выполните следующие шаги:
- Нажмите на DOWNLOAD.
- Введите логин и пароль для вашей учетной записи OpenCart.
- На странице загрузки модуля нажмите DOWNLOAD, чтобы загрузить Zip-архив с патчем.
- Распакуйте архив.
- В меню Административной панели откройте Дополнения > Установщик дополнений, и нажмите Загрузить для отправки на сервер файла
localcopy.ocmod.xml, который получен после распаковки патча. - В Административной панели откройте Дополнения > Менеджер дополнений и нажмите Очистить (или Сброс). Примечание: Дождитесь завершения процесса очистки кешированных файлов.
- В Административной панели откройте Дополнения > Менеджер дополнений и нажмите Обновить, чтобы обновить кэш.
# Установка модуля
Скачайте на локальный компьютер Zip-архив со страницы модуля (opens new window). На данной странице выполните следующие шаги:
- Нажмите на DOWNLOAD.
- Введите логин и пароль для вашей учетной записи OpenCart.
- Выберите Zip-архив для вашей версии OpenCart. В меню Административной панели OpenCart вашего магазина, откройте Дополнения > Установщик дополнений. Загрузите на сервер полученный архив rees46.ocmod.zip, нажав на кнопку Загрузить. В Административной панели откройте Дополнения > Менеджер дополнений и нажмите Очистить (или Сброс). Примечание: Дождитесь завершения процесса очистки кешированных файлов. В Административной панели откройте Дополнения > Менеджер дополнений и нажмите Обновить, чтобы обновить кэш. В Административной панели откройте Дополнения > Модули и установите модуль REES46.
# Настройка модуля REES46
Чтобы выполнить настройки модуля REES46
- В Административной панели откройте Дополнения > Модули > REES46, а затем перейдите на вкладку Общее.
- В полях Store Key и Secret Key введите значения идентификатора вашего магазина и секретного ключа. ПРИМЕЧАНИЕ: Вы всегда можете посмотреть эти значения в вашем Личном кабинете на rees46.ru.
- Установите значение в поле Статус модуля на Включено.
- Для сохранения изменений настроек модуля, нажмите на иконку .
Пример вкладки Общее:

# Экспорт данных в REES46
Этот раздел объясняет, как экспортировать существующие данные из вашего магазина в модуль REES46.
# Экспорт товарного каталога
В этой секции приведены инструкции по экспорту вашего товарного каталога.
- В меню Административной панели OpenCart откройте Дополнения > Модули > REES46, а затем откройте вкладку Товары.
- Из выпадающего списка Валюта выберите необходимую валюту.
- Сохраните текущие изменения, нажав на иконку 💾.
- Для фонового создания XML с помощью Cron используйте ссылку в поле
Ссылка для крона. В этом случае, при запросе файла будет сразу загружаться сгенерированный кроном XML файл.
Пример вкладки Товары:

# Экспорт истории заказов
В этой секции приведены инструкции по экспорту Истории заказов.
- В меню Административной панели OpenCart откройте Дополнения > Модули > REES46, а затем откройте вкладку Заказы.
- На вкладке Заказы выберите соответствующие флажки, чтобы установить соответствия между статусами ваших заказов и статусами заказов в модуле REES46.
- Нажмите на 💾, чтобы сохранить текущие настройки модуля, а затем снова откройте вкладку Заказы.
- Нажмите на кнопку
Начать экспорт.
Пример вкладки Заказы:

# Экспорт списка покупателей и подписчиков
В этой секции приведены инструкции по экспорту списка ваших покупателей и подписчиков.
- В меню Административной панели OpenCart откройте
Дополнения > Модули > REES46, а затем откройте вкладку Покупатели. - Из выпадающего списка Тип покупателей выберите тип покупателей, список которых вы хотите экспортировать.
- Нажмите на 💾, чтобы сохранить текущие настройки модуля, а затем снова откройте вкладку Покупатели.
- Нажмите на кнопку
Начать экспорт.

# Загрузка файлов для Web Push оповещений
Важно
Чтобы использовать Web Push оповещения, ваш сайт должен поддерживать HTTPS протокол.
Важно
Не пытайтесь тестировать web-push уведомления в режиме "Инкогнито" в любом из браузеров! Веб-пуш уведомления не работают в этом режиме.
Чтобы загрузить файлы на сервер
- В меню Административной панели OpenCart откройте
Дополнения > Модули > REES46, а затем откройте вкладкуВеб-пуш. - Нажмите на кнопку
Проверить файлы.
Примечание
После нажатия на данную кнопку, система проверяет наличие необходимых файлов в корневой директории вашего вэб-сайта и при необходимости загружает их. По завершению загрузки файлов на сервер и их проверки, Административная панель выдает соответствующее сообщение.
Пример вкладки Веб-пуш:

# Товарные рекомендации
Подробная инструкция по созданию и управлению блоками товарных рекомендаций находится в Товарные рекомендации.
Здесь рассмотрим, как вставлять уже готовые блоки на страницы сайта.
Чтобы добавить к модулю REES46 новый блок рекомендаций:
- В меню Административной панели OpenCart откройте Дополнения > Модули > REES46, а затем откройте вкладку Рекомендации.
- Чтобы добавить новый блок рекомендаций, нажмите на кнопку Добавить.
- Выполните настройки вновь добавленного блока. Примечание: Для каждого блока рекомендаций необходимо создавать новые настройки.
- Нажмите на иконку 💾, чтобы сохранить текущие настройки модуля.
Пример вкладки Рекомендации:

Пример страницы настроек добавляемого блока рекомендаций:

# Размещение блоков рекомендаций
В этой секции объясняется, как разместить блоки товарных рекомендаций на страницах вашего сайта.
Чтобы задать размещение блоков рекомендаций:
- В меню Административной панели OpenCart откройте Дизайн > Схемы
- Чтобы добавить блок на нужную схему (смотрите таблицу размещения ниже), необходимо выполнить соответствующие настройки схемы (смотрите скриншоты в секции Как настроить параметры схемы далее на этой странице).
Для размещения вновь созданных блоков товарных рекомендаций используйте схему, описанную в Рекомендованная схема расположения блоков на сайте.
Добавление блока на нужную схему происходит при выполнении настроек параметров соответствующей схемы с помощью интерфейса Административной панели OpenCart.
Для пояснений по необходимым действиям, рассмотрите скриншоты, приведенные далее.
- Как добавить и начать редактирование схемы:

- Редактирование настроек схемы:

Примечание
Подробнее о функции Дизайн и Схемы, предоставляемой Административной панелью OpenCart, смотрите документацию OpenCart: “Глава 6: Design” в документе Definitive Guide to Getting Started with OpenCart 2.x, который доступен на сайте OpenCart (opens new window).
# Проверка работоспособности
# Как выполнить проверку
- Включите консоль разработчика в вашем браузере.
- Выберите вкладку Network (или "Сеть"), в которой при обновлении страницы отображаются происходящие запросы.
- Включаете режим фильтрации только XHR-запросов.
- Проверяете, есть ли запросы, которые уходят на api.rees46.ru.
# Проверка отправки событий
- Откройте страницу карточки товара и убедитесь, что уходит PUSH-событие к API REES46.
- Добавьте товар в корзину и убедитесь, что уходит PUSH-событие к API REES46.
- Удалите товар из корзины и убедитесь, что уходит PUSH-событие к API REES46.
- Сделайте заказ товара и убедитесь, что уходит PUSH-событие к API REES46.

# Проверка запроса рекомендаций
- Откройте страницу сайта, где установлены блоки и убедитесь, что к API REES46 уходит столько запросов, сколько установлено блоков рекомендаций.
- Осуществите поиск товара и убедитесь, что к API REES46 ушёл запрос на рекомендации при установленном блоке "Искавшие это также купили".

# Удаление старой версии модуля OpenCart 2.1/2.2
Обратите внимание!
Используйте данную инструкцию только в том случае, если недоступна штатная функция удаления модуля REES46 средствами OpenCart. В противном случае это может привести нарушению работы интернет-магазина.
# Удаление библиотеки REES46
Найдите и удалите следующий файл:
/catalog/controller/common/rees46_recommend.php
# Удаление кода блоков рекомендаций в шаблонах
Ниже приведена таблица, где могут быть размещены блоки рекомендаций. Необходимо удалить код блока и сохранить шаблон.
| Шаблон | Код |
|---|---|
| template/common/home.tpl | |
| template/common/home.tpl | |
| template/common/home.tpl | |
| template/product/category.tpl | |
| template/product/category.tpl | |
| template/product/category.tpl | |
| template/product/product.tpl | |
| template/product/product.tpl | |
| template/product/product.tpl | |
| template/product/product.tpl | |
| template/checkout/cart.tpl | |
| template/checkout/cart.tpl | |
| template/product/search.tpl |
# Удаление кода инициализации
Отредактируйте файл шаблона подвала сайта /catalog/view/theme/<НАЗВАНИЕ_ВАШЕЙ_ТЕМЫ>/template/common/footer.tpl, где перед закрывающим тегом </body> должен находиться следующий код, который необходимо удалить:
<!-- Insert before </body> -->
<!-- REES46 Init Begin -->
<script src="//cdn.rees46.ru/rees46_script2.js"></script>
<script type="text/javascript">
var REES46Info = {
shopId: 'КОД_ВАШЕГО_МАГАЗИНА_В_REES46',
currentUserId:<?php echo empty($currentUserId) ? 'null' : $currentUserId; ?>,
currentUserEmail:<?php echo empty($currentUserEmail) ? 'null' : '\''.$currentUserEmail.'\''; ?>
};
String.prototype.format||(String.prototype.format=function(){
var e=arguments;return this.replace(/\[(\d+)\]/g,function(t,r){return"undefined"!=typeof e[r]?e[r]:t});
});
var REES46CurrentCart=<?php $cart_ids=array();foreach($products as $product){array_push($cart_ids,$product['product_id']);};echo "[".implode(',', $cart_ids)."]"; ?>;
REES46.init(REES46Info.shopId, { id: REES46Info.currentUserId, email: REES46Info.currentUserEmail }, function() {
REES46.addStyleToPage();
if (typeof(REES46CurrentProductInfo) != 'undefined') {
REES46.addReadyListener(function(){
REES46.pushData('view', REES46CurrentProductInfo);
});
}
$('.rees46-recommend').each(function() {
var recommender = $(this),
recommenderType = recommender.attr('data-type'),
limit = recommender.attr('data-limit'),
title = recommender.attr('data-title'),
search_query = recommender.attr('data-search');
var currentItem = null;
if (typeof(REES46CurrentProductInfo) != 'undefined') {
currentItem = REES46CurrentProductInfo.item_id;
}
var currentCart = [];
if (typeof(REES46CurrentCart) != 'undefined') {
currentCart = REES46CurrentCart;
}
var currentCategory = null;
if (typeof(REES46CurrentCategory) != 'undefined') {
currentCategory = REES46CurrentCategory;
}
REES46.recommend({
recommender_type: recommenderType,
limit: limit,
item: currentItem,
category: currentCategory,
cart: currentCart,
search_query: search_query
}, function(items) {
if (items.length == 0) {
return;
}
$.get('/index.php?route=common/rees46_recommend&type=' + recommenderType + '&ids=' + items.join(','), function(response) {
var tplItems = '<div class="recommender-block-title">[1]</div><div class="recommended-items">[0]</div>';
var tplItem = '<div class="recommended-item">'+
'<div class="recommended-item-photo">'+
'<a href="[0]"><img src="[2]" class="item_img" /></a>'+
'</div>'+
'<div class="recommended-item-title">'+
'<a href="[0]">[1]</a>'+
'</div>'+
'<div class="recommended-item-price">'+
'[3]'+
'</div>'+
'<div class="recommended-item-action">'+
'<a href="[0]">Подробнее</a>'+
'</div>'+
'</div>';
var productsBlock = '';
response = JSON.parse(response);
$(response).each(function() {
if (this.name != '') {
var linkToItem = this.url;
if (linkToItem.indexOf('?') >= 0) {
linkToItem = linkToItem + '&';
} else {
if (linkToItem.indexOf('.htm') >= 0) {
linkToItem = linkToItem + '#?';
} else {
linkToItem = linkToItem + '?';
}
}
linkToItem = linkToItem + 'recommended_by=' + recommenderType;
productsBlock += tplItem.format(
linkToItem,
this.name,
this.image_url,
this.price
);
}
});
var recommender_titles = {
interesting: 'Вам это будет интересно',
also_bought: 'С этим также покупают',
similar: 'Похожие товары',
popular: 'Популярные товары',
see_also: 'Посмотрите также',
recently_viewed: 'Вы недавно смотрели',
search: 'Искавшие это также купили'
};
if (productsBlock != '') {
items = tplItems.format(productsBlock, (title || recommender_titles[recommenderType]));
if (REES46.showPromotion) {
items = items + REES46.getPromotionBlock();
}
recommender.html(items);
}
});
});
});
rees_event_remove_from_cart ();
});
$(function() {
$(document).ajaxSend(function(event, jqxhr, settings) {
if (/index.php\?route\=checkout\/cart\/add/.test(settings.url)) {
settings.data.split('&').forEach(function(pair) {
var parts = pair.split('=');
if (parts[0] == 'product_id') {
REES46.addReadyListener(function(){
REES46.pushData('cart', { item_id: parts[1] });
$(document).bind("ajaxComplete", function(){
rees_event_remove_from_cart ();
});
});
}
});
}
if (/index.php\?route\=checkout\/cart\/remove/.test(settings.url)) {
$(document).bind("ajaxComplete", function(){
rees_event_remove_from_cart ();
});
}
});
});
function rees_event_remove_from_cart () {
$.each($('button'),function(index,value) {
var remove_button=$(value).attr('onclick');
if (typeof(remove_button) != 'undefined' && remove_button.indexOf('cart.remove')+1) {
$(this).off("click");
$(this).on("click",function(){
var item = $(this).parents('tr td').siblings('td');
var item_id = '';
$.each(item, function (n,m){
var item_link = $(m).children('a').attr('href');
if (typeof(item_link) != 'undefined' && item_link.indexOf('product_id=')+1) {
item_id = item_link.split('product_id=')[1];
REES46.addReadyListener(function(){
REES46.pushData('remove_from_cart', {
item_id:item_id
});
});
return (item_id === '');
};
});
});
};
});
};
</script>
<!-- REES46 Init End -->
Затем отредактируйте файл /catalog/controller/common/footer.php. Найдите и удалите следующий код. Он должен располагаться после строки $this->load->language('common/footer');:
// REES46 User & Product tracking begin
$data['currentUserId'] = $this->customer->getId();
$data['currentUserEmail'] = $this->customer->getEmail();
$data['products'] = $this->cart->getProducts();
// REES46 User & Product tracking end
# Удаление кода отслеживания событий
Отредактируйте файл /catalog/controller/product/product.php. Найдите и удалите следующий код. Он должен располагаться перед строкой if ($product_info['quantity'] <= 0).
// REES46 category & stock tracking begin
$data['productCategories'] = $this->model_catalog_product->getCategories((int)$this->request->get['product_id']);
$data['productHref'] = $this->url->link('product/product', 'product_id=' . (int)$this->request->get['product_id']);
$data['rees46_is_available'] = $product_info['quantity'];
// REES46 category & stock tracking end
Затем отредактируйте файл шаблона карточки товара /catalog/view/theme/<НАЗВАНИЕ_ВАШЕЙ_ТЕМЫ>/template/product/product.tpl. Найдите и удалите следующий код. Он должен располагаться перед строкой <?php echo $footer; ?>:
<!-- REES46 product tracking begin -->
<script type="text/javascript">
var REES46CurrentProductInfo = {
item_id: <?php echo $product_id; ?>,
price: <?php
if ($special) {
preg_match('/\d+\.?\d*/', $special, $matches);
echo $matches[0];
} else {
preg_match('/\d+\.?\d*/', $price, $matches);
echo $matches[0];
}
?>,
is_available: <?php if (isset($rees46_is_available) && $rees46_is_available>0) { echo 'true'; } else { echo 'false'; }; ?>,
categories: <?php
$categories = array();
$product_categories = $productCategories;
foreach (array_reverse($product_categories) as $product_category) {
array_push($categories, $product_category['category_id']);
}
echo ('['.implode(',', $categories).']');
?>,
name: '<?php echo trim(preg_replace('/\s+/', ' ', strip_tags(html_entity_decode($heading_title, ENT_QUOTES, 'UTF-8')))); ?>',
url: '<?php echo $productHref; ?>',
image_url: '<?php echo $popup; ?>'
};
</script>
<!-- REES46 product tracking end -->
Затем отредактируйте файл /catalog/controller/checkout/success.php. Найдите и удалите следующий код. Он должен располагаться перед строкой $this->cart->clear();:
// REES46 purchase tracking begin
$rees46_cookie_content = array('items' => array(), 'order_id' => $this->session->data['order_id']);
$current_cart = $this->cart->getProducts();
foreach ($current_cart as $cart_item) {
array_push($rees46_cookie_content['items'], array('item_id' => $cart_item['product_id'], 'price' => $cart_item['price'], 'amount' => $cart_item['quantity']));
}
setcookie('rees46_track_purchase', json_encode($rees46_cookie_content));
// REES46 purchase tracking end
Затем отредактируйте файл /catalog/controller/product/category.php. Найдите и удалите следующий код. Он должен располагаться перед строкой $category_info = $this->model_catalog_category->getCategory($category_id);:
// REES46 category tracking begin
$data['rees46_category_id'] = $category_id > 0 ? $category_id : '';
// REES46 category tracking end
Затем отредактируйте файл шаблона страницы категорий /catalog/view/theme/<НАЗВАНИЕ_ВАШЕЙ_ТЕМЫ>/template/product/category.tpl. Найдите и удалите следующий код. Он должен располагаться перед строкой <?php echo $footer; ?>:
<!-- REES46 category tracking begin -->
<script type="text/javascript">
var REES46CurrentCategory = "<?php echo isset($rees46_category_id) ? $rees46_category_id : ''; ?>";
</script>
<!-- REES46 category tracking end -->
И наконец отредактируйте файл /catalog/controller/product/search.php. Найдите и удалите следующий код. Он должен располагаться перед строкой if (isset($this->request->get['tag'])) {:
// REES46 Search Query tracking begin
$data['rees46_search_query'] = $search;
// REES46 Search Query tracking end