博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
magento 获取自定义产品属性和属性值
阅读量:2429 次
发布时间:2019-05-10

本文共 2407 字,大约阅读时间需要 8 分钟。

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

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

1、下拉列表的产品属性

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

$attributes['support_hardware']=$product->getAttributeText('support_hardware');
2、文本类型的产品属性

如定义了一个属性叫

$attributes['version_number']=$product->getData('version_number');

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

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

1、addAttributeToFilter接口

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

$_productCollection = Mage::getResourceModel('catalog/product_collection')	                    ->setStoreId(1)	                    ->addAttributeToSelect('*')			    ->addAttributeToFilter('system_version',array('gteq'=>45));//45这个值是怎么得到的呢,这个值是system_version为4.2时对应的属性值,关于怎么获取属性的值在后面会讲

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

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

$_productCollection->getSelectSql()
来帮助我们写sql语句
$_productCollection->getSelect()->where('age',array('gteq'=>45));

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

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

$product->isSalable()

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

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

$attributeOption=Mage::getResourceModel('eav/entity_attribute_option_collection')                                    ->setPositionOrder('asc')                                    ->setAttributeFilter(149)                                    ->setStoreFilter()                                    ->load();        $attributeOptionArray=$attributeOption->toOptionArray();	echo "

"; print_r($attributeOptionArray);
2、怎么根据attribute的name来得到attribute对象还在研究中

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

protected function _getFilterableAttributes(){        $layer = Mage::getModel("catalog/layer");        $rootCategory=Mage::getModel('catalog/category')->load(Mage::app()->getStore()->getRootCategoryId());        $layer->setCurrentCategory($rootCategory);        $attributes = $layer->getFilterableAttributes();        $this->_filterableAttributesExists=array();        foreach ($attributes as $attribute) {            //echo   $attribute->getAttributeCode(),"---",$attribute->getId(),"
"; $this->_filterableAttributes[$attribute->getAttributeCode()]=$attribute->getId(); } krsort($this->_filterableAttributes); return $this->_filterableAttributes; }

转载地址:http://qksmb.baihongyu.com/

你可能感兴趣的文章
虎牙直播在微服务改造方面的实践和总结
查看>>
微服务精华问答 | 在使用微服务架构时,您面临哪些挑战?
查看>>
Kubernetes 调度器实现初探
查看>>
边缘计算精华问答 | 边缘计算有哪些应用场景?
查看>>
要闻君说:Synergy Research Group首发云基础设施数据,腾讯云v5一把;京东物流发力5G;厉害!阿里挖走贾扬清...
查看>>
数据中台精华问答 | 数据中台和传统数仓的区别是什么?
查看>>
这是一则计算机视觉顶级会议CVPR与腾讯的爆闻,啥?
查看>>
如何用30分钟快速优化家中Wi-Fi?阿里工程师有绝招
查看>>
【C语言】C语言中常用函数源代码【strncpy ,strncat ,strncmp】
查看>>
【Java】【算法练习】题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是输出yes,不是输出no,数组任意两个数字不相同。
查看>>
【Java】给定一个二叉树和其中的一个节点,请找出中序遍历的下一个节点且返回, 注意:树中的节点不仅包含左右子节点,同时包含父节点的指针。
查看>>
【Java】【多线程】—— 多线程篇
查看>>
【计算机网络】—— TCP/IP篇
查看>>
【Java】【算法】——算法篇
查看>>
【Java】【数据库】知识重点——数据库篇
查看>>
【Java】知识重点——消息队列篇
查看>>
【Java】学习总结 —— HashMap之put()方法实现原理
查看>>
【计算机网络】【TCP】如何讲清楚Tcp的三次握手和四次挥手?
查看>>
【Java】-- Java核心知识点总结
查看>>
【数据库】SQL之重点知识点总结
查看>>