제품 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());

에코 getName, getPrice, getSpecial 가격 작동

그러나 getTierPrice 가 작동하지 않습니다.

전의. VIP 회원 카드 (customer_group)가 있습니다. 그룹 가격을 공개하지 않고 등급 가격 VIP 회원 카드를 보여주고 싶습니다 등급 가격 VIP 회원 카드를 보여주고 싶습니다

답변:


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

@tttk 내 업데이트 된 답변을 참조하십시오.
Bojjaiah

죄송합니다, tier_price를 반향하는 전체 코드가 있습니까? 여기 내 코드 foreach ($ tier_price as $ pirces) {echo $ prirces [ "price"]; // 각 하나를 가져옵니다}
tttk

@tttk는 이제 내 코드를 사용해보십시오.
Bojjaiah

array_reverse ($ tier) 란 무엇입니까? 변수 $ tier?
tttk

7

고객 그룹의 티어 가격을 얻으려면 getTierPrice () 대신 getTierPrices ()를 사용하십시오 . 아래 예제 코드를 참조하십시오 :

<?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

계층 가격으로 모든 제품을 얻는 방법. 모든 페이지를 모든 페이지에 다른 페이지에 표시하려고합니다.
Daniel_12

@ Daniel_12, 고객 그룹 ID를 사용하여 제품 가격을 얻을 수 있습니까?
jafar pinjar

0

Bojjaiah의 코드는 작동하지만 "2,252,132,001,88"과 같은 계층 가격을 보여줍니다. 어떻게 이런 식으로 넣을 수 있습니까 : 2,52에 1을 사십시오, 2,13에 2를 사십시오 / 2,00에 3을 사십시오 / 1,88에 4를 사십시오? 감사합니다!

이것은 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;
        }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.