그룹화 된 제품 속성 처리


9

나는 새로운 Magento 상점을 짓고 있습니다. (이것은 Magento와의 첫 번째입니다).

최소한 레이아웃 측면에서 제품 페이지의 기존 상점 모양을 복제하려고합니다.

http://www.panamericantool.com/cobalt-drills/drill-stops.html

http://www.panamericantool.com/screw-driver-bits/paint-cutters.html

나는 간단한 제품과 함께 그룹화 된 제품을 사용하여 내가 좋아하는 물건을 만들어야한다는 것을 알았습니다.

위의 예에서 각 제품에는 별도의 속성이 있으며 Magento의 다른 속성 세트를 통해 수행되는 것으로 가정합니다.

그러나 주제에 다른 표 제목 / 값을 어떻게 표시합니까?

내가 할 수 ->getAttributeName()있거나 파일 ->getAttribute('attribute_code')에서 할 수 있다는 것을 알고 grouped.phtml있지만 막대한 양의 결과가 발생하며 if (->getAttributeName() != '')...더 추가 할 때 템플릿을 변경해야합니다.

모든 속성을 가져 와서 반복하는 방법이 있다고 확신하지만 meta_description속성 ( $_product->getData()메소드에 의해 반환 됨 )과 테이블에 나열하려는 속성 을 어떻게 구별 합니까?

내가 가진 것과 비슷한 것을 어떻게 달성 할 수 있습니까?

또한 매장에 출시 될 5k 제품의 성능에 대해 우려하고 있으며 나머지 재고를 추가하면 25k-30k로 증가 할 것입니다. 이 중 많은 속성이 다른 속성이 필요하지만 성능 문제없이 속성 세트간에 속성을 공유 할 수있을 것 같습니다.


최신 정보:

나는 이것을 가지고 놀았고, 나는 이것이 모든 제품 속성을 얻는다는 것을 알았지 만 그룹화 된 제품 테이블에서 특정 값을 보여주는 간단한 방법을 여전히 모른다?

$attributes = Mage::getModel('catalog/product_attribute_api')->items($_product->getAttributeSetId());
foreach($attributes as $_attribute){
    print_r($_attribute);
}

속성의 "프론트 엔드에서 제품보기 페이지에 표시"특성을 사용하여 제품 페이지에 표시할지 여부를 결정하지 않는 이유는 무엇입니까?
BlueC

답변:


2

이것은 당신이 필요로하는 것입니다 :

$product->getResource()->getAttribute('attribute_code')->getStoreLabel();

그러나 이것은 단지 하나의 속성을 얻을 것입니다. OP에 포함 된 링크에 따라 제품마다 다른 속성을 표시하는 방법이 필요합니까?
Tom Green

2

표시 할 속성을 알려주는 속성을 작성해보십시오.

속성 코드 문자열 인 그룹화 된 제품에 대해 두 개의 텍스트 속성 값을로드하는 모듈을 만들었습니다. 기본적으로 해당 속성 목록 문자열을 분해하고이를 반복하여 관련 제품 속성 데이터를로드하는 도우미입니다.

내가 호출 한 속성을 작성하십시오.

grouped_attr_array

관리자에서 그룹화 된 제품의 디자인 속성 세트에 속성을 추가 한 다음 제품 데이터에서 세미콜론으로 구분 된 필드로 속성을 추가하십시오.

torque_range;torque_increments;torque_accuracy

모듈에서이 코드를 가져 왔습니다. 속성 값을 기반으로 기본 속성을 더로드하거나 숨기고 모듈이 조금 더 복잡합니다. 그러나 표에 표시된 데이터를 얻으려면 핵심 기능 중 일부입니다. 잘하면 그것은 당신에게 구축 할 아이디어를 제공합니다. 이것은 magento 1.9.2를 사용하고 있습니다

모듈 도우미 :

public function findAttributes($product, $attributes)
{
    //determined by attribute with id to add additional attributes to the table
    //string needs to be ; separated in ADMIN
    $strattributes = $product->getResource()->getAttribute('grouped_attr_array')->getFrontend()->getValue($product);
    if ($strattributes) {
        $strattributes = explode(';', $strattributes, 5);
        foreach ($strattributes as $additionAttribute) {
            //make sure these are valid attributes
            if ($product->getResource()->getAttribute($additionAttribute)) {
                array_push($attributes, $additionAttribute);
            }
        }
    }
}

public function groupedAttrDump($groupedProduct, $attributes)
{
    $cells = [];
    foreach ($attributes as $attrCode) {
        $attrText = $groupedProduct->getResource()->getAttribute($attrCode);
        if($attrText){
            array_push($cells, $attrText->getFrontend()->getValue($groupedProduct));
        }
    }
    return $cells;
}

public function groupedAttrHeaders($currentProduct, $attributes)
{
    $theads = [];
    foreach ($attributes as $attrCode) {
        $headerText = $currentProduct->getResource()->getAttribute($attrCode);
        if($headerText){
            $headerText = $headerText->getStoreLabel();
            array_push($theads,$headerText);
        }

    }
    return $theads;
}

groupedproduct.phtml의 도우미에서 데이터 가져 오기

$attrrSetName = Mage::getModel("eav/entity_attribute_set")->load($_product->getAttributeSetId())->getAttributeSetName();
$tableAttributes = Mage::helper('groupedtable')->findAttributes($_product, $attrrSetName);

TH

     <?php foreach (Mage::helper('groupedtable')->groupedAttrHeaders($_product, $tableAttributes) as $attrLabel ): ?>
        <th><?php echo $attrLabel ?> </th>
     <?php endforeach; ?>

TD는 테이블

<?php foreach (Mage::helper('groupedtable')->groupedAttrDump($_associatedProduct, $tableAttributes) as $attr ):?>
        <td><?php if($attr != 'No'){ echo $attr; } ?></td>
   <?php endforeach; ?>

상점의 사용 가능한 속성을 기반으로 해당 속성을 선택하는 방법을 만들고 싶습니다. 이 작업을 수행하는 더 좋은 방법이있을 수 있습니다. 아직 얻지 못했습니다.

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