0

商品一覧ページに設定可能な商品の属性値を表示したい。特定の製品に割り当てられた属性オプションの管理ラベルが特に必要です。

4

1 に答える 1

1

私の場合、属性名はconfi_colorです。だから list.phtml

if($_product->getTypeId()=='configurable'){
                        $colorList      =   array();
                        $attrs  = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product);
                        foreach($attrs as $attr) {
                            if(0 == strcmp("config_color", $attr['attribute_code'])) {
                                $options    = $attr['values'];
                                $arr        =   array();
                                $count      =   0;
                                foreach($options as $option) {
                                    //print_r($option);
                                    $arr[$count]    =   $option['value_index'];
                                    $count++;
                                }
                                $colorList          =   $_product->getAdminAttributeText($attr['attribute_id'],$arr);
                                //echo getAdminAttributeText($attributeCode);    
                            }
                        }
                        echo '<div style="float:right;">';
                        if(count($colorList >   1)){
                            for($i=1;$i<count($colorList);$i++) {
                                echo '<div style="background:'.$colorList[$i].';float:left;display:block;width:16px;border:1px solid #B6B6B6;margin-right:2px;">&nbsp;</div>';
                            //$optStr .= "<option value='".$valuesVal->getId()."'>".$valuesVal->getTitle()."</option>";
                            }
                            echo '</div><div style="clear:left;"></div>';
                        }


                    } 

/app/code/core/Mage/Catalog/Model/Product.php の管理ラベルを取得して、/app/code/local/Mage/Catalog/Model/Product.php に関数を作成します。

public function getAdminAttributeText($attributeCode,$arr) {
      $_attribute= $this->getResource()->getAttribute($attributeCode);
      $_options= $_attribute->getSource()->getAllOptions(true, true);
      $count        =   0;
      $flag         =   0;
      $returnArr    =   array();
      foreach($_options as $option){
            for($count=0;$count<=count($arr);$count++){
              if ($option['value'] ==   $arr[$count]){
                   $returnArr[$flag]        =   $option['label'];
                   $flag++;
                }
            }
        }
        return($returnArr);
    }
于 2012-12-05T08:07:04.137 に答える