Урок 29 Меняем шаблон письма админу на Opencart 3

В одном из уроков мы уже разбирались, как отправить уведомление администратору о смене статуса заказа. Сегодня же я хотел остановиться на одном недочете, на мой взгляд, который есть в 3 опенкарте.
Уверен, раз вы читаете данную статью, Вы заметили, что в третьем опенкарте письмо о заказе, которое приходит администратору, сократили до безобразия, в отличии от того же ocstore 2.3, где письмо содержит подробную информацию.
Кто то может сказать, что достаточно сообщения о том, что есть заказ и его детали можно посмотреть в админке. Возможно, однако это с ПК может и относительно удобно, однако со смартфона работать в админ панели ocstore то еще удовольствие. А если еще и интернет «тугой»… В общем Вы поняли. Гораздо удобнее сразу на почте увидеть всю необходимую информацию о заказе и оперативно связаться с клиентом для уточнения деталей.
Изобретать велосипед мы не будем, хотя можно было бы. Пойдем по пути наименьшего сопротивления и сделаем все буквально за несколько минут. Изменения будут вноситься только в двух файлах:
- контроллер
- шаблон
Рекомендую сделать резервные копии этих файлов, чтобы можно было быстро откатиться если что то сделаете не правильно.
Поехали?
Открываем файл контроллера
1 |
/catalog/controller/mail/order.php |
Сначала необходимо убрать часть кода, который ранее отправлял письмо администратору, чтобы не было дублей писем. Для этого необходимо удалить код с 333 по 472 строку включительно. Начинается он со строк
1 2 |
// Admin Alert Mail public function alert(&$route, &$args) { |
Далее в этом же файле примерно на 276 строке сразу после
1 2 3 4 5 6 |
$mail->setTo($order_info['email']); $mail->setFrom($from); $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode(sprintf($language->get('text_subject'), $order_info['store_name'], $order_info['order_id']), ENT_QUOTES, 'UTF-8')); $mail->setHtml($this->load->view('mail/order_add', $data)); $mail->send(); |
Вставляем
1 2 3 4 5 6 |
$mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($order_info['store_name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode(sprintf('ЗДЕСЬ_УКАЖИТЕ_ОГЛАВЛЕНИЕ_ПИСЬМА'), ENT_QUOTES, 'UTF-8')); $mail->setHtml($this->load->view('mail/order_alert', $data)); $mail->send(); |
Пропишите нужную тему письма для идентификации. Например, Письмо с сайта www…
С контроллером закончили. Теперь необходимо изменить содержание письма о заказе, которое будет приходить на почту администратора магазина, а соответственно переходим к правке шаблона письма. Открываем файл
1 |
/catalog/view/theme/yourtheme/template/mail/order_alert.twig |
По сути мы перенесем в него содержимое файла
1 |
/catalog/view/theme/yourtheme/template/mail/order_add.twig |
с одним отличием, а именно удалим строку
<p style=»margin-top: 0px; margin-bottom: 20px;»>{{ text_greeting }}</p>
1 |
<p style="margin-top: 0px; margin-bottom: 20px;">{{ text_greeting }}</p> |
Теперь сохраняем и заливаем измененный файлы. Не забываем обновлять модификаторы и чистить кеш. Это крайне важно на 3 линейке опенкарта. Если все сделано правильно, то после оформления заказа Вы должны увидеть следующее сообщение на почте
P.S. Задали вопрос, что пропал комментарий к заказу от покупателя. Виду того что мы используем шаблон письма, которое приходит покупателю, в нем отсутствует комментарий к заказу. Для того, чтобы Вам приходил комментарий необходимо сделать доработки в контроллере и шаблоне. Начнем с контроллера
1 |
/catalog/controller/mail/order.php |
Находим первое вхождение примерно на 265 строке
1 |
$mail = new Mail($this->config->get('config_mail_engine')); |
И перед ним добавляем
1 |
$data['comment'] = strip_tags($order_info['comment']); |
В этом же файле находим фрагмент кода
1 |
$data['text_greeting'] = sprintf($language->get('text_greeting'), $order_info['store_name']); |
и под ним добавляем
1 |
$data['text_comment'] = $this->language->get('text_comment'); |
Все. С контроллером закончили, переходим к шаблону письма.
1 |
/catalog/view/theme/yourtheme/template/mail/order_alert.twig |
добавьте код.
1 2 3 4 5 |
{% if comment %} {{ text_comment }} {{ comment }} {% endif %} |
Ну и соответственно стилистически уже подгоните под свои потребности.
Все супер, только общий комментарий к заказу перестал приходить после этих изменений
Здравствуйте. Чуть позже гляну.
Внес дополнения в статью, которые помогут Вам решить проблему.
Спасибо огромное! Все получилось!
Превосходно!
Удаление куска «// Admin Alert Mail» привело к тому, что на рабочую почту перестали приходить сообщения.
Пришлось только в указанное Вами место вставить 6строк. (order.php)
Замена кода в order_alert привело к тому, что на почту админа приходит HTML код письма.
«Памажите люди добрыя»
Здравствуйте. В уроке мы кроме удаления куска кода отправляющего оповещение админу, добавили код, который отправляет админу письмо нового формата. Пересмотрите, возможно Вы что то сделали не верно.
Результат. В order_alert поменял две строчки. Письма приходят и админу и покупателю. Покупателю — с его-же комментариями. Да и бог с ним. Пусть читает, что написал.
от души бро