在Magento中按类别随机列出所列产品

时间:2012-12-01 16:23:51

标签: magento

我想在每个会话的基础上随机化Magento社区版中我的类别中列出的产品 - 给出“新鲜度”或我的类别更改的错觉,而不是每次都是相同的陈旧列表。

我的意思是我希望用户在访问网站上的某个类别时会看到不同的产品订单,但会在每个会话的基础上。因此,假设用户第一次访问A类,将向用户呈现属于该类别的随机排序的产品列表。现在,当他们去访问另一个类别,比如B类,然后回到A类,列表将如前所述,而非随机。因此,每个类别的每个会话只进行一次随机化。现在,当用户回来说几小时后,在新的会话中,随机化将再次开始。

这可能吗?如果是这样,任何帮助或方向将是最受欢迎的。 非常感谢。

1 个答案:

答案 0 :(得分:0)

是的,这是可能的,但是当您尝试应用过滤器时(例如按价格从低到高排序等),您将遇到问题

我认为更好的方法是按日期随机化,这样每个人都可以在某一天获得相同的产品订单。

下面是伪代码示例,用于显示标记页面上特定类别的随机产品。 (你可以改变$seed来完成你想要的事情)

public function _getProductCollection()
{

    if(is_null($this->_productCollection)) {
        $category = Mage::getModel('catalog/category')->load($this->getCategoryId());

        $seed = $this->getCategoryId() . date("W");

        $this->_productCollection = Mage::getResourceModel('catalog/product_collection');
        Mage::getModel('catalog/layer')->prepareProductCollection($this->_productCollection);
        $this->_productCollection->getSelect()->order("rand($seed)");
        $this->_productCollection->addStoreFilter();
        $this->_productCollection->addCategoryFilter($category);

        Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($this->_productCollection);
        Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($this->_productCollection);
    }


    return $this->_productCollection;
}