Письмо о заказе Opencart

03.02.2015 04:41

В opencart по умолчанию не предусмотрена отправка телефона и адреса клиента при оформлении заказа. Почему так сделано- загадка. Чтобы не залазить каждый раз в админку, абсолютно все клиенты просят добавить как минимум телефон в письмо о заказе. Opencart отправляет его из файла order.php, находящегося в /catalog/model/checkout, находим код:

$text .= $language->get('text_new_footer') . "

";

$mail = new Mail();
$mail->protocol = $this->config->get('config_mail_protocol');

Немного выше этого (ниже нельзя, вылезем за рамки разметки письма) добавляем отправку почты, телефона и адреса клиента:

$text.="email: ".$order_info['email']."

";//Отправляем почтовый ящик
$text.="Телефон: ".$order_info['telephone']."

";//телефон
$text.="Адрес: ".$order_info['payment_address_1']."

";//первую строку адреса

Таких мест в файле два. Первое - для отправки письма на основную почту, а второе - для отправки на дополнительные почтовые ящики.

Если Вам нужна ещё какая-либо информация в письме, то вся она в переменной $order_info. Что бы посмотреть что в ней содержится достаточно написать print_r($order_info) где-нибудь в конце файла и при обновлении страницы получим полный вывод по переменной.

К счастью во второй версии полностью переделано оповещение о заказе. Opencart теперь присылает полную информацию о клиенте.

В дополнение к вышеописанному:

Если Вам нужно убрать информацию о регионе и стране из письма о заказе, то вся она содержится в переменных $order_info['payment_address_format'] и $order_info['shipping_address_format']. Для каждой из них есть правила составления адреса, например:

if ($order_info['payment_address_format']) {
$format = $order_info['payment_address_format'];
} else {
$format = '{firstname} {lastname}' . "
" . '{company}' . "
" . '{address_1}' . "
" . '{address_2}' . "
" . '{city} {postcode}' . "
" . '{zone}' . "
" . '{country}';
}

Чтобы всегда срабатывало своё правило, удаляем условие и оставляем только:

$format = '{firstname} {lastname}' . "
" . '{company}' . "
" . '{address_1}' . "
" . '{address_2}' . "
" . '{city} {postcode}' . "
" . '{zone}' . "
" . '{country}';

И уже в этой строке меняем местами или удаляем метки как душе угодно.



Быстрый заказ opencart 2

Стандартный opencart имеет очень большую форму заказа на все случаи жизни. В Российских реалиях нужен простой заказ - это контактные данные: имя, телефон, почта и адрес, регион фирма и т.д. не нужны. В большинстве случаев дальше оператор магазина сам перезванивает клиенту и уточняет детали заказа.

Переделываем верхнее меню opencart

Т.к. мы уже переделали opencart под быстрое оформление заказа, теперь нужно убрать из верхнего меню лишние элементы, вроде закладок и личного кабинета. А так же добавить немного нужных ништяков.


(15) Комментариев

Алекс - 31.05.2015 07:07:30
- 0    + 0
тогда тут продолжим )

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


//if ($order_info['shipping_address_format']) {
//$format = $order_info['shipping_address_format'];
//} else {
$format = '{firstname} {lastname}' . "
" . '{company}' . "
" . '{address_1}' . "
" . '{address_2}' . "
" . '{city} {postcode}' . "
". '{firstname} {lastname}' . '506' ;
//}


но в письме все равно остается регион

http://clip2net.com/s/3ixHti2
Илья - 31.05.2015 08:59:40
- 0    + 0
Не буду загадывать, с этим модулем не работал. Теоретически может и из-за него. На чистом опенкарте только что проверил, всё нормально.
Отключите этот модуль доставки и попробуйте ещё раз. И кстати какая версия опенкарт?
Алекс - 31.05.2015 09:52:49
- 0    + 0
версия 2
скорее всего из-за него. потому что Адыгея указана в настройках этого модуля.
Алекс - 31.05.2015 10:01:20
- 0    + 0
нет не от него ) отключил модуль доставки. все равно в письмо идет эта информация. может в самом html коде тоже подправить условие?



text_payment_address1

text_shipping_address1





payment_address

shipping_address


Алекс - 31.05.2015 10:02:19
- 0    + 0
http://clip2net.com/s/3ixZiAg
Илья - 31.05.2015 11:02:47
- 0    + 0
Да нет, тут как не крути адреса формируются в каком-либо контроллере, а не шаблоне. Похоже без подробного изучения кода ничем не смогу помочь.
Алекс - 31.05.2015 11:22:07
- 0    + 0
а если я скину кусок кода который вроде как отвечает за вывод html ? )
Илья - 31.05.2015 11:24:15
- 0    + 0
Лучший полный архив всей цмски. на frfr_jan@mail.ru.
Алекс - 31.05.2015 11:48:29
- 0    + 0
вообще весь? одной папки catalog не хватит? вроде в ней все скрипты и вьюшки
Илья - 31.05.2015 13:24:06
- 0    + 0
да, каталога хватит
Алекс - 31.05.2015 14:15:17
- 0    + 0
отправил
Илья - 31.05.2015 14:21:44
- 0    + 0
Ок, вечером погляжу.

Развернул всё на http://opencart.allwebstuff.info/, можно позаказывать для теста от туда, письма улетают нормальные. Вывод один- проблема в модуле доставки.
Алекс - 04.06.2015 17:05:17
- 0    + 0
вобщем не помогло ничего. пришлось в бд переименовать адыгею на рф.
Starik - 27.07.2015 22:29:47
- 0    + 0
В разделе локализации у стран есть поле "Формат адреса". Может быть оно отвечает за формат адреса в письмах?
Если нет, то может знаете где оно используется?
Илья - 28.07.2015 03:08:48
- 0    + 0
Да, так и есть, это формат адреса в письме. По умолчанию используется следующий формат:


$format = '{firstname} {lastname}' . "
" . '{company}' . "
" . '{address_1}' . "
" . '{address_2}' . "
" . '{city} {postcode}' . "
" . '{zone}' . "
" . '{country}';


При задании формата через админку "
" не надо использовать, это всеголишь символ переноса строки.