Дополнительные поля в письме покупателю

категория: , Дорабатываем


Опубликовано: 31.05.2015 Просмотров: 4685 Комментарии: 5


Дополнительные поля в письме покупателю

В стандартном функционале Opencart после заказа покупателю приходит письмо на почту с данными заказа. С коробки письмо достаточно информативное


В стандартном функционале Opencart после заказа покупателю приходит письмо на почту с данными заказа. С коробки письмо достаточно информативное, в нем идет перечень покупаемых товаров (название, к-во, модель, цена), их опции, плата за доставку и т.д. Однако в некоторых случаях мало данных в письме, для тех, кто использует дополнительные поля (sku, location, mpn и т.п.)

Для вывода дополнительных данных в письме покупателю, открываем файл модель, с помощью которой и отсылается письмо заказчику catalog/model/checkout/order.php находим строку объявления массива для товаров

$template->data['products'] = array();

После или перед ней вставляем

$this->load->model('catalog/product');

Для заполнения массива данными о заказанных товарах в opencart используется таблица order_product где у нас есть ограниченное количество полей и соответственно нет тех что нам нужны.

Таблица заказа в базе данных Opencart

Для того что бы получить необходимые данные о товаре нам надо сделать выборку из двух таблиц order_product и product где доступны все поля товара (sku, upc, ean, jan, isbn, mpn, location и т.д.). Поможет нам функция выборки данных о товаре по его product_id.

Чуть ниже находим строку

$template->data['products'][] = array(

Перед! ней добавляем выборку getProduct вставляя код:

$product_data = array();

$product_data = $this->model_catalog_product->getProduct($product['product_id']);

После этого нам надо добавить нужные поля в массив товаров:

'sku'    => $product_data['sku'],

или

'location'    => $product_data['location'],

в зависимости что нам надо, можно и все добавить.

Далее для добавления поля в шаблон письма открываем файл: catalog/view/theme/default/template/mail/order.tpl

И в нужном месте вставляем вывод нужного поля, например:

<?php echo $product['sku']; ?>

Обязательно смотрите на верстку, там она табличная по этому создавайте новую ячейку таблицы и вставляйте туда данные.

С помощью данной доработки можно сделать вывод не только дополнительных полей, а и описание, фото и все данные, которые есть в базе товаров.


Комментарии:


Фото комментатора

Васо 31.05.2015

Так же часто бывает ситуация, когда необходимо включить комментарий, который пользователь добавлял во время заказа, не только админу, но и пользователю был отправлен, для этого идём по файлу: catalog/model/checkout/order.php ищем функцию: public function confirm там нам нужно вот эти строки: if ($comment && $notify) { $template->data['comment'] = nl2br($comment); } else { $template->data['comment'] = ''; } заменить на: if ($comment && $notify) { $template->data['comment'] = nl2br($comment); } else { $template->data['comment'] = nl2br($comment); //''; }
Администратор

Ответ for-opencart.com 31.05.2015

Благодарю за информацию, предоставляю в форматированном виде:

В файле catalog/model/checkout/order.php в функции public_function_confirm ищем строки:

if ($comment && $notify) {
  $template->data['comment'] = nl2br($comment);
} else {
  $template->data['comment'] = '';
}

заменяем на:

if ($comment && $notify) {
  $template->data['comment'] = nl2br($comment);
} else {
  $template->data['comment'] = nl2br($comment); //'';
}
Фото комментатора

Дмитрий 16.10.2015

Доброго времени суток! Подскажите, а как сделать тоже самое для письма админу?
Администратор

Ответ for-opencart.com 16.10.2015

Как вариант, попробовать сделать что бы и админу и пользователю отправлялось одно и то же письмо. Тут на сайте увы пока что нет, но на просторах интернета есть информация как отправлять одинаковые письма как покупателю, так и администратору. Это достаточно удобно т.к. там есть вся информация + в удобном виде все товары. В разрабатываемых мною магазинах я так делаю, чего и всем рекомендую.

Фото комментатора

Александр 17.05.2017

а как быть, если в файле order.php нет функции public_function_confirm есть следующие public function addOrder($data) public function editOrder($order_id, $data) public function deleteOrder($order_id) public function getOrder($order_id) public function addOrderHistory opencart 2.1.0.2 установлено модуль упрощенного оформления Short Checkout 1.0
Администратор

Ответ for-opencart.com 17.05.2017

функция называется function Confirm раздельно конечно

Фото комментатора

Дмитрий 17.05.2017

Доброго дня Вопрос в следующем 1. Как вытянуть в шаблон письма заказа определенные атрибуты карточки товара? 2. Как вытянуть в шаблон заказа при быстром заказе, доставку и она выводилась в письме и + суммировалась в колонке Итого? Потому, что при быстром заказе, письмо уходит и заказ формируется мимо корзины, т.к все необходимые переменные он подхватывает непосредственно из корзины, а тут получается мимо корзины
Администратор

Ответ for-opencart.com 17.05.2017

Просто делаете в модели выборку атрибутов:

$this->model_catalog_product->getProductAttributes($product['product_id'])

и уже как в карточке товара перебираете циклом

За доставку надо думать как, можно сделать но не просто, не на пару строк кода.

Фото комментатора

Александр 26.07.2018

"Как вытянуть в шаблон письма заказа определенные атрибуты карточки товара?" Уже измучился, не получается вывести атрибуты. Перепробовал кучу вариантов. Кто поможет?
Администратор

Ответ for-opencart.com 26.07.2018

В файле catalog/model/sale/order.php в функции где готовятся данные в шаблон письма делаете выборку атрибутов и их же выводите в шаблоне письма.

Быстрый поиск

Похожее

Новое на сайте