Magento属性值的调用方法

很多朋友在使用Magento的属性的时候,都是要把后台属性组里添加的属性给显示到网站上去.不同的属性有着不同的调用方式 . 之前找到了很多相关的资料都是很零碎的,我将相关的属性方面的资料整理了一下,下面就先介绍一些Magento属性调用的方法.

找到后打开编辑,增加属性调用代码,常见的几种属性代码如下:

(1)产品页调用

简单描述(short description):productAttribute($_product,nl2br($_product->getShortDescription()), ’short_description’) ?>

描述(description):helper(‘catalog/output’)->productAttribute($this->getProduct(),nl2br($this->getProduct()->getDescription()), ‘description’) ?>

产品名称(name):productAttribute($_product,$this->htmlEscape($_product->getName()), ‘name’) ?>

产品编号(sku):htmlEscape($_product->getSku()) ?>

产品价格(price):currency($_finalPrice,true,false) ?>

上面是magento商品几种常见的属性调用代码,把代码放在你想展示的合适位置即可。

当然,你也可以调用自定义的属性。下面介绍两种类型的属性调用:

1.你新增的属性为文本或文本域类型(Text Field or TextArea),那么你的代码应为:

< ?php echo$_product->getAttributeName()?>

例如,你新增了一个属性代码(Attribute Code)为 shoe_size的属性,那么你的调用代码应写成下面格式:

< ?php echo$_product->getShoeSize()?>

你应该把去掉下划线,并且第一字母大写,然后替代AttributeName ,如果你使用的是getshoesize() ,magento将无法工作。

2.你新增的属性为下拉菜单类型(Dropdown)和多项选择类型(Multiple Select),那么你的代码应写成下面格式:

< ?php echo$_product->getAttributeText(‘shirt_size’)?>

括号内应填写真实的属性代码(Attribute Code) ,这个类型的属性用这个代码可以精确的调用属性返回的数值

(2) 列表页调用

如果是Magento里默认属性的一般调用很简单, 直接修改appdesignfrontendbasedefaulttemplatecatalogproduct文件夹里的 view.phtml 和 list.phtml 就可以了, 就是在需要的地方敲上这一段代码

getAttributeName(); ?>

其中 AttributeName 为属性名. 例如 name 为产品的名称属性名, 可以这样写

getName(); ?>

或者

getName()) ?>

或者

getResource()->getAttribute(‘name’)->getFrontend()->getValue($_product); ?>

方法有很多, 一般使用前面两种, 在 view.phtm 也就是产品页面调用任意属性是完全没问题的.

但是在如果是Magento的列表页(list.phtml) 调用属性就不一样了, 列表页默认只能调用基本属性, 如 name price sku ……

像一些扩展属性 cost weight color …… 和自定义属性就无法调用! 虽然如此, 但是解决办法还是有很多.

抛开修改 list.phtml 的念头, 直接从 Magento 的核心入手, 修改 XML !

修改 appdesignfrontendbasedefaultlayout 文件夹下的 catalog.xml 文件, 找到

在这一行的下面添加这么一句

AttributeName

AttributeName 是属性名称, 这样就可以用 getName(); ?> 调用属性值.

你新增的属性为文本或文本域类型(Text Field or Text Area),那么你的代码应为:

getAttributeName() ?>

你新增了一个属性代码(Attribute Code)为 shoe_size的属性,那么你的调用代码应写成下面格式:

getAttributeName() ?>

你新增的属性为下拉菜单类型(Dropdown)和多项选择类型(Multiple Select),那么你的代码应写成下面格式:

getAttributeText(‘AttributeName’) ?>

还有下面的几个调用方式

getChildChildHtml(‘container4’, ”, true, true) ?>

getChildHtml(‘addtocart’) ?>

getChildHtml(‘product_options’) ?> //这是显示产品里添加的Custom Options里的属性值.

要在appdesignfrontenddefault模板文件名layoutcatalog.xml 里加以后代码.

里面的内容直接关系到上面getChildChildHtml(‘container4’, ”, true, true) ?>

里显示的内容

alias_in_layoutcontainer2

options_containerproduct

product.info.options.wrapper.bottom

另外有一个方法, 用来接收 .xml 文件传来的属性名称, 在这里贴一下, 这是一位热心人士提供的

public function addAttribute($AttributeName){

$this->_getProductCollection()->addAttributeToSelect($AttributeName);

return $this;

}

frontenddefaultdefaulttemplatecatalogproductlist.phtml

另一种是:找以下代码

getColumnCount(); ?>

改成:

getColumnCount(); ?>

load($_product->getId());?>

再跟以上一样调用.

希望以上内容可以对你有些帮助.