2

次のことで私を助けてください:

私のウェブサイトでは、カテゴリを選択すると、対応するサブカテゴリと、「このカテゴリには商品がありません」というメッセージが表示されます。これは、下位レベルのサブカテゴリに到達するまでドリルダウンしているときに発生します。

代わりに、そのサブカテゴリのすべての製品を表示したいと思います。

どうすればこれを行うことができますか?

アドバイスありがとうございました。

スティーブン

4

5 に答える 5

3

/controllers/CategoryController.php以下のコードを開いてprocess()メソッドに追加します。コードの追加を開始および終了する場所を示すコメントに注目してください。

public function process()
{
    ....
            }
            if ($this->category->id != 1)
                $this->productListAssign();

            /* MODIFICATION STARTS HERE */  
            if(!(isset($this->cat_products) AND $this->cat_products) ){ 
                $this->category->id=array();
                foreach($subCategories as $k=>$v){
                    $this->category->id[]=$v['id_category'];
                }
                $this->productListAssign();

            }
            /* MODIFICATION ENDS HERE */    

            self::$smarty->assign(array( ...
}

次にclasses/Category.php、SQL クエリの WHERE 句の行を開き、次のように変更しますpublic function getProducts

    WHERE cp.`id_category` = '.(int)$this->id.($active ? ' AND p.`active` = 1' : '').'

    WHERE cp.`id_category` '.(is_array($this->id)?" IN(".implode(',',$this->id).") ": "=".(int)$this->id).($active ? ' AND p.`active` = 1' : '').'
于 2012-11-13T03:14:29.273 に答える
2

これを達成するために何も変更する必要はありません。

製品をサブカテゴリだけでなく、親カテゴリにも割り当てるだけです (BO の製品編集で)。

于 2013-07-15T18:14:42.230 に答える
2

Layered Navigation Module (blocklayered) をインストールすることもできます。このモジュールのデフォルトの動作は、ページでセレクターウィジェットが表示されていない/アクティブでない場合でも、サブカテゴリの製品を表示することです。

于 2013-11-02T07:05:23.990 に答える
1

categoryController.php で、メソッドを見つけることができますprocess()。これは、カテゴリ ページに表示されるすべての情報を取得するものです。すべての製品を格納する変数 ($cat_product私の記憶が良ければ呼び出されると思います) が見つかります。空かどうかを簡単に確認できます。次に、ここからサブカテゴリを取得し (カテゴリ クラスにこのメソッドがあります)、これらのカテゴリの製品を取得する必要があります (カテゴリの製品を取得するメソッドもあります)。これは従わなければならないロジックに過ぎず、必要なすべてのコードは既にフレームワークに含まれています。

于 2012-08-19T22:28:00.427 に答える
-1

メイン ヘッダー メニューに新しいカテゴリを追加するのは非常に簡単です。モジュール - Pos Megamenu Customer に移動し、必要なものを追加するだけです。

終わり!!

于 2015-10-26T18:34:30.317 に答える