【问题标题】:How to remove a product from a category magento 1.5如何从类别 magento 1.5 中删除产品
【发布时间】:2013-07-22 22:34:27
【问题描述】:

我是 Magento 的新手,我正在从事一项 cron 作业,该作业会在指定日期之后删除特定类别中的产品。通过工作和 Stackoverflow 的帮助,我想出了以下代码:

require_once 'app/Mage.php';
Mage::app();
$date = Mage::getModel('core/date')->date('Y-m-d H:i:s');
$collection = Mage::getModel('catalog/product')->getCollection();    
$collection->addfieldtofilter('news_to_date', array(array('to' => $date)));        
foreach($collection as $product) {        
   $product->setStatus(Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
   $product->save();
 }

这会检查实际日期并将其与产品日期进行比较。如果该日期已过,产品将被禁用。我需要的是,代码应该删除该类别的产品,而不是禁用产品(在这种情况下,该类别是“销售”)

希望大家能帮帮我!

提前致谢!

【问题讨论】:

    标签: php magento magento-1.5


    【解决方案1】:

    您需要从产品中获取所有类别 id,然后从类别 ids 数组中删除销售类别 ID 并将它们设置回产品。

    例如,销售类别 ID 为 5。

    foreach ($collection as $product) {
        //Getting all category ids
        $ids = $product->getCategoryIds();
        //Searching array key with value 5 and removing from array
        if (($key = array_search(5, $ids)) !== false) {
            unset($ids[$key]);
            $product->setCategoryIds($ids)
            $product->save();
        }
    }
    

    附:您可以使用 magento cron 作业功能,而不是不需要使用:

    require_once 'app/Mage.php';
    Mage::app();
    

    【讨论】:

    • 您的代码有效。但是你错过了 if 条件内第二行的半列:)
    猜你喜欢
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 1970-01-01
    相关资源
    最近更新 更多