2016-11-28 9 views
0

Magento 1.9には次のような問題があります。その中には多くの製品が含まれているカテゴリがあり、Magentoバックエンドのすべての製品ポジションは位置によって決まります。多くの類似製品が最初に現れ、同様のタイプの製品が別のセットに続きます。異なる種類の製品が混在しているように、何らかの形で(スクリプトなどで)自分のポジションをランダム化したいと思います。Magentoカテゴリでランダムな商品ポジションを割り当てる方法は?

たとえば、私はカテゴリーワイン、 シャンパンとウィスキーとそれらの製品 を持っており、これらのカテゴリの製品を含むカテゴリ誕生日製品もあります。そして、そのカテゴリーがフロントエンドで最初に開かれたとき、たくさんのウイスキー製品 が表示されています。あらかじめ のお手数をおかけしていただきありがとうございます!

答えて

1

あなたは以下のように行うことができます。そして、その製品の位置を

$category = Mage::getModel('catalog/category') 
->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID) 
->load($categoryId); 

まずカテゴリを取得

$products = $category->getProductsPosition(); 

これは、このように組織配列となります

product_id_1 => position_1 
product_id_1 => position_2 
foreach($products as $productId => $position){ 
    $products[$productId] = '' . rand(0,9999); 
} 

そして最後に保存します。:だから(ここでは0と9999の間)のランダムな位置を設定し、これらの製品のいずれかをforeachのここ

$category->setPostedProducts($products); 
$category->save(); 

は、あなたが/シェルの中に入れることができますスクリプトを下回っていますマゼンタディレクトリ:

<?php 
require_once './abstract.php'; 

class RandomCategoryOrder extends Mage_Shell_Abstract {  
    private $_categoryId = 188; 

    public function run(){ 
     $category = Mage::getModel('catalog/category') 
     ->setStoreId(Mage_Core_Model_App::ADMIN_STORE_ID) 
     ->load($this->_categoryId); 

     $products = $category->getProductsPosition(); 

     foreach($products as $productId => $position){ 
      $products[$productId] = '' . rand(0,9999); 
     } 

     $category->setPostedProducts($products); 

     try{ 
      $category->save(); 
     }catch(Exception $e){ 
      echo $e->getMessage(); 
     } 
    }  

} 
$randowCategoryOrder = new RandomCategoryOrder(); 
$randowCategoryOrder->run(); 
+0

この素晴らしい答えをありがとう!!! –

関連する問題