magento 获取自定义产品属性和属性值

在magento系统中经常要自定义自己的产品属性,在后台自定义的产品属性如何获取呢,下面根据属性类型的不同分别说明

产品属性要想在前台获取到需要设置属性的Used in Product Listing 为true

1、下拉列表的产品属性

如定义了一个表示产品的硬件支持类型的下拉列表属性support_hardware就可以这样获取

[php] view
plain
 copy

  1. $attributes[‘support_hardware‘]=$product->getAttributeText(‘support_hardware‘);

2、文本类型的产品属性

如定义了一个属性叫version_number用来表示产品的版本号,这个属性是文本类型的,那么就可以这样获取

[php] view
plain
 copy

  1. $attributes[‘version_number‘]=$product->getData(‘version_number‘);

当得到产品对象后我们可以获取产品的各种属性,如果我们要获取满足一定属性条件的产品集呢?这时候就需要根据产品属性对产品过滤了

magento提供的根据属性过滤的接口有两种,一种是addAttributeToFilter,另一种是直接操作数据库通过getSelect()->where()的方法

1、addAttributeToFilter接口

比如我们想要获取APP产品支持的系统版本(属性name是system_version)在4.2以上的的产品集,就可以这么做

[php] view
plain
 copy

  1. $_productCollection = Mage::getResourceModel(‘catalog/product_collection‘)
  2. ->setStoreId(1)
  3. ->addAttributeToSelect(‘*‘)
  4. ->addAttributeToFilter(‘system_version‘,array(‘gteq‘=><span style="color:#ff6666;">45</span>));<span style="color:#3366ff;">//45这个值是怎么得到的呢,这个值是system_version为4.2时对应的属性值,关于怎么获取属性的值在后面会讲</span>

2、通过getSelect()->where()直接操作数据库

通过这种方式要求对数据库结构属性,通常我们会用

[php] view
plain
 copy

  1. $_productCollection->getSelectSql()

来帮助我们写sql语句

[php] view
plain
 copy

  1. $_productCollection->getSelect()->where(‘age‘,array(‘gteq‘=>45));

怎么通过where写复杂的查询数据库语句会在另一篇中讲解

获取产品后通常还要加上对产品做产品是否是激活,是否在当前商店的判断

[php] view
plain
 copy

  1. $product->isSalable()

下面讲下怎么获去属性的值

1、假设我们知道attribute的ID为149,就可以这样获取属性的value和label

[php] view
plain
 copy

  1. $attributeOption=Mage::getResourceModel(‘eav/entity_attribute_option_collection‘)
  2. ->setPositionOrder(‘asc‘)
  3. ->setAttributeFilter(149)
  4. ->setStoreFilter()
  5. ->load();
  6. $attributeOptionArray=$attributeOption->toOptionArray();
  7. echo "<hr>";
  8. print_r($attributeOptionArray);

2、怎么根据attribute的name来得到attribute对象还在研究中

在实际应用时通常要获取可用来过滤产品的的属性,也就是filterable attributes,获取的方法如下:

[php] view
plain
 copy

  1. protected function _getFilterableAttributes(){
  2. $layer = Mage::getModel("catalog/layer");
  3. $rootCategory=Mage::getModel(‘catalog/category‘)->load(Mage::app()->getStore()->getRootCategoryId());
  4. $layer->setCurrentCategory($rootCategory);
  5. $attributes = $layer->getFilterableAttributes();
  6. $this->_filterableAttributesExists=array();
  7. foreach ($attributes as $attribute) {
  8. //echo   $attribute->getAttributeCode(),"---",$attribute->getId(),"</br>";
  9. $this->_filterableAttributes[$attribute->getAttributeCode()]=$attribute->getId();
  10. }
  11. krsort($this->_filterableAttributes);
  12. return $this->_filterableAttributes;
  13. }
时间: 2024-10-07 21:51:45

magento 获取自定义产品属性和属性值的相关文章

magento 获得自定义产品属性的属性值

1 $_product->getResource()->getAttribute('my_attribute_name')->getFrontend()->getValue($_product); 注:在列表页获得的产品可能信息不全,需要获得产品id之后,使用 1 $_product = Mage::getModel('catalog/product')->load($product_id); 重新获得产品才能获得属性值 magento 获得自定义产品属性的属性值

Java反射获取对象VO的属性值(通过Getter方法)

有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个Excel导出的工具类,导出的批量数据是以List类型传入的,List里的对象自然每次都不同,这取决于需要导出什么信息. 为了使用方便,将对象的属性名与属性值存于Map当中,使用时就可以直接遍历Map了. 此次的思路是通过反射和Getter方法取得值,然后记录在一个Map当中. Kick start

webBrowser控件中获取元素 的class 属性值

html 代码如下: <TR id="t030006" class="sr plus selected"> <TD><INPUT id=cvrgNo030006 value=030006 readOnly CHECKED type=checkbox jQuery1456994811776="96"></TD> <TD>车辆损失险 </TD> <TD style=&quo

获取JSON对象的属性值

1.问题背景 有一个json对象,其中有键值对,那怎样获取json对象中属性值 2.实现源码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

javascript 获取样式表里的属性值 currentStyle 和 getComputedStyle 的使用

很多时候我们要获取 CSS 样式表里面的值(非行间样式),而获取行间样式的属性值那么这用 obj.style.attr 就能获取得到,那么怎么样才能获取到CSS样式表里面的值呢,那么就要请出我们的主角 currentStyle 和 getComputedStyle ,简要的介绍一下他们,再封装一个函数来兼容各个浏览器. 介绍: currentStyle :这个属性是 IE 浏览器上使用的. getComputedStyle :这个方法是 搞基 浏览器上使用的. 封装: //这里的 obj 参数指

jquery获取当前选项的属性值a

<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/1.6.4/jquery.js"><

转 python通过win32api轻松获取控件的属性值

python通过win32api轻松获取控件的属性值 2014-08-29 15:26:56|  分类: 自动化测试 |  标签:win32  |举报|字号 订阅 下载LOFTER我的照片书  | 1.如何利用句柄操作windows窗体 首先,获得窗体的句柄  win32api.FindWindows() 第二,获得窗体中控件的id号,spy++ 第三,根据控件的ID获得控件的句柄(hwnd)  GetDlgItem(hwnd,loginID) 最后,利用控件句柄进行操作 python可以通过w

orm获取关联表里的属性值

ORM——关系对象模型 laravel中的Eloquent ORM用于和数据表互动,其中每个数据库表会和一个对应的「模型」互动,想要了解请查看官方文档或自行百度.获取关联表里的属性值代码如下: /** * [getContactAttribute 获取卖家联系人] */ public function getContactAttribute() { return $this->hasOne('App\Http\Models\Supplier', 'SupplierId', 'SupplierId

JAVA获取指定标签的属性值

package com.zving.teachPlat.util; import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import java.util.regex.Matcher;import java.util.regex.Pattern;import com.zving.framework.utility.StringUtil; public class MatchUtil { /** *