$ product-> getOptions ()는 빈 결과를 반환합니다


9

내가 만든 사용자 정의 블록에 제품 사용자 정의 옵션 값을 포함하여 제품 세부 정보를 얻으려고합니다.이 제품 세부 사항 페이지에서 사용한 코드이며 거기에서 작동했지만 사용자 정의 블록 페이지에서 사용하려고하면 옵션이 빈 값을 반환합니다.

if ($ _product-> getId ()) {  
    foreach ($ _product-> getOptions ()를 $ opt로) {  
    echo $ optionType = $ opt-> getType ();  
      if ($ optionType == 'drop_down') {  
        $ values ​​= $ opt-> getValues ​​();  
        foreach ($ 값은 $ v)
        {
     $ mydata = $ v-> getTitle ();      
print_r ($ mydata);    
        }
      }  
    }   
}

나는 magento를 처음 사용하므로 여기서 무엇을 놓치고 있는지 잘 모르겠습니다.
어떤 사람은 나에게 힌트 좀 줄 수
감사합니다


관련 스레드 에서이 답변 을 참조하십시오 .
quickshiftin

답변:


2

이 시도:

if (Mage::registry('current_product')) {
    $product = Mage::registry('current_product');
} else {
    $product = Mage::getSingleton('catalog/product');
}


if ($product->getId()) {
    if ($product->hasCustomOptions()) {
        foreach ($product->getOptions() as $option) {
            $optionType = $option->getType();
            if ($optionType == 'drop_down') {
                $values = $option->getValues();
                foreach ($values as $k => $value) {
                    print_r($value);
                }
            }

        }
    }
}

1
작동하지 않습니다 ... $ prodct 배열을 인쇄하면 동일한 코드가 제품보기 페이지에서 제대로 작동하는 동안 사용자 정의 옵션을 제외한 모든 정보가 표시됩니다
Shivika Sharma

2

문제는 제품이 블록에 완전히로드되지 않은 것입니다. 이 load()메소드는 객체의 모든 정보가로드되도록합니다. loadByAttribute()컬렉션이나 컬렉션 만 사용 하는 경우에는 해당되지 않습니다.

예를 들면 다음과 같습니다.

$product = Mage::getModel('catalog/product')->load($productId);

여러 제품을 표시하려면 load()성능에 부정적인 영향을 미치므로 사용하지 않아야합니다 . 컬렉션에 옵션을 추가하는 데 도움을 드릴 수 없습니다.

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