2

私はOpencart 1.5.5.1を使用

しています。カテゴリページの各サブカテゴリから1つの製品を表示する方法を知っている人なら誰でも知っています。ユーザーがカテゴリページにリストされているproudctをクリックすると、すべての製品が懸念されるサブカテゴリページに移動します表示されます

例:
カテゴリ名がAで、サブカテゴリがAAABACADAE
AAで、製品名が 5つあるAA1AA2AA3AA4AA5
ABで、製品名が 4つあるAB1AB2AB3AB4
ACであるとします。 3 つの製品名AC1AC2AC3
AD には 4 つの製品名AD1AD2AD3 がありますAD4
AEには、 AE1AE2AE3という 3 つの製品名があります。

カテゴリ ページを読み込むと、各サブカテゴリから 1 つの製品が表示されるはずですが、それは可能ですか? もしそうなら、どのようにそれを行うことができますか

4

2 に答える 2

7

これは以下の疑似コードで、使用しているopencartのバージョンがわからないという考えを与えるだけなので、以下のコードを実行して、各サブカテゴリから 1 つの製品を表示するだけです

プロジェクトディレクトリを開いcatelog/controller/product/category.phpindex()関数でカテゴリID、つまり$category_idあなたが立っている親カテゴリIDを取得し、コントローラーをレンダリングする前にコードを配置します。$this->response->setOutput($this->render());

/**********************************************************************/
        $getsubcate=$this->model_catalog_category->getCategories($category_id);
        $subcatedata=array();

        for($s=0;$s< count($getsubcate); $s++){
            $subcatedata[$s]=array(
            'name'=>$getsubcate[$s]['name'],
            'href'  => $this->url->link('product/category', 'path=' . $getsubcate[$s]['parent_id'] . '_' . $getsubcate[$s]['category_id'])
            );
            $data = array(
                        'filter_category_id' => $getsubcate[$s]['category_id'],
                        'sort'               => $sort,//your sorting param
                        'order'              => $order,// your ordering param
                        'limit'              => 1
                    );

            $subcatedata[$s]['product'] = $this->model_catalog_product->getProducts($data);
        }
       $this->data['subcategory']=$subcatedata;


        /****************************************************************************************/

デフォルトのものを使用している場合はテーマのカテゴリ テンプレートを開き、パスは次のように catalog/view/theme/default/template/product/category.tplなります。カスタム テーマの場合は、テーマの category.tpl を開きます。catalog/view/theme/your theme name/template/product/category.tpl

そして、単一の製品または複数の製品でサブカテゴリを表示したい場所にこのコードを配置します

<?php for ($i = 0; $i < count($subcategory);$i++) { ?>
  <h1>Sub Categories</h1>
<ul>
  <?php if (isset($subcategory[$i])) { ?>
  <li><a href="<?php echo $subcategory[$i]['href']; ?>"><?php echo $subcategory[$i]['name']; ?></a></li>
    <div class="product-list">
      <?php foreach ($subcategory[$i]['products'] as $product) { ?>
      <div>
        <?php if ($product['thumb']) { ?>
        <div class="image"><a href="<?php echo $product['href']; ?>"><img src="<?php echo $product['thumb']; ?>" title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
        <?php } ?>
        <div class="name"><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></div>
        <div class="description"><?php echo $product['description']; ?></div>
        <?php if ($product['price']) { ?>
        <div class="price">
          <?php if (!$product['special']) { ?>
          <?php echo $product['price']; ?>
          <?php } else { ?>
          <span class="price-old"><?php echo $product['price']; ?></span> <span class="price-new"><?php echo $product['special']; ?></span>
          <?php } ?>
          <?php if ($product['tax']) { ?>
          <br />
          <span class="price-tax"><?php echo $text_tax; ?> <?php echo $product['tax']; ?></span>
          <?php } ?>
        </div>
        <?php } ?>
        <?php if ($product['rating']) { ?>
        <div class="rating"><img src="catalog/view/theme/default/image/stars-<?php echo $product['rating']; ?>.png" alt="<?php echo $product['reviews']; ?>" /></div>
        <?php } ?>
        <div class="cart">
          <input type="button" value="<?php echo $button_cart; ?>" onclick="addToCart('<?php echo $product['product_id']; ?>');" class="button" />
        </div>
        <div class="wishlist"><a onclick="addToWishList('<?php echo $product['product_id']; ?>');"><?php echo $button_wishlist; ?></a></div>
        <div class="compare"><a onclick="addToCompare('<?php echo $product['product_id']; ?>');"><?php echo $button_compare; ?></a></div>
      </div>
      <?php } ?>
    </div>
  <?php } ?>
</ul>
<?php } ?>

それが完全に機能することを願っています

コードに満足できない場合は、同様の機能を持つこの拡張機能を購入できます

サブカテゴリで並べ替え

于 2013-08-02T20:18:42.420 に答える
1

すでにメイン カテゴリを知っているので、次のことができます。

1)

SELECT category_id FROM category WHERE parent_id = {A.category_id}

2)

上記のすべてのカテゴリを category_id でループします。

SELECT p.* FROM product p LEFT JOIN product_to_category ptc ON ptc.product_id = p.id WHERE ptc.category_id = category_id ORDER BY p.product_id ASC LIMIT 1

テストされたクエリではありません。必要に応じて変更してください。

于 2013-07-31T10:31:23.720 に答える