¿Cómo obtener el nivel de precio del producto magento2?


11

¿Cómo obtener el nivel de precio del producto en Magento 2 con código personalizado?

Este es mi codigo

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

y mi función de llamada en .phtml

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

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

echo getName, getPrice, getSpecial price works

pero getTierPrice no funciona.

ex. Tengo una tarjeta de miembro VIP (grupo_cliente) Quiero mostrar la tarjeta de miembro VIP de precio de nivel al público, no configurar todo el grupo Quiero mostrar la tarjeta de miembro VIP de precio de nivel

Respuestas:


6

Puede obtener el TierPrice de la siguiente manera.

$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_objSi tiene datos de un producto, por favor verifíquelo o estúrelo. Funcionará al 100%. mira mi foto de registro a continuación.

ingrese la descripción de la imagen aquí

Cree un constructor en su clase e inicie el objeto de clase. Desde ese Objeto puedes hacer cosas.


que la página en blanco cuando corro el código no echo precio tier
— tttk

@tttk ver mi respuesta actualizada.
— Bojjaiah

lo siento señor, ¿tiene un código completo para hacer eco de tier_price? aquí mi código foreach ($ tier_price como $ pirces) {echo $ prirces ["price"]; // obtener cada uno}
— tttk 01 de

@tttk ahora prueba mi código.
— Bojjaiah

¿Qué es array_reverse ($ tier)? Variables $ tier?
— tttk

7

Para obtener el precio de nivel para los grupos de clientes, use getTierPrices () en lugar de getTierPrice () . Consulte el código de ejemplo a continuación:

<?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";
        }
    }
}

Funciona para mí en Obsever
— Ankit Shah

cómo obtener todos los productos con precio de nivel. Quiero mostrar todo el precio del nivel hv del producto en una página diferente
— Daniel_12

@ Daniel_12, ¿podemos obtener el precio del producto utilizando la identificación del grupo de clientes?
— jafar pinjar

0

el código de Bojjaiah funciona pero muestra los precios de nivel como este: "2,252,132,001,88". ¿Cómo puedo ponerlos así: Compre 1 por 2,52 / Compre 2 por 2,13 / Compre 3 por 2,00 / Compre 4 por 1,88? ¡Gracias!

Este es el código original de 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;
        }
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.