Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Как в OpenCart сделать чтобы в заказе сохранялся источник покупателя HTTP_REFERER

Практика




КАк в OpenCart сделать чтобы в заказе сохранялся источник покупателя HTTP_REFERER

сайт ,с которого он пришел

в файле в catalog/controll/common/header.php в index вставить:


if( isset($_SERVER['HTTP_REFERER']) && (
!isset($this->session->data['url_refferer'])
|| $this->session->data['url_refferer'] ==''
)) { //во втором условии проверяем, что data['url_refferer'] не существует, т.е. юзер зашел на сайт впервые
$this->session->data['url_refferer'] = $_SERVER['HTTP_REFERER'];
}


в файле /catalog/controller/checkout/confirm.php index
вставить

if (isset($this->session->data['url_refferer'] ) &&$this->session->data['url_refferer'] !='') {
$data['url_refferer'] = $this->session->data['url_refferer'];
$this->session->data['url_refferer']='';
}
else $data['url_refferer'] ='no_info_reffer';


в файле /catalog/model/checkout/order.php function addOrder

вставить

"', shipping_zone = '" . $this->db->escape($data['shipping_zone']) .
"', url_refferer = '" . $this->db->escape($data['url_refferer']) .


"', shipping_zone_id = '" . (int)$data['shipping_zone_id'] .

для админки
в файле /admin/view/template/common/home.tpl вставить с изменениями

 <td class="right"><?php echo $column_order; ?></td>
<td class="left"><?php echo $column_customer; ?></td>
<td class="left"><?php echo $column_status; ?></td>
<td class="left"><?php echo $column_date_added; ?></td>
<td class="right"><?php echo $column_total; ?></td>
<td class="right">Источник</td>
<td class="right"><?php echo $column_action; ?></td>
</tr>
</thead>
<tbody>
<?php if ($orders) { ?>
<?php foreach ($orders as $order) { ?>
<tr>
<td class="right"><?php echo $order['order_id']; ?></td>
<td class="left"><?php echo $order['customer']; ?></td>
<td class="left"><?php echo $order['status']; ?></td>
<td class="left"><?php echo $order['date_added']; ?></td>
<td class="right"><?php echo $order['total']; ?></td>
<td class="right"><a target="_blank" href="<?php echo $order['url_refferer']; ?>"><?php echo $order['url_refferer']; ?></a></td>
<td class="right"><?php foreach ($order['action'] as $action) { ?>
[ <a href="<?php echo $action['href']; ?>"><?php echo $action['text']; ?></a> ]
<?php } ?></td>
 
в файле /admin/controller/common/home.php вставить
$this->data['orders'][] = array(
'order_id' => $result['order_id'],
'customer' => $result['customer'],
'status' => $result['status'],
'url_refferer' => $result['url_refferer'],
'date_added' => date('j.m.Y G:i',strtotime($result['date_added']) ),
'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
'action' => $action
);




в файле /admin/model/sale/order.php

вставить с изменениями
public function getOrders($data = array()) {
$sql = "SELECT o.order_id,
o.url_refferer,
CONCAT(o.firstname,....

 
Можно сделать по по аналогии сохранение очков товара, для этого нужно даобаить в БД order_products столбец points, но при изменении заказа через админку очки будут  сбрасываются на 0, как поправить?

в каких файлах делали изменения , и делали ли вы тестовый var_dump() именно перед самым моментом сохрания ?
чтобы видить что вооще в базу пишите?

var_dump() не делал, проблема возникает раньше, чтобы баллы засунуть в базу их надо откуда-то взять, я не пойму логику добавления товара в заказ через админку, добавляешь товар он берет его Модель, Опции и Цену, но как заставить его брать Бонусные баллы это товара? Ковырял order_form.tpl, controller->order.php

P.S. в php только начинаю вникать, клиентскую часть заставил работать нормально, т.е. брем баллы товара и суем их в базу в order_product в новуй столбец points. К движку прикручен Simple кстати
 


здесь я подробно написал как я когда то добавлял в админке
новое поле к товару в оперкарте

Поле товара не новое, оно уже есть называется points (бонусные баллы), объясню подробнее:
- Я добавил в заказ в таблицу order_product дополнительное поле points, т.е. когда человек делает заказ туда пишутся бонусные баллы, все прекрасно.
При редактировании заказа через админку (например человек забыл что-то заказать, позвонил и попросил добавить в заказ что-то), при добавлении товара в существующий заказ я хочу чтобы бонусные баллы добавляемого товара тоже сохранялись. Затуп произошел на моменте добавления товара, т.е. я не понял как вытащить из продукта кроме модели и цены еще и бонусные баллы points (не путать с reward points)

Что я менял:

1. Добавил в базу в oc_order_product столбец points

2. catalog/controller/checkout/simplecheckout.php
Добавил:

'points' => $product['points']


3. catalog/model/checkout/order.php

Добавил:
"', points = '" . $this->db->escape($product['points'])

упростим задачу, нужно чтобы при редактировании и добавлении заказа через админку при добавлении товара в этот заказ отображались его бонусные баллы (admin/view/template/sale/order_form.tpl)
создано: 2013-12-21
обновлено: 2021-03-13
1043



Рейтиг 10 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей

Комментарии


Оставить комментарий
Если у вас есть какое-либо предложение, идея, благодарность или комментарий, не стесняйтесь писать. Мы очень ценим отзывы и рады услышать ваше мнение.
To reply

Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)

Термины: Выполнение скриптов на стороне сервера PHP (LAMP) NodeJS (Backend)