如何获得产品magento2的价格?


11

如何使用自定义代码在Magento 2中获得产品的分级价格?

这是我的代码

 public function getProductCollection()
    {
        $collection = $this->_productCollectionFactory->create();
        $collection->addAttributeToSelect('*');
         $collection->setOrder('created_at', 'DESC');
        // $collection->setPageSize(3); // fetching only 3 products
        return $collection;
    }

和我的.phtml中的调用函数

  $productCollection = $block->getProductCollection();
   $productCollection->setPageSize(2);
            foreach ($productCollection as $product) {

 echo $product->getName();
 print_r($product->getTierPrice());

echo getName,getPrice,getSpecial价格有效

但是getTierPrice无法正常工作。

例如 我有VIP会员卡(customer_group)我想向公众展示分级价格VIP会员卡未设置所有群组 我要出示分级价格VIP会员卡

Answers:


6

您可以如下获得TierPrice。

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1);                
$tier_price = $product_obj->getTierPrice();
if(count($tier_price) > 0){
    foreach($tier_price as $pirces){
        foreach ( array_reverse($pirces) as $k => $v ) {
            if($k == "price"){
                $tp = number_format($v, 2, '.', '');
                echo $tp;
            }
        }
    }
}

$product_obj有产品数据,请检查或首次亮相即可。它将100%工作。请参阅下面的我的日志图片。

在此处输入图片说明

在您的类中创建构造函数并初始化类对象。通过该对象,您可以执行操作。


当我运行您的代码时它空白页不回显层价格
tttk '16

@tttk请参阅我的最新答案。
Bojjaiah '16

抱歉,先生,您有完整的代码来回应tier_price吗?这是我的代码foreach($ tier_price as $ pirces){echo $ prirces [“ price”]; //获取每个}}
tttk

@tttk现在尝试我的代码。
Bojjaiah's

什么是array_reverse($ tier)?变量$ tier?
tttk '16

7

要获取客户组的分级价格,请使用getTierPrices()而不是getTierPrice()。请参见下面的示例代码:

<?php
use \Magento\Framework\App\Bootstrap;
include('/www/magento2.1/app/bootstrap.php');

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

$state = $objectManager->get('\Magento\Framework\App\State');
$state->setAreaCode('frontend');

$productId = 1;
$product_obj = $objectManager->create('\Magento\Catalog\Model\Product')->load($productId);

getAnyGroup($product_obj);

function getAnyGroup($product_obj) {
    $tier_price = $product_obj->getTierPrices();

    if(count($tier_price) > 0){
        echo "price_qty\tprice\tCustomerGroupId\n";

        foreach($tier_price as $price){
            echo $price->getQty();
            echo "\t";
            echo $price->getValue();
            echo "\t";
            echo $price->getCustomerGroupId();
            echo "\t";
            echo "\n";
            print_r($price->getData());
            echo "\t";
            echo "\n";
        }
    }
}

在Obsever为我工作
Ankit Shah

如何获得所有带有分级价格的产品。我想在不同的页面中显示所有产品的HV等级价格
Daniel_12 '18

@ Daniel_12,我们可以使用客户组ID获得产品价格吗?
贾法尔·品佳(Jafar Pinjar),

0

Bojjaiah的代码有效,但它显示了这样的层级价格:“ 2,252,132,001,88”。我怎么这样写:买一买2,52 /买二买2,13 /买三买2,00 /买四买1,88?谢谢!

这是Bojjaiah的原始代码:

$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $product_obj = $objectManager->create('Magento\Catalog\Model\Product')->load(1); $tier_price = $product_obj->getTierPrice();if(count($tier_price) > 0){
foreach($tier_price as $pirces){
    foreach ( array_reverse($pirces) as $k => $v ) {
        if($k == "price"){
            $tp = number_format($v, 2, '.', '');
            echo $tp;
        }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.