我开发了一个带有拖放功能的自定义产品排序模块,为了简单和速度,它直接更新到 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 的数组。关于我将如何做到这一点的任何想法?
提前致谢!