Wie erhalte ich den Preis für das Produkt magento2?

11

Wie erhalte ich den Staffelpreis des Produkts in Magento 2 mit benutzerdefiniertem Code?

Das ist mein Code

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

und meine Aufruffunktion in .phtml

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

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

echo getName, getPrice, getSpecial price funktioniert

aber getTierPrice funktioniert nicht.

Ex. Ich habe eine VIP-Mitgliedskarte (customer_group). Ich möchte die VIP-Mitgliedskarte zum Tierpreis öffentlich zeigen und nicht alle Gruppen festlegen Ich möchte die VIP-Mitgliedskarte zum Tierpreis anzeigen

tttk
quelle

Antworten:

6

Sie können den TierPrice wie folgt erhalten.

$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_objWenn Sie Produktdaten haben, überprüfen Sie diese bitte oder debütieren Sie sie. Es wird 100% funktionieren. siehe mein Logbild unten.

Geben Sie hier die Bildbeschreibung ein

Erstellen Sie einen Konstruktor in Ihrer Klasse und initiieren Sie das Klassenobjekt. Von diesem Objekt aus können Sie Dinge tun.

Bojjaiah
quelle
es leere Seite, wenn ich Ihren Code nicht Echo Tier Preis
ausführen
@tttk siehe meine aktualisierte Antwort.
Bojjaiah
Entschuldigung, Sir, haben Sie den vollständigen Code, um tier_price wiederzugeben? es hier mein Code foreach ($ tier_price als $ pirces) {echo $ prirces ["price"]; //
Holen Sie
@tttk versuche jetzt meinen Code.
Bojjaiah
Was ist array_reverse ($ tier)? Variablen $ tier?
tttk
7

Verwenden Sie getTierPrices () anstelle von getTierPrice () , um den Staffelpreis für die Kundengruppen zu erhalten . Bitte beachten Sie den folgenden Beispielcode:

<?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";
        }
    }
}
Jun Xie
quelle
Arbeitet für mich in Obsever
Ankit Shah
wie man alle Produkte mit Staffelpreis bekommt. Ich möchte den gesamten Produktpreis auf einer anderen Seite
anzeigen
@ Daniel_12, können wir den Produktpreis anhand der Kundengruppen-ID ermitteln?
Jafar Pinjar
0

Der Code von Bojjaiah funktioniert, zeigt jedoch die Stufenpreise wie folgt an: "2,252,132,001,88". Wie kann ich sie so ausdrücken: Kaufen Sie 1 für 2,52 / Kaufen Sie 2 für 2,13 / Kaufen Sie 3 für 2,00 / Kaufen Sie 4 für 1,88? Vielen Dank!

Dies ist der Originalcode von 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;
        }
Anton Ulrich
quelle