如何将所有产品分配到默认类别?Magento:将所有产品分配到默认类别
我不会放弃分配的实际类别,但我也会添加默认类别。
通过这种方式,具有类别1的产品A也将具有默认类别和具有任何类别分配的产品B将只具有默认类别。
感谢
如何将所有产品分配到默认类别?Magento:将所有产品分配到默认类别
我不会放弃分配的实际类别,但我也会添加默认类别。
通过这种方式,具有类别1的产品A也将具有默认类别和具有任何类别分配的产品B将只具有默认类别。
感谢
你可以使用此自定义脚本:
<?php
require_once 'app/Mage.php';
Mage::app();
$default_category_id = [your default category id];
$db = Mage::getSingleton('core/resource')->getConnection('core_read');
$sql = "SELECT product_id FROM catalog_category_product WHERE category_id != ?";
$pIds = $db->fetchAll($sql, array($default_category_id));
foreach($pIds as $pid) {
$sql = "INSERT INTO catalog_category_product (category_id, product_id, position) VALUES (?,?,1)";
$db->query($sql, array($default_category_id, $pid));
}
?>
希望它会帮助你。
我总是尝试避免在可以使用现有模型时运行直接SQL查询。这是我会怎么做:
<?php
require_once 'app/Mage.php';
Mage::app();
$collection = Mage::getModel('catalog/product')->getCollection()
->addStoreFilter($store_id) // Or use the default Mage_Catalog_Model_Abstract::DEFAULT_STORE_ID
->addAttributeToSelect('*');
// You may need to specify a limit if you have too many products with: ->setPageSize(NUMBER_OF_PRODUCTS)
$newCategories = array(12345); // Put as much categories as you want to add
foreach ($collection as $product) {
// array_merge: To keep the existing ids
// array_unique: to avoid assigning the same category twice
$product->setCategoryIds(
array_unique(array_merge($product->getCategoryIds(), $newCategories))
);
$product->save();
}
你可能需要重新索引之后(如果你有保存在您的重新索引设置中禁用更新),以使更改生效。
$ newCategories = array(12345); 我应该用我的DEFAULT CATEGORY ID替换“12345”? – monak83 2014-12-09 15:28:36
是的,不要忘记先备份数据库,以防出现问题。 – 2014-12-09 16:20:57
我有这个错误: PHP致命错误:Uncaught异常'PDOException'消息'SQLSTATE [40001]:序列化失败:1213尝试获取锁定时发现死锁;尝试重新启动交易'/home2/tamracit/public_html/lib/Zend/Db/Statement/Pdo.php:228 – monak83 2014-12-11 08:50:22
您必须获得产品收集并在每个产品中设置category_id。 – Knase 2014-12-05 16:48:19