0

我想在每个会话的基础上对 Magento 社区版中我的类别中列出的产品进行随机化 - 给人一种“新鲜”的错觉或我的类别发生变化,而不是每次都使用相同的陈旧列表。

我的意思是我希望用户在访问网站上的一个类别时看到不同的产品顺序,但在每个会话的基础上。因此,假设用户第一次访问类别 A,用户将看到一个随机排序的属于该类别的产品列表。现在,当他们去访问另一个类别时,比如类别 B,然后返回类别 A,列表将与之前查看的一样,而不是随机的。因此,每个类别的每个会话仅发生一次随机化。现在,当用户在几个小时后回来时,在新的会话下,随机化将再次启动。

这可能吗?如果是这样,任何帮助或指导将不胜感激。非常感谢。

4

1 回答 1

1

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

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

下面是我用来在标签页面上显示特定类别的随机产品的伪代码示例。(你可以改变$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;
}
于 2012-12-01T17:05:39.897 回答