Minishop2 как отредактировать письмо заказа

Minishop2 как отредактировать письмо заказа MODX Revo

По умолчанию после заказа на почту менеджера прилетает письмо с минимальным количеством информации: Изображение товара, Наименование (с ссылкой на товар), Количество, Вес, Стоимость — в 90% случаях данной информации для менеджера недостаточно. Понятно что можно предоставить им доступ в админку, чтобы они смотрели информацию там. Еще можно изменить стандартный логотип на свой. А иногда некоторые из этих полей не нужны, в моем случае вес не нужен (и он убран из корзины).

Стандартное письмо о заказе

В данном уроке разберем как отредактировать письмо о заказе: удалить из него стандартные поля которые не нужны, TV поля, или что-то еще.

Редактирование стандартного письма заказа

Для того чтобы отредактировать стандартное письмо (в моем случае из него нужно удалить вес), сделаем копию стандартного чанка tpl.msEmail, назовем ее tpl.msEmail.custom— чтобы при обновлении Minishop2 у нас не чего не затерлось.

Делаем копию чанка

Теперь можно заменить логотип минишопа на свой, для этого измените строку

<img style="{$style.logo}"
                src="{$site_url}{$assets_url}components/minishop2/img/web/ms2_small@2x.png"
                alt="{$site_url}"
                width="120" height="90"/>

к примеру так:

<img style="{$style.logo}" src="{$site_url}/images/logotype.png" alt="{$site_url}" width="180" height="95"/>

Теперь мне нужно удалить ненужное поле: вес.

Как удалить вес

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

[[!msGetOrder?
   &tpl=`tpl.msEmail.custom`
]]
{'!msGetOrder'|snippet:[
	'tpl' => 'tpl.msEmail.custom'
]}

Добавляем в письмо контактную информацию и информацию о доставке (для админа или менеджера)

Чанк письма, отправляемого администратору (менеджеру), это tpl.msEmail.new.manager (расширяет чанк tpl.msEmail).

Сниппету msGetOrder (который обрабатывает чанки писем), по умолчанию доступны следующие переменные: order, products, user, address, delivery, payment и total. И их можно использовать при оформлении письма. См. документацию.

Создаем копию чанка tpl.msEmail.new.manager, и назовем ее tpl.msEmail.new.manager.custom.

Там по умолчанию следующее содержимое:

{extends 'tpl.msEmail'}

{block 'title'}
    {'ms2_email_subject_new_manager' | lexicon : $order}
{/block}

Верхняя строка подключаем содержимое из блока title в чанк tpl.msEmail , а так как мы уже используем новый чанк следовательно мы должны расширять его, по этому замените {extends 'tpl.msEmail'} на {extends 'tpl.msEmail.custom'}.

Теперь добавим основную информацию к письму от заказа.

Шпаргалка по основным полям (поле: стандартный вызов / вызов при помощи fenom)

Покупатель: [[+address.receiver]] / {$address.receiver}
Телефон: [[+address.phone]] / {$address.phone}
Почта: [[+user.email]] / {$user.email}
Индекс: [[+address.index]] / {$address.index}
Область: [[+address.region]] / {$address.region}
Город: [[+address.city]] / {$address.city}
Улица: [[+address.street]] / {$address.street}
Дом: [[+address.building]] / {$address.building}
Квартира: [[+address.room]] / {$address.room}
Способ доставки: [[+delivery.name]] / {$delivery.name}
Тип оплаты: [[+payment.name]] / {$payment.name}
Комментарий: [[+address.comment]] / {$address.comment}

Универсальный способ вывода полей относящихся к адресу доставки:

{foreach $address as $key => $value}
    {if $value? && $key not in ['id','user_id','createdon','updatedon']}
    <tr>
      <td>{('ms2_frontend_'~$key) | lexicon}:</td>
      <td>{$value}</td>
    </tr>
    {/if}
{/foreach}

После добавления этих полей у меня получился чанк tpl.msEmail.new.manager.custom со следующим содержимым:

{extends 'tpl.msEmail.custom'}

{block 'title'}
    {'ms2_email_subject_new_manager' | lexicon : $order}
    <h3 style="padding-left:30px">Информация о заказчике и доставке</h3>
    <table style="width:90%;margin:auto;">
      <thead></thead>
      <tbody>
        <tr>
          <td><strong>Способ доставки:</strong></td>
          <td>{$delivery.name}</td>
        </tr>
        <tr>
          <td><strong>Способ оплаты:</strong></td>
          <td>{$payment.name}</td>
        </tr>
        <tr>
          <td><strong>Email:</strong></td>
          <td>{$user.email}</td>
        </tr>
        {foreach $address as $key => $value}
        {if $value? && $key not in ['id','user_id','createdon','updatedon']}
        <tr>
          <td><strong>{('ms2_frontend_'~$key) | lexicon}:</strong></td>
          <td>{$value}</td>
        </tr>
        {/if}
        {/foreach}
      </tbody>
    </table>
    <hr>
{/block}

Теперь нужно изменить чанк письма для отправки менеджеру. Для этого идем в Пакеты — minishop2 — Настройки, переходим во вкладку Статусы заказа, и на против Нового заказ нажимаем на кнопку изменить.

Редактируем статус заказа

и в сплывающем окне меняем чанк для отправки менеджеру.

Меняем чанк отправки менеджеру

Теперь если заполнить все поля

Пример заполнения на странице заказа товара

то получим вот такое письмо на почту:

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

Как добавить TV-поле в письмо

Т.к. письмо формируется сниппетом msGetOrder, в его вызов нужно добавить параметр includeTVs и перечислить в нем названия нужных TV полей (через запятую). В шаблоне письма они доступны в цикле $products, и вызываются так: $product.my_tv_name или так {$product.id | resource: 'my_tv_name'}

Дополнительная информация

Где находится чанк письма, отправляемого покупателю
Как поменять почтовый ящик админа?
Как поменять почтовый ящик отправителя?
Не приходят письма, что делать?
Как поменять заголовок письма?
Где формируется письмо? В каком сниппете?
Какие плейсхолдеры доступны в письме по умолчанию?
Где отредактировать шаблоны писем покупателя и менеджера?
Как добить свои поля в форму заказа
Понравилась статья? Можно поблагодарить автора: отправив ему донат на
YooMoney
или
Qiwi
. Либо поделившись статьей ☟
Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( Пока оценок нет )
Web-Revenue.ru