将产品属性值分配给 magento 中的另一个产品属性
assign a product attribute value to another product attribute in magento
我有一个 Weight
属性:
Attribute Code: weight
Scope: general
Catalog Input Type for Store Owner: Text Field
Values Required: yes
Apply To: Simple Product, Bundle Product
Allow HTML Tags on Frontend: yes
我有一个 General Weight
属性:
Attribute Code: general_weight
Scope: general
Catalog Input Type for Store Owner: Text Field
Values Required: no
Apply To: All Product Types
Use in Advanced Search: yes
Comparable on Front-end: yse
Allow HTML Tags on Frontend: yes
Visible on Product View Page on Front-end: yes
我想将 Weight
属性分配给 General Weight
,不带四位小数。我的意思是我想要 Weight
属性的值(例如 2000.0000 复制到产品保存时的 General Weight
值(但没有像 2000 这样的最后一位小数)。
我用这种方式做了一个小扩展:
我在 app/etc/modules
中创建了 Moh3n_Attvaluecopier.xml
文件,内容如下:
<?xml version="1.0"?>
<config>
<modules>
<Moh3n_Attvaluecopier>
<active>true</active>
<codePool>local</codePool>
</Moh3n_Attvaluecopier>
</modules>
</config>
app/code/local/Moh3n/Attvaluecopier/etc
中的 和 config.xml
文件内容如下:
<?xml version="1.0"?>
<config>
<modules>
<Moh3n_Attvaluecopier>
<version>0.0.1</version>
</Moh3n_Attvaluecopier>
</modules>
<global>
<models>
<moh3nattvaluecopier>
<class>Attvaluecopier_Model</class>
</moh3nattvaluecopier>
</models>
<events>
<catalog_product_save_after>
<observers>
<moh3n_attvaluecopier_model_observer>
<type>singleton</type>
<class>Moh3n_Attvaluecopier_Model_Observer</class>
<method>copyAttribute</method>
</moh3n_attvaluecopier_model_observer>
</observers>
</catalog_product_save_after>
</events>
</global>
</config>
app/code/local/Moh3n/Attvaluecopier/model
中的 和 Observer.php
文件具有以下内容:
<?php
class Moh3n_Attvaluecopier_Model_Observer
{
private $_processFlag; //to prevent infinite loop of event-catch situation
public function copyAttribute($observer){
if(!$this->_processFlag):
$this->_processFlag=true;
$_store = $observer->getStoreId();
$_product = $observer->getProduct();
$_productid = $_product->getId();
$attrA = $_product->getAttributeText('weight'); //get attribute A's value
$action = Mage::getModel('catalog/resource_product_action');
$action->updateAttributes(array($_productid), array('general_weight'=>$attrWeight),$_store); //assign attrA's value to attrB
$_product->save();
endif;}
}
我用 2000.0000
等数字填充 weight
属性,但在保存产品后 General Weight
中没有任何变化。我的意思是值 2000
不会复制到 General Weight
属性并且 General Weight
不会显示任何东西。
这是更新后的观察者函数:
<?php
public function copyAttribute($observer){
if(!$this->_processFlag):
$this->_processFlag=true;
$_product = $observer->getProduct();
$_productid = $_product->getId();
$productModel = Mage::getModel('catalog/product');
$loadCurrentProduct = $productModel->load($_productid);
$loadCurrentProduct->setGeneralWeight(intval($loadCurrentProduct->getWeight()));
$loadCurrentProduct->save();
endif;
}
我有一个 Weight
属性:
Attribute Code: weight
Scope: general
Catalog Input Type for Store Owner: Text Field
Values Required: yes
Apply To: Simple Product, Bundle Product
Allow HTML Tags on Frontend: yes
我有一个 General Weight
属性:
Attribute Code: general_weight
Scope: general
Catalog Input Type for Store Owner: Text Field
Values Required: no
Apply To: All Product Types
Use in Advanced Search: yes
Comparable on Front-end: yse
Allow HTML Tags on Frontend: yes
Visible on Product View Page on Front-end: yes
我想将 Weight
属性分配给 General Weight
,不带四位小数。我的意思是我想要 Weight
属性的值(例如 2000.0000 复制到产品保存时的 General Weight
值(但没有像 2000 这样的最后一位小数)。
我用这种方式做了一个小扩展:
我在 app/etc/modules
中创建了 Moh3n_Attvaluecopier.xml
文件,内容如下:
<?xml version="1.0"?>
<config>
<modules>
<Moh3n_Attvaluecopier>
<active>true</active>
<codePool>local</codePool>
</Moh3n_Attvaluecopier>
</modules>
</config>
app/code/local/Moh3n/Attvaluecopier/etc
中的 和 config.xml
文件内容如下:
<?xml version="1.0"?>
<config>
<modules>
<Moh3n_Attvaluecopier>
<version>0.0.1</version>
</Moh3n_Attvaluecopier>
</modules>
<global>
<models>
<moh3nattvaluecopier>
<class>Attvaluecopier_Model</class>
</moh3nattvaluecopier>
</models>
<events>
<catalog_product_save_after>
<observers>
<moh3n_attvaluecopier_model_observer>
<type>singleton</type>
<class>Moh3n_Attvaluecopier_Model_Observer</class>
<method>copyAttribute</method>
</moh3n_attvaluecopier_model_observer>
</observers>
</catalog_product_save_after>
</events>
</global>
</config>
app/code/local/Moh3n/Attvaluecopier/model
中的 和 Observer.php
文件具有以下内容:
<?php
class Moh3n_Attvaluecopier_Model_Observer
{
private $_processFlag; //to prevent infinite loop of event-catch situation
public function copyAttribute($observer){
if(!$this->_processFlag):
$this->_processFlag=true;
$_store = $observer->getStoreId();
$_product = $observer->getProduct();
$_productid = $_product->getId();
$attrA = $_product->getAttributeText('weight'); //get attribute A's value
$action = Mage::getModel('catalog/resource_product_action');
$action->updateAttributes(array($_productid), array('general_weight'=>$attrWeight),$_store); //assign attrA's value to attrB
$_product->save();
endif;}
}
我用 2000.0000
等数字填充 weight
属性,但在保存产品后 General Weight
中没有任何变化。我的意思是值 2000
不会复制到 General Weight
属性并且 General Weight
不会显示任何东西。
这是更新后的观察者函数:
<?php
public function copyAttribute($observer){
if(!$this->_processFlag):
$this->_processFlag=true;
$_product = $observer->getProduct();
$_productid = $_product->getId();
$productModel = Mage::getModel('catalog/product');
$loadCurrentProduct = $productModel->load($_productid);
$loadCurrentProduct->setGeneralWeight(intval($loadCurrentProduct->getWeight()));
$loadCurrentProduct->save();
endif;
}