我有一个 Magento 1.5.0.1 安装,有 3 个不同的商店视图。在某些时候,其中两家商店不使用产品属性的默认值。我试图找到一种方法让所有产品对所有商店都使用默认值,这样客户只需在一个地方更新东西。我找到了这篇文章,但它似乎只适用于特定名称的产品。谁能解释如何在我的情况下使用该代码?或者建议新代码?
问问题
6147 次
3 回答
9
我可以让它工作的唯一方法是通过 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;
以上将重置所有产品以使用所有属性的默认值。
于 2013-04-02T03:05:48.843 回答
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”值)。
于 2013-02-26T11:29:04.430 回答
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());
}
}
?>
于 2013-06-25T02:39:42.617 回答