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

在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’=><span style=“color:#ff6666;”>45</span>));<span style=“color:#3366ff;”>

//45这个值是怎么得到的呢,这个值是system_version为4.2时对应的属性值,关于怎么获取属性的值在后面会讲</span>

 

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 “<hr>”;

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(),”</br>”;

$this->_filterableAttributes[$attribute->getAttributeCode()]=$attribute->getId();

}

krsort($this->_filterableAttributes);

return $this->_filterableAttributes;

}

 

相关推荐

magento 2.3 nginx 安装

在网上看了许多中文的magento2的安装教程,大多数都没有完整的安装步骤,本教程将教会你怎么使用和安装magento2.3 …

Magento忘记密码怎么办

如果你忘记 Magento 用户名和(或)密码无法登陆后台,并且forgot your password链接无法给你发送找回密码邮件,这 …

magento backend dashboard can’t log in – session error

可能很多朋友有同样的经历,magento在服务器中配置域名是可以正常的访问了,但是在本地配置后却无法登录后台,账号密码登录的时候发现出现空白,无法跳转到后台,本文章向大家介绍两种解决本地magento后台无法登录的方法,需要的朋友可以参考下

暂无评论

发表评论

微信扫一扫,分享到朋友圈

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