我正在使用Opencart 1.5.5.1,任何人都知道
我们如何在类别页面上显示每个子类别中的一个产品,当用户点击类别页面上列出的引导时,它将转到显示所有产品的关注子类别页面
对于Ex:
假设我有一个类别名称 A ,子类别 AA , AB , AC < / strong>, 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
当我加载我的类别页面时,它应显示每个子类别中的一个产品,这可能吗?如果是的话,怎么做呢
答案 0 :(得分:7)
这是下面的伪代码,只是让您知道您不知道正在使用的 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
,如果是自定义主题,则打开主题catalog/view/theme/your theme name/template/product/category.tpl
的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 } ?>
希望它完美无缺
如果您对代码不满意,那么您可以购买此扩展程序 做类似的工作
答案 1 :(得分: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
这不是经过测试的查询。根据您的需要修改它们。