我想在产品列表页面上显示可配置产品的属性值。我特别需要分配给特定产品的属性选项的管理标签。
问问题
1120 次
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;"> </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 回答