【问题标题】:How we can show one product from each subcategory in product page我们如何在产品页面的每个子类别中显示一个产品
【发布时间】:2013-07-30 08:52:34
【问题描述】:

我正在使用 Opencart 1.5.5.1,你们中的任何人都知道

我们如何在类别页面上显示每个子类别中的一个产品,以及当用户单击类别中列出的产品时页面它将转到显示所有产品的关注子类别页面

例如:
假设我有一个类别名称 A ,有子类别 AA、AB、AC, AD, AE
AA 有 5 个产品名称 AA1, AA2, AA3, AA4 ,AA5
AB 有 4 个产品名称 AB1、AB2、AB3、AB4
AC有3个产品名称AC1, AC2, AC3
AD 有 4 个产品名称 AD1, AD2、AD3、AD4
AE有3个产品名称AE1、AE2强>, AE3

当我加载我的类别页面时,它应该显示每个子类别中的一个产品,这可能吗?如果可以,怎么办

【问题讨论】:

  • 两天后在没有任何代码行的情况下放置赏金看起来适得其反。我的意思是这是你的声誉,但是,首先我建议你联系 Opencart 支持(因为这听起来像是一个支持请求),然后我会等待他们回信给你,然后如果你有问题去做他们可能会建议你在这里问(或者更好:在一个关于 opencart 的论坛中,Stackoverflow 是关于一般编程的)。

标签: php e-commerce opencart


【解决方案1】:

这是下面的伪代码,只是让您知道不知道您正在使用的 opencart 版本,因此只需通过以下代码显示每个子类别中的一个产品

在您的项目目录中打开catelog/controller/product/category.php 并在index() 函数中您将获得类别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 } ?>

希望一切顺利

如果您对代码不满意,那么您可以购买此扩展程序 做类似的工作

Sort by sub category

【讨论】:

  • @down 选民长大并表现出一些尊重并添加您的 cmets 您在赏金答案中看到的问题
【解决方案2】:

由于您已经知道主要类别,您可以:

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

它没有经过测试的查询。根据您的需要修改它们。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多