Я использую opencart 2.0.1.1, здесь я хочу получить категории в виде вкладки o, чтобы нам не нужно было открывать новую ссылку каждый раз, чтобы увидеть категории, связанные с продуктами, как показано на рисунке ниже, всем, пожалуйста, помогите
я добавил код
Каталог / контроллер / модуль / product_category.php
foreach ($categories as $category) {
//var_dump($token);die;
$products = $this->model_catalog_product->getProducts(array('filter_category_id' => $category['category'], 'start' => 0, 'limit' => $setting['limit']));
foreach($products as $i => $product_info)
{
if ($product_info) {
if ($product_info['image']) {
$image = $this->model_tool_image->resize($product_info['image'], $setting['width'], $setting['height']);
} else {
$image = $this->model_tool_image->resize('placeholder.png', $setting['width'], $setting['height']);
}
if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
$price = $this->currency->format($this->tax->calculate($product_info['price'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$price = false;
}
if ((float)$product_info['special']) {
$special = $this->currency->format($this->tax->calculate($product_info['special'], $product_info['tax_class_id'], $this->config->get('config_tax')));
} else {
$special = false;
}
if ($this->config->get('config_tax')) {
$tax = $this->currency->format((float)$product_info['special'] ? $product_info['special'] : $product_info['price']);
} else {
$tax = false;
}
if ($this->config->get('config_review_status')) {
$rating = $product_info['rating'];
} else {
$rating = false;
}
$desc = html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8');
$quick_descr_start = strpos($desc,'</iframe>')+9;
if ($quick_descr_start > 9){
$quick_descr = substr($desc, $quick_descr_start);
}else{
$quick_descr = $desc;
}
$data['products'][$k][] = array(
'title' => $category['name'],
'product_id' => $product_info['product_id'],
'thumb' => $image,
'name' => $product_info['name'],
'manufacturer' => $product_info['manufacturer'],
'description' => utf8_substr(strip_tags(html_entity_decode($product_info['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get('config_product_description_length')) . '..',
'price' => $price,
'special' => $special,
'tax' => $tax,
'rating' => $rating,
'author' => $product_info['manufacturer'],
'description1' => $quick_descr,
'model' => $product_info['model'],
'allow' => $product_info['minimum'],
'href' => $this->url->link('product/product', 'product_id=' . $product_info['product_id']) );
}
}
$k++;
}
и просмотрите / theme / * / template / module / product_category.tpl
<?php foreach ($products as $k => $product) { ?>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<?php if($product[$k]){ ?>
<li class="active"><a href="#tab-<?php echo $product[$k]['title']; ?>" role="tab" data-toggle="tab"><?php echo $product[$k]['title']; ?></a></li>
<?php } ?>
<?php if($product[$k+1]){ ?>
<li><a href="#tab-<?php echo $product[$k+1]['title']; ?>" role="tab" data-toggle="tab"><?php echo $product[$k+1]['title']; ?></a></li>
<?php } ?>
</ul>
<h3><?php echo $product[$k]['title']; ?></h3>
<div class="row product-layout">
<div role="tabpanel" class="tab-pane active" id="tab-$product-<?php echo $module; ?>">
<div class="box clearfix">
<?php $t=0; foreach ($product as $produk) { $t++ ?>
<div class="product-layout col-lg-3 col-md-3 col-sm-3 col-xs-12">
<div class="product-thumb transition">
<div class="image">
<a class="lazy" style="padding-bottom: <?php echo (200/200*100); ?>%"href="<?php echo $produk['href']; ?>">
<img alt="<?php echo $produk['name']; ?>"title="<?php echo $produk['name']; ?>"class="img-responsive"data-src="<?php echo $produk['thumb']; ?>"src="#"/>
</a>
</div>
<div class="caption">
<div class="name">
<a href="<?php echo $produk['href']; ?>" ><?php echo $produk['name']; ?>
</a></div>
<!--<div class="description"><?php echo $produk['description']; ?></div>-->
<?php if ($produk['rating']) { ?>
<div class="rating">
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($produk['rating'] < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star-o fa-stack-2x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i class="fa fa-star-o fa-stack-2x"></i></span>
<?php } ?>
<?php } ?>
</div>
<?php } ?>
<?php if ($produk['price']) { ?>
<div class="price">
<?php if (!$produk['special']) { ?>
<?php echo $produk['price']; ?>
<?php } else { ?>
<span class="price-new"><?php echo $produk['special']; ?></span> <span class="price-old"><?php echo $produk['price']; ?></span>
<?php } ?>
<?php if ($produk['tax']) { ?>
<span class="price-tax"><?php echo $text_tax; ?> <?php echo $produk['tax']; ?></span>
<?php } ?>
</div>
<?php } ?>
</br>
<button class="product-btn-add" type="button" onclick="cart.minus('<?php echo $produk['product_id']; ?>');pq_minus( $(this).parent() );">
<span class="hidden-sm">-</span>
</button>
<button class="product-btn-add" type="button" onclick="cart.add('<?php echo $produk['product_id']; ?>');pq_plus( $(this).parent() ); ">
<span class="hidden-sm">+</span>
</button>
<div class="rating">
<?php for ($i = 1; $i <= 5; $i++) { ?>
<?php if ($produk['rating'] < $i) { ?>
<span class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i></span>
<?php } else { ?>
<span class="fa fa-stack"><i class="fa fa-star active fa-stack-2x"></i></span>
<?php } ?>
<?php } ?>
</div>
</div>
</div>
</div>
<?php } ?>
</div>
</div>
</div>
<?php } ?>
Я добавил две категории, чтобы получить как вкладку, но она показывает мне одну и ту же вкладку дважды подряд.
Я недавно сделал этот сценарий в моем проекте, все что вам нужно, чтобы сделать 3 массива в контроллере product_category для 3 различных категорий
$data['cat1'] = array();
$data['cat2'] = array();
$data['cat3'] = array();
Вам нужно позвонить добавить это 3 раза в вашем контроллере product_category, просто меняйте ID категории каждый раз, когда я делаю это только один раз
$cad_id = //category id for which you want to get products.
$filter_current_data = array(
'filter_filter' => $i,
'start' => 0,
'limit' => 20,
'filter_category_id' => $cat_id
);
$productss = $this->model_catalog_product->getProducts($filter_current_data);
$data['cat1'] = $productss;
Теперь у вас есть 3 массива продуктов разных категорий, просто используйте их на вкладках .tpl файла
Других решений пока нет …