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 つの Web サイト)。