将所有产品设置为使用所有商店的默认值

时间:2013-02-25 23:15:49

标签: php magento

我安装了Magento 1.5.0.1,包含3个不同的商店视图。在某些方面,两个商店不使用产品属性的默认值。我试图找到一种方法使所有产品都使用所有商店的默认值,这样客户只需要在一个地方更新东西。我找到了this文章,但它似乎只适用于特别调用的产品。任何人都可以解释如何在我的情况下使用该代码?或建议新代码?

3 个答案:

答案 0 :(得分:7)

我能让这个工作的唯一方法是通过MySQL:

DELETE FROM `catalog_product_entity_text` where store_id != 0;
DELETE FROM `catalog_product_entity_datetime` where store_id != 0;
DELETE FROM `catalog_product_entity_decimal` where store_id != 0;
DELETE FROM `catalog_product_entity_int` where store_id != 0;
DELETE FROM `catalog_product_entity_varchar` where store_id != 0;

以上将重置所有产品以使用所有属性的默认值。

答案 1 :(得分:0)

您应该使用Mage :: getSingleton('catalog / product_action')连续更新大量产品。

1°)获取所需产品的ID,以供所有产品使用:

$ids = Mage::getModel('catalog/product')->getCollection()->getAllIds();

2°)制作属性列表并将值“false”

关联
$attributes = array('name'=>false,'description'=>false,....)

3°)拿起要更改的商店ID列表,并将其设置为数组:

$stores = array(1,2,3);

然后创建你的脚本:

foreach ($stores as $store_id)
{
     Mage::getSingleton('catalog/product_action')->updateAttributes($ids, $attributes, $store_id);
}

它将更新所有产品(ID),以便在store_id中将属性设置为默认值(由于“false”值)。

答案 2 :(得分:0)

这将获取已在任何商店中设置的值,并将这些值合并为所有产品的默认值:

     <?php 
    $cat = mysql_connect("host", "user", "password") or die(mysql_error());
        mysql_select_db("database",$cat) or die(mysql_error());

        $types = array(
        'catalog_product_entity_text',
        'catalog_product_entity_datetime',
        'catalog_product_entity_decimal',
    'catalog_product_entity_int',
    'catalog_product_entity_varchar'
    );

    foreach($types as $type){

    $result = mysql_query("select * from $type where store_id != 0",$cat) or die(mysql_error());  

        while ($row = mysql_fetch_assoc($result)) {

            if(!is_null($row['value'])){

                mysql_query("update $type set value = '".mysql_real_escape_string(stripslashes($row['value']))."' 
                where store_id = '0' 
                and entity_id = '".$row['entity_id']."' 
                and attribute_id = '".$row['attribute_id']."'",$cat) or die(mysql_error()); 
            }

            mysql_query("delete from $type where value_id = '".$row['value_id']."'",$cat) or die(mysql_error()); 

        }

    }
?>