Magento属性值的调用方法

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 文件, 找到
<block type="catalog/product_list" template="catalog/product/list.phtml">
在这一行的下面添加这么一句
<action method="addAttribute"><attribute>AttributeName</attribute></action>
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) ?>
里显示的内容
<block type="core/template_facade" as="container4">
<action method="setDataByKey"><key>alias_in_layout</key><value>container2</value></action>
<action method="setDataByKeyFromRegistry"><key>options_container</key><key_in_registry>product</key_in_registry></action>
<action method="append"><block>product.info.options.wrapper.bottom</block></action>
</block>
另外有一个方法, 用来接收 .xml 文件传来的属性名称, 在这里贴一下, 这是一位热心人士提供的
public function addAttribute($AttributeName){
$this->_getProductCollection()->addAttributeToSelect($AttributeName);
return $this;
}
frontenddefaultdefaulttemplatecatalogproductlist.phtml
另一种是:找以下代码
getColumnCount(); ?>


<ul>
改成:
getColumnCount(); ?>

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

<ul>
再跟以上一样调用.
希望以上内容可以对你有些帮助.

Words translated by CCJK

146,096,379

We are Certified

Our Client Satisfaction

rating for previous quarte

4.00

Over 95% of our clients recommend our language services to others


Copyright © CCJK Technologies Co., Ltd. 2000-2017. All rights reserved.
TOP