Получить категории как вкладку в opencart

Я использую opencart 2.0.1.1, здесь я хочу получить категории в виде вкладки, чтобы нам не нужно было открывать новую ссылку каждый раз, чтобы увидеть товары, связанные с категориями, как показано на изображении ниже, кто-нибудь, пожалуйста, помогите введите описание изображения  здесь я добавил код Catalog/controller/module/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++;
    }

и просмотр/тема/*/шаблон/модуль/продукт_категория.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 } ?>

я добавил две категории, чтобы получить вкладку, но она показывает мне одну и ту же вкладку дважды подряд.


person Ankit    schedule 04.12.2015    source источник


Ответы (1)


Недавно я сделал этот сценарий в своем проекте, и все, что вам нужно, это сделать 3 массива в контроллере product_category для 3 разных категорий.

    $data['cat1'] = array();
    $data['cat2'] = array();
    $data['cat3'] = array();

вам нужно вызвать add это 3 раза в вашем контроллере product_category, просто меняйте идентификатор категории для этого каждый раз, когда я делаю это только один раз

$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

person OBAID    schedule 19.01.2016