Я немного новый в Magento, и я работаю над заданием cron, которое удаляет продукт в определенной категории после назначенной даты. С работой и помощью Stackoverflow я придумал этот код:
require_once 'app/Mage.php'; Mage::app(); $date = Mage::getModel('core/date')->date('Ymd 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(); }
Это проверяет фактическую дату и сравнивает ее с датой продуктов. Если дата прошла, продукт отключен. Мне нужно, чтобы вместо отключения продукта код должен удалять продукт категории (в этом случае категория «Продажи»)
Надеюсь, вы, ребята, можете мне помочь!
Заранее спасибо!
Вам нужно получить все идентификаторы категорий из продукта, а затем удалить идентификатор категории продаж из массива идентификаторов категории и вернуть их обратно в продукт.
Например, идентификатор категории продаж – 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(); } }
не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(); } }
PS Вы можете использовать функциональные возможности magento cron, чем вам не нужно:
require_once 'app/Mage.php'; Mage::app();
Пожалуйста, сделайте следующее:
Сначала перейдите в меню «Каталог» -> «Управление продуктами» -> нажмите на название вашего продукта -> Категории (левая панель меню) -> см. Название правой стороны и не отмечена категория.