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 回答