xandeadx.ru Блог музицирующего веб-девелопера

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.

Написанное актуально для Commerce 1.x
Похожие записи

Комментарии RSS

Сделал наконец то красивое и удобное письмо.
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 р.

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании