Перейти к содержанию

Интеграция Roistat с OpenCart 1.x

Внимание!

Интеграция подходит для OpenCart версий 1.x.

Как работает интеграция

При оформлении заявки на сайте автоматически создается новая сделка в CRM, в которую передается номер визита из куки браузера roistat_visit в дополнительное поле с именем roistat. Если менеджер принимает заказ по телефону, он может спросить промокод (настраивается отдельно)и ввести этот код в поле roistat.

Настройка интеграции

Шаг 1. Настройте OpenCart на сервере

  1. Скачайте архив по ссылке и скопируйте файлы из архива в соответствующие папки на сервере, где установлен OpenCart.

  2. Откройте файл catalog/model/checkout/order.php и найдите в начале файла следующий код:

public function addOrder($data) {

Строчкой ниже добавьте:

// Получаем промокод из cookie
$roistat_visit = ( ! empty($_COOKIE['roistat_visit'])) ? $_COOKIE['roistat_visit'] : null;
  1. Ниже строчки, которую вы только что добавили, найдите строчку:
$this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', store_id = '" . (int)$data['store_id'] . "', store_name = '" . $this->db->escape($data['store_name']) . "', store_url = '" . $this->db->escape($data['store_url']) . "', customer_id = '" . (int)$data['customer_id'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', payment_firstname = '" . $this->db->escape($data['payment_firstname']) . "', payment_lastname = '" . $this->db->escape($data['payment_lastname']) . "', payment_company = '" . $this->db->escape($data['payment_company']) . "', payment_company_id = '" . $this->db->escape($data['payment_company_id']) . "', payment_tax_id = '" . $this->db->escape($data['payment_tax_id']) . "', payment_address_1 = '" . $this->db->escape($data['payment_address_1']) . "', payment_address_2 = '" . $this->db->escape($data['payment_address_2']) . "', payment_city = '" . $this->db->escape($data['payment_city']) . "', payment_postcode = '" . $this->db->escape($data['payment_postcode']) . "', payment_country = '" . $this->db->escape($data['payment_country']) . "', payment_country_id = '" . (int)$data['payment_country_id'] . "', payment_zone = '" . $this->db->escape($data['payment_zone']) . "', payment_zone_id = '" . (int)$data['payment_zone_id'] . "', payment_address_format = '" . $this->db->escape($data['payment_address_format']) . "', payment_method = '" . $this->db->escape($data['payment_method']) . "', payment_code = '" . $this->db->escape($data['payment_code']) . "', shipping_firstname = '" . $this->db->escape($data['shipping_firstname']) . "', shipping_lastname = '" . $this->db->escape($data['shipping_lastname']) . "', shipping_company = '" . $this->db->escape($data['shipping_company']) . "', shipping_address_1 = '" . $this->db->escape($data['shipping_address_1']) . "', shipping_address_2 = '" . $this->db->escape($data['shipping_address_2']) . "', shipping_city = '" . $this->db->escape($data['shipping_city']) . "', shipping_postcode = '" . $this->db->escape($data['shipping_postcode']) . "', shipping_country = '" . $this->db->escape($data['shipping_country']) . "', shipping_country_id = '" . (int)$data['shipping_country_id'] . "', shipping_zone = '" . $this->db->escape($data['shipping_zone']) . "', shipping_zone_id = '" . (int)$data['shipping_zone_id'] . "', shipping_address_format = '" . $this->db->escape($data['shipping_address_format']) . "', shipping_method = '" . $this->db->escape($data['shipping_method']) . "', shipping_code = '" . $this->db->escape($data['shipping_code']) . "', comment = '" . $this->db->escape($data['comment']) . "', total = '" . (float)$data['total'] . "', affiliate_id = '" . (int)$data['affiliate_id'] . "', commission = '" . (float)$data['commission'] . "', language_id = '" . (int)$data['language_id'] . "', currency_id = '" . (int)$data['currency_id'] . "', currency_code = '" . $this->db->escape($data['currency_code']) . "', currency_value = '" . (float)$data['currency_value'] . "', ip = '" . $this->db->escape($data['ip']) . "', forwarded_ip = '" . $this->db->escape($data['forwarded_ip']) . "', user_agent = '" . $this->db->escape($data['user_agent']) . "', accept_language = '" . $this->db->escape($data['accept_language']) . "', date_added = NOW(), date_modified = NOW()");

Замените её на:

$this->db->query("INSERT INTO `" . DB_PREFIX . "order` SET invoice_prefix = '" . $this->db->escape($data['invoice_prefix']) . "', store_id = '" . (int)$data['store_id'] . "', store_name = '" . $this->db->escape($data['store_name']) . "', store_url = '" . $this->db->escape($data['store_url']) . "', customer_id = '" . (int)$data['customer_id'] . "', customer_group_id = '" . (int)$data['customer_group_id'] . "', firstname = '" . $this->db->escape($data['firstname']) . "', lastname = '" . $this->db->escape($data['lastname']) . "', email = '" . $this->db->escape($data['email']) . "', telephone = '" . $this->db->escape($data['telephone']) . "', fax = '" . $this->db->escape($data['fax']) . "', payment_firstname = '" . $this->db->escape($data['payment_firstname']) . "', payment_lastname = '" . $this->db->escape($data['payment_lastname']) . "', payment_company = '" . $this->db->escape($data['payment_company']) . "', payment_company_id = '" . $this->db->escape($data['payment_company_id']) . "', payment_tax_id = '" . $this->db->escape($data['payment_tax_id']) . "', payment_address_1 = '" . $this->db->escape($data['payment_address_1']) . "', payment_address_2 = '" . $this->db->escape($data['payment_address_2']) . "', payment_city = '" . $this->db->escape($data['payment_city']) . "', payment_postcode = '" . $this->db->escape($data['payment_postcode']) . "', payment_country = '" . $this->db->escape($data['payment_country']) . "', payment_country_id = '" . (int)$data['payment_country_id'] . "', payment_zone = '" . $this->db->escape($data['payment_zone']) . "', payment_zone_id = '" . (int)$data['payment_zone_id'] . "', payment_address_format = '" . $this->db->escape($data['payment_address_format']) . "', payment_method = '" . $this->db->escape($data['payment_method']) . "', payment_code = '" . $this->db->escape($data['payment_code']) . "', shipping_firstname = '" . $this->db->escape($data['shipping_firstname']) . "', shipping_lastname = '" . $this->db->escape($data['shipping_lastname']) . "', shipping_company = '" . $this->db->escape($data['shipping_company']) . "', shipping_address_1 = '" . $this->db->escape($data['shipping_address_1']) . "', shipping_address_2 = '" . $this->db->escape($data['shipping_address_2']) . "', shipping_city = '" . $this->db->escape($data['shipping_city']) . "', shipping_postcode = '" . $this->db->escape($data['shipping_postcode']) . "', shipping_country = '" . $this->db->escape($data['shipping_country']) . "', shipping_country_id = '" . (int)$data['shipping_country_id'] . "', shipping_zone = '" . $this->db->escape($data['shipping_zone']) . "', shipping_zone_id = '" . (int)$data['shipping_zone_id'] . "', shipping_address_format = '" . $this->db->escape($data['shipping_address_format']) . "', shipping_method = '" . $this->db->escape($data['shipping_method']) . "', shipping_code = '" . $this->db->escape($data['shipping_code']) . "', comment = '" . $this->db->escape($data['comment']) . "', total = '" . (float)$data['total'] . "', affiliate_id = '" . (int)$data['affiliate_id'] . "', commission = '" . (float)$data['commission'] . "', language_id = '" . (int)$data['language_id'] . "', currency_id = '" . (int)$data['currency_id'] . "', currency_code = '" . $this->db->escape($data['currency_code']) . "', currency_value = '" . (float)$data['currency_value'] . "', ip = '" . $this->db->escape($data['ip']) . "', forwarded_ip = '" . $this->db->escape($data['forwarded_ip']) . "', user_agent = '" . $this->db->escape($data['user_agent']) . "', accept_language = '" . $this->db->escape($data['accept_language']) . "', roistat_visit = '" . $this->db->escape($roistat_visit) . "', date_added = NOW(), date_modified = NOW()");
  1. Откройте файл admin/view/template/sale/order_form.tpl и найдите:
<tr> <td><?php echo $entry_fax; ?></td> <td><input type="text" name="fax" value="<?php echo $fax; ?>" /></td> </tr>

Добавьте ниже:

<!-- ROIstat --> <tr> <td>ROIstat ID</td> <td><input type="text" name="roistat_visit" value="<?php echo $roistat_visit; ?>" /></td> </tr> <!-- END ROIstat -->
5. Откройте файл admin/view/template/sale/order_info.tpl и найдите:

<tr> <td><?php echo $text_date_modified; ?></td> <td><?php echo $date_modified; ?></td> </tr>

Добавьте ниже перед < /table>:

<tr> <td>ROIstat:</td> <td><?php echo $roistat_visit; ?></td> </tr>
  1. Откройте файл admin/model/sale/order.php и найдите:
'date_modified' => $order_query->row['date_modified']

Замените эту строчку на:

'date_modified' => $order_query->row['date_modified'], 'roistat_visit' => $order_query->row['roistat_visit'],
  1. Откройте файл admin/controller/sale/order.php и найдите:

if (isset($this->request->post['email'])) { $this->data['email'] = $this->request->post['email']; } elseif (!empty($order_info)) { $this->data['email'] = $order_info['email']; } else { $this->data['email'] = ''; }
Добавьте ниже:

// roistat_visit
if (isset($this->request->post['roistat_visit'])) { $this->data['roistat_visit'] = $this->request->post['roistat_visit']; } elseif ( ! empty($order_info)) { $this->data['roistat_visit'] = $order_info['roistat_visit']; } else { $this->data['roistat_visit'] = ''; }
  1. В этом же файле admin/controller/sale/order.php найдите следующие строки:
$this->data['store_name'] = $order_info['store_name']; $this->data['store_url'] = $order_info['store_url']; $this->data['firstname'] = $order_info['firstname']; $this->data['lastname'] = $order_info['lastname'];

Добавьте ниже:

// ROIstat
$this->data['roistat_visit'] = $order_info['roistat_visit'];

Шаг 2. Настройте OpenCart в панели администратора

  1. В панели администратора OpenCart зайдите в Дополнения → Модули, найдите Экспорт информации Roistat и нажмите Установить.

1.png

  1. После установки модуля нажмите Изменить.

  2. На следующем экране укажите:

  3. ID проекта - номер вашего проекта в Roistat, который можно увидеть в адресной строке браузера (например,  http://cloud.roistat.com/project/1288 , где 1288 и будет Вашим номером проекта).

  4. Имя пользователя и Пароль придумайте самостоятельно.

2.png

После указания ID проекта счетчик Roistat автоматически установливается в поле для счетчика Google Analytics. Если это не произошло:

  1. В панели администратора OpenCart откройте Система → Настройки.
  2. Напротив нужного магазина нажмите Изменить.

3.png

  1. Перейдите на закладку Сервер.
  2. В поле Код Google Analytics вставьте код счетчика Roistat, код которого вы найдете в Roistat, в пункте меню Настройки → Код для сайта. 4.png

Шаг 3. Подключите OpenCart в каталоге интеграций

  1. В проекте Roistat откройте Каталог интеграций.
  2. В блоке CRM выберите  OpenCart и нажмите кнопку Настроить интеграцию.  
  3. В поле  URL сайта введите URL-адрес вашего сайта. Например,  http://mysite.ru.
  4. В полях Логин и Пароль введите то же, что вы ввели в полях Имя пользователя и Пароль в пункте 11 Шага 3 инструкции.
  5. Нажмите кнопку Сохранить. Загрузятся статусы сделок из OpenCart.

  6. Перетаскивая статусы сделок, распределите их по группам. Подробнее читайте в статье Распределение статусов сделок.