Удобный вид email-уведомлений админу о заказе Opencart 1.5.x

Удобный вид email-уведомлений админу о заказе Opencart 1.5.x
Формируемое в Опенкарт v1.5.x письмо-уведомление для администрации магазина о новом заказе выглядит не очень красиво и не информативно, неудобно для обработки поступивших заказов: не хватает информации о покупателе, а та информация, что есть, сложна для восприятия.
Можно сделать удобнее.
Формирование и отсылка писем происходит в файле

catalog/model/checkout/order.php

Тексты частей писем находятся в папке

catalog/language/russian/mail

 — из содержащихся там фраз формируются письма.

«-» будем отмечать что нужно удалить
«+» что нужно добавить
Так же описываем до и после 3-5 фраз кода для облегчения кода

Итак преступим:
Находим файл:

/catalog/language/russian/mail/order.php

// Text
$_['text_new_subject'] = '%s — заказ %s';
$_['text_new_greeting'] = 'Благодарим за интерес к товарам %s. Ваш заказ получен и поступит в обработку после подтверждения оплаты.';
— $_['text_new_received'] = 'Вы получили заказ.';
+$_['text_new_received'] = 'Вы получили заказ';
$_['text_new_link'] = 'Для просмотра Вашего заказа перейдите по ссылке:';
$_['text_new_order_detail'] = 'Детализация заказа';
$_['text_new_instruction'] = 'Инструкции';

После чего находим файл:

/catalog/model/checkout/order.php

И меняем код на:

$subject = sprintf ($language->get ('text_new_subject'), html_entity_decode ($this->config->get ('config_name'), ENT_QUOTES, 'UTF-8'), $order_id);

// Text
— $text = $language->get ('text_new_received') . «\n\n»;
— $text .= $language->get ('text_new_order_id') . ' ' . $order_id . «\n»;
— $text .= $language->get ('text_new_date_added') . ' ' . date ($language->get ('date_format_short'), strtotime ($order_info['date_added'])) . «\n»;
— $text .= $language->get ('text_new_order_status') . ' ' . $order_status . «\n\n»;
+ $text = $language->get ('text_new_received') . ' #'.$order_id . ' ('.date ($language->get ('date_format_short'), strtotime ($order_info['date_added'])).')' . «\n»;
+ // $text .= $language->get ('text_new_order_id') . ' ' . $order_id . «\n»;
+ // $text .= $language->get ('text_new_date_added') . ' ' . date ($language->get ('date_format_short'), strtotime ($order_info['date_added'])) . «\n»;
+ $text .= $language->get ('text_new_order_status') . ' ' . strip_tags ($order_status) . «\n\n»;
+
+ if ( !empty ($order_info['payment_method']) ) $text .= 'payment method: ' . $order_info['payment_method'] . «\n»;
+ // $text .= 'shipping method: ' . $order_info['shipping_method'] . «\n»;
+ if ( !empty ($order_info['email']) ) $text .= 'email: ' . $order_info['email'] . «\n»;
+ if ( !empty ($order_info['telephone']) ) $text .= 'telephone: ' . $order_info['telephone'] . ", ";
+ $text .= 'IP: http://geoiptool.com/en/?IP=' . $order_info['ip'] . «\n\n»;
+
$text .= $language->get ('text_new_products') . «\n»;

foreach ($order_product_query->rows as $result) {
— $text .= $result['quantity'] . 'x ' . $result['name'] . ' (' . $result['model'] . ') ' . html_entity_decode ($this->currency->format ($result['total'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8') . «\n»;
+ $text .= ' ';
+ $text .= html_entity_decode ($this->currency->format ($result['total'], $order_info['currency_code'], $order_info['currency_value']), ENT_NOQUOTES, 'UTF-8');
+ $text .= ' = ';
+ $text .= $result['quantity'] . ' x ' . $result['name'] . ' (' . $result['model'] . «)\n»;

$order_option_query = $this->db->query ("SELECT * FROM " . DB_PREFIX . «order_option WHERE order_id = '» . (int)$order_id . «' AND order_product_id = '» . $result['order_product_id'] . «'»);

@@ -457,10 +467,10 @@ class ModelCheckoutOrder extends Model {
}

$text .= «\n»;

$text .= $language->get ('text_new_order_total') . «\n»;

foreach ($order_total_query->rows as $result) {
+ $text .= ' ';
$text .= $result['title'] . ' ' . html_entity_decode ($result['text'], ENT_NOQUOTES, 'UTF-8') . «\n»;
}

Как сделать, что бы админ магазина получал такое же письмо как клиент?

Это очень удобно и очень просто сделать.
Открываем файл:

catalog/model/checkout/order.php

Находим строку с текстом

«// Send to additional alert email»

и парой строк выше будет:

$mail->setText ($text); или $mail->setText (html_entity_decode ($text, ENT_QUOTES, 'UTF-8'));

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

$mail->setHtml ($html);

У меня это находится в строке номер 500.
И после этого изменения вот какое письмо приходит администратору:
админ магазина получает такое же письмо как клиент opencart
Но при этом не приходит — комментарий клиента!
Комментарий к заказу бывает важен — по этому есть второе решение по поводу email-уведомления о заказе Opencart 1.5.x

Отправить ответ

Please Login to comment
Войти с помощью: 
  Subscribe  
Notify of
Authorization
*
*
Войти с помощью: 
Registration
*
*
*
Войти с помощью: 

4 × three =

Password generation