Не расчитывается скида для несколких товаров (Commerce) в ноде

Главные вкладки

Аватар пользователя Loac Loac 25 июня 2013 в 22:16

Вывожу в ноде несколько товаров с помощью Views. Все хорошо, до тех пор пока не надо считать скидку. Она рассчитывается только для первого в списке товара. Однако, при добавлении в корзину, скидка учитывается.

Сама скидка указывается как альтернативная цена в товаре и подменяется с помощью Rules.

<?php
"rules_sale" : {
    
"LABEL" "Sale",
    
"PLUGIN" "reaction rule",
    
"REQUIRES" : [ "rules""commerce_line_item""commerce_product_reference" ],
    
"ON" : [ "commerce_product_calculate_sell_price" ],
    
"IF" : [
      { 
"entity_has_field" : { "entity" : [ "commerce-line-item" ], "field" "commerce_product" } },
      { 
"entity_has_field" : {
          
"entity" : [ "commerce-line-item:commerce-product" ],
          
"field" "field_sale"
        
}
      },
      { 
"NOT data_is_empty" : { "data" : [ "commerce-line-item:commerce-product:field-sale" ] } }
    ],
    
"DO" : [
      { 
"commerce_line_item_unit_price_amount" : {
          
"commerce_line_item" : [ "commerce_line_item" ],
          
"amount" : [ "commerce-line-item:commerce-product:field-sale:amount" ],
          
"component_name" "discount",
          
"round_mode" "1"
        
}
      }
    ]
  }
}
?>

Как сделать, чтобы скидка выводилась для всех товаров?

ВложениеРазмер
Иконка изображения screenshot.jpg11.68 КБ
Иконка изображения views.jpg88.42 КБ

Комментарии

Аватар пользователя Loac Loac 10 ноября 2015 в 11:49

Кастылем таки удалось решить проблему. Опишу в двух словах. Если кому-то надо понадобиться, распишу подробно.

Вместо простого поля «Commerce Product: Price» было использовано «Commerce Product: Rendered Commerce Product». Чтобы не выводились лишние поля, добавлен отедльный «View mode».

<?php
function tools_entity_info_alter(&$info) {
  if (isset(
$info['commerce_product'])) {
    
$info['commerce_product']['view modes']['price_only'] = array(
      
'label' => t('Price only'),
      
'custom settings' => FALSE,
    );
  }
}
?>

Форматер поля тоже свой, но он не влияет на описываемую пролему.