1. 程式人生 > >magento 獲取自定義產品屬性和屬性值

magento 獲取自定義產品屬性和屬性值

在magento系統中經常要自定義自己的產品屬性,在後臺自定義的產品屬性如何獲取呢,下面根據屬性型別的不同分別說明

產品屬性要想在前臺獲取到需要設定屬性的Used in Product Listing 為true

1、下拉列表的產品屬性

如定義了一個表示產品的硬體支援型別的下拉列表屬性support_hardware就可以這樣獲取

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

2、文字型別的產品屬性

如定義了一個屬性叫

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


當得到產品物件後我們可以獲取產品的各種屬性,如果我們要獲取滿足一定屬性條件的產品集呢?這時候就需要根據產品屬性對產品過濾了

magento提供的根據屬性過濾的介面有兩種,一種是addAttributeToFilter,另一種是直接操作資料庫通過getSelect()->where()的方法

1、addAttributeToFilter介面

比如我們想要獲取APP產品支援的系統版本(屬性name是system_version)在4.2以上的的產品集,就可以這麼做

  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()直接操作資料庫

通過這種方式要求對資料庫結構屬性,通常我們會用

  1. $_productCollection->getSelectSql()  
來幫助我們寫sql語句
  1. $_productCollection->getSelect()->where('age',array('gteq'=>45));  

怎麼通過where寫複雜的查詢資料庫語句會在另一篇中講解

獲取產品後通常還要加上對產品做產品是否是啟用,是否在當前商店的判斷

  1. $product->isSalable()  

下面講下怎麼獲去屬性的值

1、假設我們知道attribute的ID為149,就可以這樣獲取屬性的value和label

  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,獲取的方法如下:

  1. protectedfunction _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 ($attributesas$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 獲取定義產品屬性屬性

在magento系統中經常要自定義自己的產品屬性,在後臺自定義的產品屬性如何獲取呢,下面根據屬性型別的不同分別說明 產品屬性要想在前臺獲取到需要設定屬性的Used in Product Listing 為true 1、下拉列表的產品屬性 如定義了一個表示產品的硬體

Flume(ng) 定義sink實現屬性注入

最近需要利用flume來做收集遠端日誌,所以學習一些flume最基本的用法。這裡僅作記錄。 遠端日誌收集的整體思路是遠端自定義實現log4j的appender把訊息傳送到flume端,flume端自定義實現一個sink來按照我們的規則儲存日誌。

如何獲取定義“ data-*/data_* ”中的

HTML<div id="one" data-test="123"></div> <div id="tow" data_test="456"></div>

總結Jquery中獲取定義屬性使用.attr().data()以及.prop()的區別

p.p1 { margin: 0.0px 0.0px 2.0px 0.0px; font: 14.0px ".PingFang SC" } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC" } p.p3 { margin:

獲取定義屬性/event的觸發事件物件繫結事件物件

1.獲取自定義屬性 var testEle = document.getElementById("test")   testEle.setAttribute("key","value"); // 設定   testEle.attributes["k

jquery獲取定義屬性(attrprop)例項介紹

$("form").attr("check"); $("form").prop("check"); 兩種都可以,不過新版jquery推薦第二種,兩個在其他方面都差不多,我發現的唯一不同就是在checkbox上的時候,需要用prop,不然IE瀏覽器會不相容 jquery1.6

jquery 獲取 定義屬性(attr prop)用法

$("form").attr("check"); $("form").prop("check"); 兩種都可以,不過新版jquery推薦第二種,兩個在其他方面都差不多,我發現的唯一不同就是在che

H5對定義屬性的規定新增獲取定義屬性的方法

H5對自定義屬性的規定和新增獲取自定義屬性的方法 元素屬性那麼多,如何區分是自帶的屬性還是預設的屬性呢? H5規定自帶的屬性有個data- 字首,如data-index="1" <script> var divele = document.querySelector(

jquery獲取定義屬性

取值 知識庫 rep -name bsp class tar itl jquery //獲取屬性值 1 <div id="text" value="黑噠噠的盟友"><div> jQuery取值: $("#text").attr("value");

獲取定義屬性

js獲取自定義屬性的值在js中有3種常見的方法:獲取自定義屬性的值

React學習之旅----獲取定義屬性

獲取自定屬性,在小程式中可能更常用,在React中同樣也是可以獲取的,看例項 import React, { Component } from 'react'; class Event extends Component { constructor(props) { super(pr

【小程式】獲取定義屬性

<view bindtap="getDataAttr" data-postId="{{postId}}" data-id="id" class="div"> </view> getDataAttr:function(e){ console.log(e.currentTa

js中通過節點獲取定義屬性

父標籤,子標籤 TObj = pNode.parent().next() .children(‘div’).children(’.title’); TObj = pNode.parent().parent().children(‘div’).children(’.title’); TOb

jQuery點選元素獲取定義屬性,利用冒泡原理~

知識鋪墊: attr(“屬性名”); //獲取屬性的值(取得第一個匹配元素的屬性。通過這個方法可以方便的從第一個匹配元素中獲取一個屬性的值。如果元素沒有相應屬性,則返回undefined)

Android定義View獲取定義屬性

首先扯點別的:今晚回家做了一個魚香肉絲,剛學的,出鍋以後,才想起沒有放豆瓣醬,也是沒誰了。不過吃起來還行,吃了三塊煎餅。 今天記錄一下自定義View的建構函式的使用,以及如何獲取自定義屬性。 先看一下自定義View 的建構函式 public class

layui select 新增獲取定義屬性

<select id="pz" name="pz" lay-filter="pz" type="select"> <option data-href="'.$url.'&pz=10" value="10">10</op

React.js點選獲取定義屬性

點選刪除按鈕,刪除列表中對應項本來是React比較基礎的應用,可是應用情況變得複雜了以後,我還真想了一會兒才搞定。 簡化一下應用場景:點選新增按鈕,增加一條輸入框,點選輸入框旁邊的按鈕,刪除該輸入框(不能刪錯了啊)。 先說第一種方法問題剛上手,首先規劃級別:一個輸入框和對應刪除按鈕為一個子元件,整體為父元

asp.net 定義伺服器控制元件屬性 [Bindable(true)]...

自定義伺服器控制元件屬性的特性:Bindable這個特性表示屬性是否可以繫結一個有效資料來源。通常使用布林值進行設定。例如:Bindable(true)。如果使用值true標記屬性,表示該屬性可以繫結一個有效資料來源,且應引發該屬性的屬性更改通知。Browsable指定屬性是否應該在屬性瀏覽器中顯示,使用布林

fastjsonSpringMVC實現定義HttpMessageConverter接收獲取JSON格式的資料

**引言**:Spring MVC 提供了處理JSON格式請求/響應的HttpMessageConverter利用Jackson 開源包處理JSON格式的請求響應訊息。 ```"關鍵技術"```:  **RequestBody**註解 :用於讀取Request請求

小程式使用selectComponent獲取定義元件時,返回null(分析解決方法)

一、原因:        元件所在的佈局層級不同,該元件被建立的時間會有所不同,意味著ready(元件生命週期函式,元件佈局完成後執行)被呼叫的時間有所不同。由於元件建立完成的時間晚於頁面建立完成,即元件生命週期函式的ready被執行的時間晚於頁面生命週期