В рулсе commerce_checkout_order_email
, отправляющем покупателю уведомление о заказе, уже доступен токен со списком товаров — [commerce-order:commerce_line_items]
, но по сути это html код отрендеренной вьюшки commerce_line_item_table
. Без модулей, позволяющих рассылать HTML письма, результат в plain text выглядит ужасно.
Решение — вместо токена использовать следующий код:
<?php
$commerce_order_wrapper = entity_metadata_wrapper('commerce_order', $commerce_order);
$line_item_types = commerce_product_line_item_types();
foreach ($commerce_order_wrapper->commerce_line_items as $line_item) {
if (!in_array($line_item->type->value(), $line_item_types)) continue;
echo format_string('- @title, @unit_amount @currency x @quantity', array(
'@title' => $line_item->commerce_product->title->value(),
'@quantity' => $line_item->quantity->value(),
'@unit_amount' => $line_item->commerce_unit_price->amount_decimal->value(),
'@currency' => $line_item->commerce_unit_price->currency_code->value(),
)) . "\n";
}
?>
Для работы должен быть включён модуль PHP filter.
Для продвинутой темизации писем Commerce есть модуль Commerce Email.
Написанное актуально для
Commerce 1.x
Похожие записи
- AJAX в форме корзины Commerce 2
- Как в #ajax callback сгенерировать новую форму чтобы ей не мешали GET и POST данные текущего запроса
- Пример модуля для импорта товаров в Drupal Commerce 2
- Добавляем возможность использовать токены в адресе получателя контактной формы
- Отправить уведомление о новом заказе в Commerce 2
Комментарии
Сделал наконец то красивое и удобное письмо.
1. Поставил Commerce Email - 7.x-2.x-dev, хотя правильнее было бы взять нужный код и вставить в свой модуль, но лень ;-)
2. Отключаем правило в рулсе отправка мыла по умолчанию только заказчику.
3. Токен [commerce-email-order-items] модуля бредоват и не красив вывод - пишем свой токен [mymodule-order-items] это всего два хука hook_token_info_alter() и hook_tokens(). И выводим вьюху: return views_embed_view('commerce_cart_summary', 'default', $order_wrapper->order_id->value());
Удобно настраивать! По такому же принципу в сбоке кикстарт2 сделано (от туда идею и взял)
4. Commerce Email требует htmlmail это и бесит. Мне этот модуль не нужен был, хотя пользуются им аж 31,950 sites, мне больше понравился mimemail + в нем же есть и включаем Mime Mail CSS Compressor (mimemail_compress). В настройках Mail System (mailsystem) admin/config/system/mailsystem выбираем MimeMailSystem везде + свою тему.
Всё. Красивая вьюха-таблица со стилями вместо классов приходит на почту, если у вас красивая тема ;-)
Профит.
с Mimemail можно и
[commerce-order:commerce_line_items]
использоватьИспользовать то можно, проверил только что, вывод почти одинаков и похож на вьюху - commerce_line_item_table в ней подвала нет - Commerce Order: Общая сумма заказа , только не хватает:
Подытог 1 р.
Экспресс доставка 2 р.
Общая сумма заказа 3 р.
Добавить комментарий