Magento 2:すべてのタイプの製品の最終価格と元の価格を取得する方法


11

以下のタイプの製品の元の価格最終価格を取得するにはどうすればよいですか?

  1. シンプルな商品
  2. 構成可能な製品
  3. バンドル製品
  4. グループ製品

以下のために、簡単な製品の私は、コードの下に使用して簡単に価格を得ることができます。

$finalPrice = $product->getFinalPrice();
$originalPrice = $product->getPrice();

しかし、構成可能な製品バンドル製品グループ製品の元の価格最終価格を取得できません

他のすべてのタイプの製品の両方の価格を取得する簡単な方法はありますか?


編集:

以下のコードを使用して、構成可能な製品の元の価格最終的な価格を取得します。get-price-range-configurable-product-magento-2から参照を取得します

$basePrice = $product->getPriceInfo()->getPrice('regular_price');

$regularPrice = $basePrice->getMinRegularAmount()->getValue();
$specialPrice = $product->getFinalPrice();

何か助けていただければ幸いです!ありがとう。


ここで元の価格と最終価格を取得できます<?php $ objectManager = \ Magento \ Framework \ App \ ObjectManager :: getInstance(); $ productCollectionFactory = $ objectManager-> get( '\ Magento \ Catalog \ Model \ ResourceModel \ Product \ CollectionFactory'); $ collection = $ productCollectionFactory-> create(); $ collection-> addAttributeToSelect( '*'); $ collection-> addWebsiteFilter(); $ collection-> addMinimalPrice(); $ collection-> addFinalPrice(); $ collection-> addStoreFilter(); $ collection-> setVisibility($ objectManager-> get( '\ Magento \ Catalog \ Model \ Product \ Visibility')-> getVisibleInSiteIds()); ?> <?php foreach($ collecti
Rakesh Donga

このコードを確認しましたか?それは働いていますか?それは私のために働いていません。
Chirag Patel

はい、このコードは私のために働きます
Rakesh Donga

$_product->getSpecialPrice();がうまくいかない
Chirag Patel

if($orgprice > $specialprice){ echo $_product->getSpecialPrice(); }
Rakesh Donga

回答:


21

以下の方法を使用して、すべてのタイプの製品の通常価格最終価格を取得できます。

  1. シンプルな製品
$regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getValue();
$specialPrice = $product->getPriceInfo()->getPrice('special_price')->getValue();
  1. 構成可能な製品
if ($product->getTypeId() == 'configurable') {
      $basePrice = $product->getPriceInfo()->getPrice('regular_price');

      $regularPrice = $basePrice->getMinRegularAmount()->getValue();
      $specialPrice = $product->getFinalPrice();
}
  1. バンドル製品
if ($product->getTypeId() == 'bundle') {
      $regularPrice = $product->getPriceInfo()->getPrice('regular_price')->getMinimalPrice()->getValue();
      $specialPrice = $product->getPriceInfo()->getPrice('final_price')->getMinimalPrice()->getValue();            
}
  1. グループ製品
if ($product->getTypeId() == 'grouped') {
      $usedProds = $product->getTypeInstance(true)->getAssociatedProducts($product);            
      foreach ($usedProds as $child) {
          if ($child->getId() != $product->getId()) {
                $regularPrice += $child->getPrice();
                $specialPrice += $child->getFinalPrice();
          }
      }
}

注:上記の例では、$ productが現在の製品です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.