Domanda

Ho una categoria con 100 nuovi prodotti. Dopo un'importazione rimuovo tutti i prodotti da questa categoria e aggiungo 100 nuovi prodotti. Questo è molto lento e causa problemi di memoria, quindi sto facendo qualcosa di sbagliato. Ecco il codice:

public function removeAllFromNew()
{
    $category_id = 8;
    $products = Mage::getModel('catalog/product')->getCollection()
        ->addCategoryFilter(Mage::getModel('catalog/category')->load($category_id));
    foreach($products as $product)
    {
        $categories = $product->getCategoryIds();
        if(in_array($category_id, $categories))
        {
            $product_load = Mage::getSingleton('catalog/product')->load($product->getId());
            $categories = array_diff($categories, array($category_id));
            $product_load->setCategoryIds( $categories );
            $product_load->save();
        }
    }
}
public function updateNew()
{
    self::removeAllFromNew();

    $category_id = 8;
    $products = Mage::getModel('catalog/product')->getCollection()
        ->addAttributeToFilter('neuheiten', array('neq' => '') )
        ->addAttributeToSort('neuheiten', 'desc')
        ->addStoreFilter()
        ->setPage(0, 100);

    foreach($products as $product)
    {
        $categories = $product->getCategoryIds();
        $categories[] = $category_id;
        $product_load = Mage::getSingleton('catalog/product')->load($product->getId());
        $product_load->setCategoryIds( $categories );
        $product_load->save();
    }
}

Come posso farlo meglio?

Penso che all'inizio non dovrei interrogare tutti i prodotti in removeAllFromNew(). Come posso limitarlo ai prodotti in una categoria?

Aggiornare Ho aggiunto un addCategoryFilter in removeAllFromNew() Ma sembra che aggiungere un prodotto alla categoria sia la parte lenta.

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a magento.stackexchange
scroll top