2014-12-05 90 views
1

如何將所有產品分配到默認類別?Magento:將所有產品分配到默認類別

我不會放棄分配的實際類別,但我也會添加默認類別。

通過這種方式,具有類別1的產品A也將具有默認類別和具有任何類別分配的產品B將只具有默認類別。

感謝

+0

您必須獲得產品收集並在每個產品中設置category_id。 – Knase 2014-12-05 16:48:19

回答

1

你可以使用此自定義腳本:

<?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)); 
} 
?> 

希望它會幫助你。

+0

我有一個錯誤: PHP解析錯誤:在/home2/tamracit/public_html/script_cat.php語法錯誤,意想不到的'應用程序/ Mage.php ''(T_CONSTANT_ENCAPSED_STRING)第2行 – monak83 2014-12-09 15:13:07

+0

require_once「應用程序/ Mage.php 「;請在第2行刪除$行#line2 – 2014-12-10 07:44:26

+0

沒有$ char。我應該在哪裏刪除它? – monak83 2014-12-12 07:44:10

1

我總是嘗試避免在可以使用現有模型時運行直接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(); 
} 

你可能需要重新索引之後(如果你有保存在您的重新索引設置中禁用更新),以使更改生效。

+0

$ newCategories = array(12345); 我應該用我的DEFAULT CATEGORY ID替換「12345」? – monak83 2014-12-09 15:28:36

+0

是的,不要忘記先備份數據庫,以防出現問題。 – 2014-12-09 16:20:57

+0

我有這個錯誤: PHP致命錯誤:Uncaught異常'PDOException'消息'SQLSTATE [40001]:序列化失敗:1213嘗試獲取鎖定時發現死鎖;嘗試重新啓動交易'/home2/tamracit/public_html/lib/Zend/Db/Statement/Pdo.php:228 – monak83 2014-12-11 08:50:22

相關問題