Всё о web

Для чайников и не только


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

Февраль 3, 2015

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

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

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

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

$text.="email: ".$order_info['email']."\n\n";//Отправляем почтовый ящик
$text.="Телефон: ".$order_info['telephone']."\n\n";//телефон
$text.="Адрес: ".$order_info['payment_address_1']."\n\n";//первую строку адреса

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

Если Вам нужна ещё какая-либо информация в письме, то вся она в переменной $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}' . "\n" . '{company}' . "\n" . '{address_1}' . "\n" . '{address_2}' . "\n" . '{city} {postcode}' . "\n" . '{zone}' . "\n" . '{country}';
}

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

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

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



Комментарии

15 комментариев | “Письмо о заказе Opencart

  1. тогда тут продолжим )

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


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

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

    http://clip2net.com/s/3ixHti2

  2. Илья Илья:

    Не буду загадывать, с этим модулем не работал. Теоретически может и из-за него. На чистом опенкарте только что проверил, всё нормально.
    Отключите этот модуль доставки и попробуйте ещё раз. И кстати какая версия опенкарт?

  3. версия 2
    скорее всего из-за него. потому что Адыгея указана в настройках этого модуля.

  4. нет не от него ) отключил модуль доставки. все равно в письмо идет эта информация. может в самом html коде тоже подправить условие?

    text_payment_address1

    text_shipping_address1

    payment_address

    shipping_address

  5. Илья Илья:

    Да нет, тут как не крути адреса формируются в каком-либо контроллере, а не шаблоне. Похоже без подробного изучения кода ничем не смогу помочь.

  6. а если я скину кусок кода который вроде как отвечает за вывод html ? )

    1. Илья Илья:

      Лучший полный архив всей цмски. на frfr_jan@mail.ru.

  7. вообще весь? одной папки catalog не хватит? вроде в ней все скрипты и вьюшки

  8. Илья Илья:

    да, каталога хватит

  9. Илья Илья:

    Ок, вечером погляжу.

    Развернул всё на http://opencart.allwebstuff.info/, можно позаказывать для теста от туда, письма улетают нормальные. Вывод один- проблема в модуле доставки.

  10. вобщем не помогло ничего. пришлось в бд переименовать адыгею на рф.

  11. Аватар Starik:

    В разделе локализации у стран есть поле «Формат адреса». Может быть оно отвечает за формат адреса в письмах?
    Если нет, то может знаете где оно используется?

  12. Илья Илья:

    Да, так и есть, это формат адреса в письме. По умолчанию используется следующий формат:

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

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

Comments are closed.