2011-02-10 5 views
13

저는 이것을 이해할 수 없습니다!모든 제품 속성의 배열을 magento로 가져옵니다.

list.phtml 페이지의 배열에 제품 속성 목록을 가져 오려고합니다. 나는 모든 것을 시도했다. 나는

$attributes = $product->getAttributes(); 

를 사용하는 솔루션을 많이 보았다하지만 난이 그냥 빈 페이지를 제공, 동작하지 않습니다. 어떤 도움을 크게 감상 할 수있다 나는

내가 Magento의 버전 1.4.2.0

UPDATE 사용하고 있습니다 ... 지금까지의 시간과 시간을 보냈습니다 : 여기에 내가 할 노력하고 있어요 정확히 무엇 :

$neededAttributes = Mage::helper('mymodule')->getNeededAttributes(); 
$attributes = $product->getAttributes(); 
foreach ($attributes as $attribute) { 
    if(in_array($attribute->getAttributeCode(), $neededAttributes)) { 
     $attributename = $attribute->getAttributeCode(); 
    echo $attributename; 
    } 
} 

이 디자인에있는 파일 gallery.phtml에/adminhtml/기본/기본/카탈로그/제품/도우미/어떤 이유

, 난 아무것도 반환하는 getAttributeCode 기능을 얻을 수 없습니다.

+0

제품 컬렉션을 먼저 사용해 보셨습니까? – kjy112

+1

XDebug와 같은 디버거를 사용하여 단계별 디버깅을 사용 했습니까? – greg0ire

+1

특정 제품의 속성 값 또는 가능한 모든 속성 코드 목록을 묻는 중입니까? –

답변

23

표시되는 값 목록 만 필요하다고 생각합니다. 속성은 실제 값이 아니기 때문에 "값"이라고 말하면 설명자입니다. Mage_Mage_Catalog_Block_Product_View_Attributes에서 두드러진 부분은 다음과 같습니다

$attributes = $product->getAttributes(); 
foreach ($attributes as $attribute) { 
    if ($attribute->getIsVisibleOnFront()) { 
     $value = $attribute->getFrontend()->getValue($product); 
     // do something with $value here 
    } 
} 

당신은 정말 당신이/변경 이미 attributes 블록으로 제품보기 페이지에서 선언 된 템플릿 catalog/product/view/attributes.phtml를 사용할 수 있기 때문에 이러한 생각을 복제 할 필요가 없습니다.

+0

이것은 훌륭하고 프론트 엔드에서 작동하지만 사용하려고합니다. 갤러리 gallery.p에있는이 파일 html로 디자인/adminhtml/기본/기본/카탈로그/제품/도우미/- 어떤 아이디어? 그것은 같은 방식으로 제품 변수를 얻을 수없는 것 같습니다 – Chad

+0

나는 내 원래 게시물에서 뭘하려고하는지 정확히 게시했습니다. 당신이 도울 수 있기를 바랍니다! – Chad

+0

실제로 제품의 값을 필요로하지 않으므로'Mage :: getModel ('catalog/product')'를 사용하여 빈 제품을 생성하면 제대로 작동합니까? 이것은 다른 속성 집합을 존중하지 않을 수도 있지만, 어떻게 찾아야할지 모르겠습니다. – clockworkgeek

6

그것은 오히려 쉽게하고 당신에게 가능한 제품의 배열을 제공 속성 이름

$product = Mage::getModel('catalog/product')->load('product_id'); 
$attributeNames = array_keys($product->getData()); 
print_r($attributeNames); 

당신이 속성 오브젝트 수집해야 할 경우 제품의 수집과 그 이후를해야 할 경우

$product->getAttributes(); 

를 호출 할 수 있습니다 각 컬렉션 회원에 대해 앞에서 설명한 방법을 수행 할 수 있습니다.

Mage::getModel('catalog/product')->getCollection(); 
+0

이 설정은 "Use in Product Listing"> 속성 설정에서 Yes로 설정해야합니다. –

+0

배열을 가져오고 있습니다. [0] => 배열 ( [entity_id] => 12 [entity_type_id] => 4 [attribute_set_id] => 4 [TYPE_ID] => 간단한 [SKU] => 20,707 [has_options] => 1 [required_options] => 1 [created_at] => 2016년 1월 6일 21시 15분 : 31 [updated_at] => 2016-10-03 00:49:21 ) 이름, 제품 이미지, 설명 등의 추가 속성을 얻으려면 어떻게해야합니까? –

14

질문에 따르면, 대신 Mage::getResourceModel('catalog/product_attribute_collection')를 사용한다 :

$productAttrs = Mage::getResourceModel('catalog/product_attribute_collection'); 

foreach ($productAttrs as $productAttr) { /** @var Mage_Catalog_Model_Resource_Eav_Attribute $productAttr */ 
    var_dump($productAttr->getAttributeCode()); 
} 

당신은 항상 _data (getData()) 스토리지의 속성이없는 당신은 항상 얻을 수있는 제품을로드 할 필요가 없습니다 그것의 속성.

+1

선택에 대한 친절한 배열과 요지. https://gist.github.com/jruzafa/8776453a13717ff7b5a1 – jruzafa

+0

답변 해 주셔서 감사합니다! –

관련 문제