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

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

1、下拉列表的产品属性

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

[php] view plaincopy
  1. $attributes['support_hardware']=$product->getAttributeText('support_hardware');

2、文本类型的产品属性

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

[php] view plaincopy
  1. $attributes['version_number']=$product->getData('version_number');

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

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

1、addAttributeToFilter接口

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

[php] view plaincopy
  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 plaincopy
  1. $_productCollection->getSelectSql()

来帮助我们写sql语句

[php] view plaincopy
  1. $_productCollection->getSelect()->where('age',array('gteq'=>45));

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

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

[php] view plaincopy
  1. $product->isSalable()

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

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

[php] view plaincopy
  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 plaincopy
  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. }

magento 获取自定义产品属性和属性值相关推荐

  1. 深入理解java注解,java的4个元注解,注解三要素——定义、使用及读取执行,深入了解注解的底层本质,通过反射自动、动态获取注解所有属性以及属性值

    1. 注解的定义 注解也是一种引用类型,编译后会生成 .class 字节码文件,作用就是为程序进行标识,不同注解能实现不同功能. 2. 注解的使用 3. 注解的读取执行 3.1 得不到注解信息,得到的 ...

  2. jQuery获取、设置标签属性值

    jQuery获取.设置标签属性值 jQuery提供了两种方法: attr():传入一个参数获取某属性值,两个参数:修改某属性值,返回参数的值(不推荐操作checked.readOnly.selecte ...

  3. python获取控件内容_python通过win32api轻松获取控件的属性值

    1.如何利用句柄操作windows窗体 首先,获得窗体的句柄  win32api.FindWindows() 第二,获得窗体中控件的id号,spy++ 第三,根据控件的ID获得控件的句柄(hwnd)  ...

  4. js 中使用idx模块方便获取链条式的对象属性值

    1. 背景 从一个js对象的属性值中的属性再次获得值,或者从集合中获得元素再获得属性值要写很多判断是否空的表达式,才能继续读取,否则就出现异常.这在开发过程很繁琐的事情,idx 模块就是来解决这个问题 ...

  5. C#通过属性名字符串获取、设置对象属性值

    目录 #通过反射获取对象属性值并设置属性值 0.定义一个类 1.通过属性名(字符串)获取对象属性值 2.通过属性名(字符串)设置对象属性值 #获取对象的所有属性名称及类型 #判断对象是否包含某个属性 ...

  6. java获取实体类对象_java 获取实体类对象属性值的方法

    在java中我们要获得实体类对象的属性,一般情况是将实体类中的属性私有化,然后再对外提供get()与set()方法,然后再获取实体类对象的属性的时候先把对象new出来,再用变量名.get()的方法得到 ...

  7. java通过反射获取对象的指定属性值(包括私有属性值和指定注解属性值)

    通过反射机制,可以灵活地根据对象的属性名的字符串形式获取对象的属性值.当一个对象有多个属性的时候,只需要对其中的几个特定属性进行某种特殊处理,具体是哪个属性并不能提前确定,每个需要处理的属性的方法也不 ...

  8. php 获取js对象的属性值,js获取对象,数组所有属性键值(key)和对应值(value)的方法示例...

    本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法.分享给大家供大家参考,具体如下: var values=function(object) { var values ...

  9. Controller层使用@value注解获取不到properties属性值

    说到@Value注解,用过的应该都知道,这是Spring3的一个注解,通过@value注解的方式获取properties文件中的配置值,大大简化了我们读取配置文件的代码.然而,最近在使用中发现在con ...

最新文章

  1. 【linux】Matchbox(二):基本概念
  2. Android 打包混肴
  3. iOS开发-Certificates、Identifiers和Profiles详解
  4. Struts2学习第二天——动态方法调用
  5. c语言规定标识符 字符串,c语言中标识符命名规则是怎样的
  6. Effective Java之请不要在新代码中使用原生态类型(二十三)
  7. 【渝粤教育】广东开放大学 大学英语1 形成性考核 (43)
  8. 在main中调用srand是否影响子函数中的rand()的返回值?
  9. webStrorm js文件里 怎么去掉参数的下划线
  10. c语言答案知码,C语言笔试习题集答案和解析.doc
  11. 算法第四版开发环境的配置
  12. 微信小程序实例源码下载
  13. 安卓控制新大陆云平台(二)
  14. 嵌入式思维 、不深不浅的理解
  15. Mac SpotLight无法搜索
  16. GLSL 参考GIMP源码实现色彩平衡调节
  17. WHM(Web Hosting Manager)/CPANEL 设置及linux 文件权限 经验
  18. Happens-Before原则
  19. 上饶师范学院数学与计算机科学学院,第4章-上饶师范学院数学与计算机科学学院.doc...
  20. 修改密码问题_修改密码

热门文章

  1. 阿里云物联网平台之创建产品与设备
  2. 太赞了!图解SQL基础知识,菜鸟也能看懂的SQL文章!
  3. 滴滴在HBase性能与可用性上的探索与实践
  4. 回忆--上海滩奋斗的日子
  5. 用yolo-v3检测算法检测图片中的apple和damaged_apple
  6. invoke调用成员方法(无参和有参):
  7. 鸿蒙支持手机型号,推出鸿蒙,放弃安卓?华为新机入网,鸿蒙首发机型确定!...
  8. java webservice jws,1 基于jws的webservice项目
  9. 这个地方沸腾,高手争雄,至尊大决战,从天上杀到地下,又从地上打到云霄上!
  10. 支付宝支付学习:蚂蚁沙箱环境是什么?怎样使用蚂蚁沙箱环境?