web-dev-qa-db-ja.com

製品の割引に関する情報の入手方法

ショート:この商品の価格に影響するコマース製品とコマース割引があります。この割引の詳細を店頭のユーザーにプレゼントしたい。

長い話:私はDrupal Commerce with Drupal Commerceディスカウントをルールに基づいて使用しています。割引モジュールは製品のプロモーションの構成に使用されています。プロモーションの一部(構成済み割引)は期間限定です。つまり、2015年11月11日に終了します。詳細を表示するときに製品に影響する割引に関する情報を入手したいと思います。まず、割引が終了するまでの残り時間を表示する必要があります。

製品レベルのアクティブルールに関する情報を取得する方法はありますか?

2
KraggTheGrimm

ラインアイテムには、field_unit_priceフィールドがあります。そのフィールドのデータ属性の内部には、その商品に適用される割引に関する情報があります。

array(1) {
  ["components"]=>
  array(2) {
    ...
    [1]=>
    array(3) {
      ["name"]=>
      string(22) "discount|discount_test"
      ["price"]=>
      array(3) {
        ["amount"]=>
        float(-240)
        ["currency_code"]=>
        string(3) "USD"
        ["data"]=>
        array(2) {
          ["discount_name"]=>
          string(13) "discount_test"
          ["discount_component_title"]=>
          string(5) "Test"
        }
      }
      ["included"]=>
      bool(true)
    }
  }
}

コンポーネントを反復処理します。いずれかの商品に割引が適用されている場合は、discount|で始まる名前の商品が見つかります。次に、その割引をロードして、それに関する詳細情報を取得できます。

$discount = entity_load('commerce_discount', array('discount_test'));

ここから、日付を追加した場合、日付フィールドはフィールドcommerce_discount_dateでアクセスできます。

2
nvahalik