0

Magento Community Edition のカテゴリにリストされている製品を、セッションごとにランダム化して、毎回同じ古いリストではなく、「新鮮さ」またはカテゴリの変化の錯覚を与えたいと考えています。

私が言いたいのは、ユーザーがサイトのカテゴリにアクセスしたときに、セッションごとに異なる順序で製品を表示できるようにしたいということです。したがって、ユーザーが初めてカテゴリ A にアクセスしたとします。ユーザーには、そのカテゴリに属する​​製品がランダムに並べられたリストが表示されます。ここで、別のカテゴリ (カテゴリ B など) にアクセスしてからカテゴリ A に戻ると、リストはランダムではなく、以前に表示されたものになります。したがって、ランダム化はカテゴリごとのセッションごとに 1 回だけ行われます。ユーザーが数時間後に戻ってくると、新しいセッションで、ランダム化が再び開始されます。

これは可能ですか?もしそうなら、どんな助けや指示も大歓迎です。どうもありがとう。

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 に答える