Как получить Tier Цена продукта 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-карта участника

TTTK
источник

Ответы:

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%. см. мою фотографию журнала ниже.

введите описание изображения здесь

Создайте конструктор в вашем классе и инициируйте объект класса. С этим объектом вы можете делать вещи.

Bojjaiah
источник
это пустая страница, когда я запускаю ваш код, а не эхо-цену уровня
tttk
@tttk смотри мой обновленный ответ.
Божжаия
извините, сэр, у вас есть полный код для вывода tier_price? это мой код foreach ($ tier_price как $ pirces) {echo $ prirces ["price"]; // получить каждый}
tttk
@tttk теперь попробуй мой код.
Божжаия
что такое array_reverse ($ tier)? Переменные $ tier?
TTTK
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
Анкит Шах,
как получить весь товар с ценой уровня. Я хочу показать все цены продукта на другой странице
Daniel_12
@ Daniel_12, можем ли мы узнать цену продукта, используя идентификатор группы клиентов?
Джафар Пинджар
0

код от Bojjaiah работает, но он показывает цены уровня следующим образом: "2,252,132,001,88". Как я могу поставить их так: купить 1 за 2,52 / купить 2 за 2,13 / купить 3 за 2,00 / купить 4 за 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;
        }
Антон Ульрих
источник