1

我开发了一个带有拖放功能的自定义产品排序模块,为了简单和速度,它直接更新到 EAV 表。我保存这个新职位:

$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->beginTransaction();

for ($i = 0; $i < sizeof($ids); $i++)
{
    $query = "UPDATE catalog_category_product SET position='".$i."' WHERE product_id='".$ids[$i]."' AND category_id='".$cat."'";
    $write->query($query);
}

$write->commit();

我的问题是如何仅对受影响的更改强制重新索引,以便位置排序在前端可见。

我尝试发送几个不同的事件,例如:

Mage::dispatchEvent('catalog_product_flat_rebuild', array(
    'store_id' => Mage::app()->getStore()->getStoreId(),
    'table'    => Mage::getResourceSingleton('catalog/category_flat')->getMainStoreTable(Mage::app()->getStore()->getStoreId())
));

但是我仍然在前端看到旧的排序顺序,这也会重新索引整个平面表,我宁愿只重新索引我更改位置的产品 ID 和类别 ID 的数组。关于我将如何做到这一点的任何想法?

提前致谢!

4

0 回答 0