0

我需要以编程方式更新 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 个网站)。

4

1 回答 1

0

在 magento 中,所有布局更改都在 xml 文件中,更多信息在http://www.magentocommerce.com/design_guide/articles/intro-to-layouts

对于类别布局,您可以在这里 找到答案http://www.magentocommerce.com/boards/viewthread/16838/

但是显示随机产品是非常糟糕的主意,因为 magento 会非常慢。

于 2013-09-09T16:52:45.353 回答