将产品属性值分配给 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;
}