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