Drupal → Отправить в письме к заказу список товаров (Commerce)
В рулсе 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.
Комментарии
Сделал наконец то красивое и удобное письмо.
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 р.
Оставить комментарий