我需要以编程方式更新 Magento 中数千个类别的页面布局 + 随机化产品订单。这是一段代码:
/* @var $_childColorCategory Mage_Catalog_Model_Category */
$_childColorCategory = Mage::getModel('catalog/category')->load($_childColorId);
/* positions rand */
$_positions = $_childColorCategory->getProductsPosition();
if (count($_positions) > 1) {
$_order = range(1, count($_positions));
shuffle(&$_order);
$_newPositions = array_combine(array_keys($_positions), $_order);
$_childColorCategory->setPostedProducts($_newPositions);
}
$_childColorCategory
->setPageLayout('two_columns_right')
->save();
当然这一切都在循环等。
问题是布局没有被更新(嵌套产品的顺序改变得很好):我在仪表板中看到所有受影响的类别都有正确的('two_columns_right')布局,但在管理员手动点击保存按钮之前它实际上并没有在前端工作。如果我单击按钮(不进行任何更改),那么布局实际上就在前端,而且 - 对该类别的任何进一步的编程布局更改都很好。有任何想法吗?谢谢
PS 这不是 100% 的缓存问题。Magento 已更新到 1.7 - 不走运。多商店设置(4 个网站)。