Письмо со списком заказанных товаров в Drupal 7 Commerce 1 [commerce-order:commerce_line_items]


17:41, 21/03/2018

В Drupal Commerce 1 существует токен [commerce-order:commerce_line_items], который формируется из Views /admin/structure/views/view/commerce_line_item_table/edit
С помощью этого токена можно добавить к письму получаемому покупателем список заказанных товаров. Проблема в том, что выглядит этот список просто отвратительно.

Решением адекватного отображения товаров в присылаемом письме может быть замена токена на PHP код, который нужно добавить в правило(rule) /admin/config/workflow/rules/reaction/manage/commerce_checkout_order_email/edit/3 (в поле The mail's message body.)

commerce_line_items as $line_item) {
  if (!in_array($line_item->type->value(), $line_item_types)) continue;

  $title = $line_item->commerce_product->title->value();
  $quantity = round($line_item->quantity->value(), 0) . " шт.";
  $unit_amount = $line_item->commerce_unit_price->amount_decimal->value();
  $currency = ($line_item->commerce_unit_price->currency_code->value() == 'RUB') ? 'руб.' : $line_item->commerce_unit_price->currency_code->value();
  $units_price = round($line_item->quantity->value(), 0) * $unit_amount;

  echo format_string("– @title\n@quantity (@unit_amount @currency за 1 шт.)\nНа сумму: @units_price @currency", [
    '@title' => $title,
    '@quantity' => $quantity,
    '@unit_amount' => $unit_amount,
    '@currency' => $currency,
    '@units_price' => $units_price,
  ]) . "\n\n";
}
?>

Автор решения Отправить в письме к заказу список товаров (Commerce), я лишь немного модифицировал его.



Комментарии