我在Magento 1.9中有以下问题:其中有很多产品的类别,默认排序顺序是按位置,Magento后端的所有产品位置都是1.那么当你打开一个类别时会发生什么在前端,许多类似的产品首先显示另一组相似类型的产品。我想以某种方式随机化他们的位置(通过脚本或其他任何东西),以便不同类型的产品混合在一起。
例如我有葡萄酒类别, 香槟和威士忌及产品 在他们和我也有类别生日产品,包括这些类别的产品。当在前端打开类别时,首先会有很多威士忌产品 然后展示了很多葡萄酒......等我希望它们混合在一起。提前谢谢 任何帮助!
答案 0 :(得分: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其中一个产品只是设置一个随机位置(这里介于0到9999之间):
foreach($products as $productId => $position ){
$products[$productId] = '' . rand(0,9999);
}
最后保存:
$category->setPostedProducts($products);
$category->save();
下面是一个可以放在/ shell magento目录中的脚本:
<?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();