Magento属性值的调用方法
Magento属性值的调用方法
很多朋友在使用Magento的属性的时候,都是要把后台属性组里添加的属性给显示到网站上去.不同的属性有着不同的调用方式 . 之前找到了很多相关的资料都是很零碎的,我将相关的属性方面的资料整理了一下,下面就先介绍一些Magento属性调用的方法.
找到后打开编辑,增加属性调用代码,常见的几种属性代码如下:
(1)产品页调用
简单描述(short description):<?php echo$this_helper(‘catalog/output’)->productAttribute($_product,nl2br($_product->getShortDescription()), ’short_description’) ?>
描述(description):<?php echo$this->helper(‘catalog/output’)->productAttribute($this->getProduct(),nl2br($this->getProduct()->getDescription()), ‘description’) ?>
产品名称(name):<?php echo$_helper->productAttribute($_product,$this->htmlEscape($_product->getName()), ‘name’) ?>
产品编号(sku):<?php echo$this->htmlEscape($_product->getSku()) ?>
产品价格(price):<?php echo$_coreHelper->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 就可以了, 就是在需要的地方敲上这一段代码
<?php echo $_product->getAttributeName(); ?>
其中 AttributeName 为属性名. 例如 name 为产品的名称属性名, 可以这样写
<?php echo $_product->getName(); ?>
或者
<?php echo nl2br($_product->getName()) ?>
或者
<?php echo $_product->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 是属性名称, 这样就可以用 <?php echo $_product->getName(); ?> 调用属性值.
你新增的属性为文本或文本域类型(Text Field or Text Area),那么你的代码应为:
<?php echo $_product->getAttributeName() ?>
你新增了一个属性代码(Attribute Code)为 shoe_size的属性,那么你的调用代码应写成下面格式:
<?php echo $_product->getAttributeName() ?>
你新增的属性为下拉菜单类型(Dropdown)和多项选择类型(Multiple Select),那么你的代码应写成下面格式:
<?php echo $_product->getAttributeText(‘AttributeName’) ?>
还有下面的几个调用方式
<?php echo $this->getChildChildHtml(‘container4’, ”, true, true) ?>
<?php echo $this->getChildHtml(‘addtocart’) ?>
<?php echo $this->getChildHtml(‘product_options’) ?> //这是显示产品里添加的Custom Options里的属性值.
要在appdesignfrontenddefault模板文件名layoutcatalog.xml 里加以后代码.
里面的内容直接关系到上面<?php echo $this->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
另一种是:找以下代码
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
<?php if ($i++%$_columnCount==0): ?>
改成:
<?php $_columnCount = $this->getColumnCount(); ?>
<?php $i=0; foreach ($_productCollection as $_product): ?>
<?php $_product = Mage::getModel(‘catalog/product’)->load($_product->getId());?>
<?php if ($i++%$_columnCount==0): ?>
再跟以上一样调用.
希望以上内容可以对你有些帮助.
Need a translation service?
Please enter your personal details and we will contact you shortly
Words translated by CCJK
146,096,379Over 95% of our clients recommend our language services to others