Вывод всего списка подкатегорий в категориях

Тема в разделе "OpenCart", создана пользователем ingenerks, 7 янв 2015.

  1. ingenerks

    ingenerks

    Регистрация:
    25 окт 2012
    Сообщения:
    250
    Симпатии:
    73
    Хочу вывести список всех подкатегорий. Есть модуль, https://opencartforum.com/files/file/924-стена-категорий-в-категориях/ но не хочется ставить полноценное дополнение.
    Нужно когда находишся в категории, например компьютера, что бы вывелись все подкатегории этой категории.
    В контроллере category.php прописал
    $this->data['subcategories'] = array();
    $results = $this->model_catalog_category->getCategories($category_info['parent_id']);
    foreach ($results as $result) {
    $data = array(
    'filter_category_id' => $result['category_id'],
    'filter_sub_category' => true
    );
    $product_total = $this->model_catalog_product->getTotalProducts($data);
    $this->data['subcategories'][] = array(
    'name' => $result['name'] . ' (' . $product_total . ')',
    'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url)
    );
    }
    в tpl вынес
    <?php foreach ($subcategories as $category) { ?>
    <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></li>
    <?php } ?>
    но вываливаются все категории этого же уровня, а нужно все под категории родителя. Может кто то уже делал подобное?
     
  2. Дмитрич

    Дмитрич

    Регистрация:
    10 апр 2014
    Сообщения:
    191
    Симпатии:
    23
  3. ingenerks

    ingenerks

    Регистрация:
    25 окт 2012
    Сообщения:
    250
    Симпатии:
    73
    Мне не нужно выносить в модуле категории, а именно как в этом модуле https://opencartforum.com/files/file/924-стена-категорий-в-категориях/ это не для меню категорий, а именно для самих категорий на странице.

    Необходимо вывести список подкатегорий родительской категории.
    Например если мы находимся в категории Компьютера:
    Компьютера
    -Десктопы
    -Неттопы
    -Моноблоки
     
  4. Дмитрич

    Дмитрич

    Регистрация:
    10 апр 2014
    Сообщения:
    191
    Симпатии:
    23
    Я не знаю как Вам исправить тот модуль, потому предложил альтернативное решение. Там, вроде, при выводе в определённой категории, отображаются все её подкатегории.
    Вот описание:
    Это модуль является модификацией встроенного в OpenCart модуля категорий с той лишь разницей, что модуль предназначен для отображения подкатегорий отдельным независимым блоком. Если модуль будет установлен в категориях, то он будет отображать именно те подкатегории, которые относятся к данной родительской категории.

    Заходим в настройки модуля и указываем расположение модуля.

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

    Модуль имеет две версии, вторая версия имеет отличие от первой в том, что заголовок модуля будет не стандартным, например, «Категории», а будет принимать название той категории, которой принадлежат подкатегории.
     
  5. ingenerks

    ingenerks

    Регистрация:
    25 окт 2012
    Сообщения:
    250
    Симпатии:
    73
    Опять о том же, мы о разном говорим. Я все пересмотрел на офиц сайте опенкарт. Я уже и для примера скинул модуль. Я не хочу еще отдельно ставить дополнение. А нужно просто допилить категории, что бы выносилось вот так http://prntscr.com/5pqclk
     
  6. Grek

    Grek

    Регистрация:
    18 янв 2013
    Сообщения:
    172
    Симпатии:
    19
    Решил проблему. У вас не получается, потому что вы обращаетесь не к тому id категорий (к родительскому, а нужно к дочерним). Вот как я решил - прописал:
    category.php (контрол)
    Перед private function getStickers инициализируем функцию формирований подкатегорий:
    PHP:
    public function getSubcategories($category_id) {
                 
    $subcategories $this->model_catalog_category->getCategories($category_id);
                 for (
    $i 0$i count($subcategories); $i++) {
                     
    $subcategories[$i]['href'] = $this->url->link('product/category''path=' $this->request->get['path'] . '_' $subcategories[$i]['category_id']);     //Добавляем в массив подкатегории ссылку
                 
    }
                 return 
    $subcategories;
            }
    Добавляем 'subcategories'=>$this->getSubcategories($result['category_id'] в массив $this->data['categories'][], то есть:
    PHP:
    $this->data['categories'][] = array(
                        
    'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' $product_total ')' ''),
                        
    'count' => $product_total,
                         
    'subcategories'=>$this->getSubcategories($result['category_id']),      //Обращаемся к методу модели получения подкатегорий с id родительской категории
                        
    'href'  => $this->url->link('product/category''path=' $this->request->get['path'] . '_' $result['category_id'] . $url)
                    );
    В шаблоне category.tpl выводим:
    Код:
    <div class="box-product box-subcat">
                <ul class="row"><?php $i=0;?>
                    <?php foreach ($categories as $category) { $i++; ?>
                    <?php
                            if ($i%3==1) {
                                $a='first-in-line';
                            }
                            elseif ($i%3==0) {
                                $a='last-in-line';
                            }
                            else {
                                $a='';
                            }
                        ?>
                    <li class="cat-height  span2">
                        <?php if ($category['thumb']) { ?>
                        <div class="image"><a href="<?php echo $category['href']; ?>"><img src="<?php echo $category['thumb']; ?>" alt="<?php echo $category['name']; ?>" /></a></div>
                        <?php } ?>
                        <div class="name subcatname"><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></div>
                                            <ul>
                                                <?php foreach($category['subcategories'] as $subcategory) { ?>
                                                <li><a href="<?php echo $subcategory['href']; ?>"><?php echo $subcategory['name']; ?></a></li>
                                                <?php } ?>
                                            </ul>
                    </li>
                    <?php } ?>
                </ul>
            </div>

    И все, задача решена. Стоило покопаться несколько часов в коде, поиски решений по форумам и разных модулей/хаков ни к чему не привели.
     
  7. goshavis

    goshavis

    Регистрация:
    18 май 2015
    Сообщения:
    4
    Симпатии:
    0

    Извеняюсь, но я не совсем понял куда нужно вставлять последний блок? У меня ОпенКарт 2, подойдет ли данное решение?? Можно поподробней?
     
  8. Joni-Jo

    Joni-Jo

    Регистрация:
    4 апр 2016
    Сообщения:
    6
    Симпатии:
    0
    Судя по коду:
    Код:
    $this->data['categories']
    вместо $data['categories']
    Это для старой версии!

    Ищю что-то подобное, хотя не совсем понял что тут за код :Smile:
    Мне нужно что-бы в под категориях показывались соседние категории (или проще говоря подкатегории родителской категории - но нечего не могу найти для 2й версии :()
     
  9. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    Версия 15521
    Необходимо у субкатегорий вывести изображение
    В следующем коде изображения не выводятся
    Код:
    <ul>
     <?php foreach($category['subcategories'] as $subcategory) { ?>
    <li><a href="<?php echo $subcategory['href']; ?>"><?php echo $subcategory['name']; ?></a></li>
    <?php } ?>
    </ul>
    Сделал так

    Код:
    <ul>
      <?php foreach($category['subcategories'] as $subcategory) { ?>
     <li>
     <?php if ($subcategory['thumb']) { ?>
    <a href="<?php echo $subcategory['href']; ?>"><img src="<?php echo $subcategory['thumb']; ?>" alt="<?php echo $subcategory['name']; ?>" /></a>
     <?php } ?>
    <a href="<?php echo $subcategory['href']; ?>"><?php echo $subcategory['name']; ?></a>
     </li>
     <?php } ?>
     </ul>
    
    Изображения всё равно не выводятся.
    Помогите пожалуйста вывести изображения подкатегорий в подкатегориях
     
  10. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    А откуда им взяться то? Откройте контроллер и посмотрите каким образом получается изображение для текущей категории и сделайте по аналогии для подкатегорий.
     
    Allaur нравится это.
  11. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    В php не силён, сильно не пинайте :Smile:
    Так прописал.

    PHP:
    $this->data['categories'][] = array( 'name' => $result['name'] . ($this->config->get('config_product_count') ? ' (' $product_total ')' ''),
    'href' => $this->url->link('product/category''path=' $this->request->get['path'] . '_' $result['category_id'] . $url), 'thumb' => $image,
    'subcategories'=>$this->getSubcategories($result['category_id']), //Обращаемся к методу модели получения подкатегорий с id родительской категории
    'thumb' => $this->model_tool_image->resize(($result['image']=='' '' $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
    'thumb' => $this->model_tool_image->resize(($result['image']=='' '' $result['image']), $this->config->get('config_image_subcategory_width'),$this->config->get('config_image_subcategory_height')) );
     
    Lasted edited by : 29 апр 2017
  12. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    1. У вас в одном массиве не может быть 3 индекса с одинаковым названием 'thumb'.
    2. Почему их вообще 3? Вам ведь нужно одно изображение.
    3. Что такое вообще 'subcategories'? Разве массив $this->data['categories'] - это не массив подкатегорий текущей категории?
    4. Если вы хотите вывести изображения из тех данных, которые возвращает $this->getSubcategories(), то нужно этот результат сохранить отдельно и подставлять оттуда.


    Но главный вопрос: что вы вообще пытаетесь сделать? Если вывести подкатегории текущей категории с изображениями, то что вообще делает метод $this->getSubcategories()? В ОК по дефолту уже есть код вывода подкатегорий текущей категории. То есть, никакие дополнительные методы не нужны.
     
    Allaur нравится это.
  13. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    Вот я тут наскринил что я хочу.


    Получается надо вывести изображеня не в подкатегориях, а в подкатегориях подкатегорий
    В подкатегориях выводятся по умолчанию. Это работает.
    1 - Оставил один индекс

    Код:
        'thumb' => $this->model_tool_image->resize(($result['image']=='' ? '' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
                    
    2 - Потому что я дебил ещё )))
    3 - Где то в дебрях интернета нашёл таким образом вывод подкатегории подкатегорий. Способ оказался рабочим и подкатегории выводятся в подкатегориях на странице главной категории, это видно на скрине приведённом под спойлером.
    4 - Вот наверно это мне надо, но мозгоф маловато ....

    Главный вопрос
    Хочу вывести изображения в подкатегориях второго уровня на странице главной категории, третий уровень получается
     
  14. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Покажите, что внутри $this->getSubcategories().
     
    Allaur нравится это.
  15. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    файл /catalog/controller/product/category.php
     
  16. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Я на это смотреть не буду.
    Выложите с нормальной разметкой и оберните в тег кода. Это читать невозможно, просто сплошное полотно однородного текста.
     
    Allaur нравится это.
  17. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    Протупил малось, спать уже хотелось ))
    извиняюсь
    Я думал под спойлером нормально будет отображаться ..
    Код:
    <?php
    class ControllerProductCategory extends Controller {
    public function getSubcategories($category_id) {
                 $subcategories = $this->model_catalog_category->getCategories($category_id);
                 for ($i = 0; $i < count($subcategories); $i++) {
                     $subcategories[$i]['href'] = $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $subcategories[$i]['category_id']);     //Добавляем в массив подкатегории ссылку
                 }
                 return $subcategories;
            }
        public function index() {
            $this->language->load('product/category');
           
            $this->load->model('catalog/category');
           
            $this->load->model('catalog/product');
           
            $this->load->model('tool/image');
           
            if (isset($this->request->get['filter'])) {
                $filter = $this->request->get['filter'];
            } else {
                $filter = '';
            }
    
               
            if (isset($this->request->get['sort'])) {
                $sort = $this->request->get['sort'];
            } else {
                $sort = 'p.sort_order';
            }
    
            if (isset($this->request->get['order'])) {
                $order = $this->request->get['order'];
            } else {
                $order = 'ASC';
            }
           
            if (isset($this->request->get['page'])) {
                $page = $this->request->get['page'];
            } else {
                $page = 1;
            }  
                               
            if (isset($this->request->get['limit'])) {
                $limit = $this->request->get['limit'];
            } else {
                $limit = $this->config->get('config_catalog_limit');
            }
    
                       
            $this->data['breadcrumbs'] = array();
    
               $this->data['breadcrumbs'][] = array(
                   'text'      => $this->language->get('text_home'),
                'href'      => $this->url->link('common/home'),
                   'separator' => false
               );  
               
            if (isset($this->request->get['path'])) {
                $url = '';
               
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }  
               
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
    
                   
                $path = '';
           
                $parts = explode('_', (string)$this->request->get['path']);
           
                $category_id = (int)array_pop($parts);
    
                foreach ($parts as $path_id) {
                    if (!$path) {
                        $path = (int)$path_id;
                    } else {
                        $path .= '_' . (int)$path_id;
                    }
                                       
                    $category_info = $this->model_catalog_category->getCategory($path_id);
                   
                    if ($category_info) {
                           $this->data['breadcrumbs'][] = array(
                               'text'      => $category_info['name'],
                            'href'      => $this->url->link('product/category', 'path=' . $path . $url),
                            'separator' => $this->language->get('text_separator')
                        );
                    }
    
                }      
           
               
            } else {
                $category_id = 0;
            }
    
           
            $category_info = $this->model_catalog_category->getCategory($category_id);
       
            if ($category_info) {
                if ($category_info['seo_title']) {
                      $this->document->setTitle($category_info['seo_title']);
                } else {
                      $this->document->setTitle($category_info['name']);
                }
    
                $this->document->setDescription($category_info['meta_description']);
                $this->document->setKeywords($category_info['meta_keyword']);
                $this->document->addScript('catalog/view/javascript/jquery/jquery.total-storage.min.js');
               
                if ($category_info['seo_h1']) {
                    $this->data['heading_title'] = $category_info['seo_h1'];
                } else {
                    $this->data['heading_title'] = $category_info['name'];
                }
               
                $this->data['text_refine'] = $this->language->get('text_refine');
                $this->data['text_empty'] = $this->language->get('text_empty');          
                $this->data['text_quantity'] = $this->language->get('text_quantity');
                $this->data['text_manufacturer'] = $this->language->get('text_manufacturer');
                $this->data['text_model'] = $this->language->get('text_model');
                $this->data['text_price'] = $this->language->get('text_price');
                $this->data['text_tax'] = $this->language->get('text_tax');
                $this->data['text_points'] = $this->language->get('text_points');
                $this->data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
                $this->data['text_display'] = $this->language->get('text_display');
                $this->data['text_list'] = $this->language->get('text_list');
                $this->data['text_grid'] = $this->language->get('text_grid');
                $this->data['text_sort'] = $this->language->get('text_sort');
                $this->data['text_limit'] = $this->language->get('text_limit');
                       
                $this->data['button_cart'] = $this->language->get('button_cart');
                $this->data['button_wishlist'] = $this->language->get('button_wishlist');
                $this->data['button_compare'] = $this->language->get('button_compare');
                $this->data['button_continue'] = $this->language->get('button_continue');
               
                // Set the last category breadcrumb      
                $url = '';
               
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }  
               
                if (isset($this->request->get['page'])) {
                    $url .= '&page=' . $this->request->get['page'];
                }
               
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
                                       
                $this->data['breadcrumbs'][] = array(
                    'text'      => $category_info['name'],
                    'href'      => $this->url->link('product/category', 'path=' . $this->request->get['path']),
                    'separator' => $this->language->get('text_separator')
                );
                                   
                $this->data['catblock'] = $category_info['category_id'];
               
                if ($category_info['image']) {
                    $this->data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
                    $this->document->setOgImage($this->data['thumb']);
                } else {
                    $this->data['thumb'] = '';
                }
                                       
                $this->data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8');
                $this->data['compare'] = $this->url->link('product/compare');
               
                $url = '';
               
                if (isset($this->request->get['filter'])) {
                    $url .= '&filter=' . $this->request->get['filter'];
                }  
    
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }  
               
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
                                   
                $this->data['categories'] = array();
               
                $results = $this->model_catalog_category->getCategories($category_id);
               
                foreach ($results as $result) {
                    $data = array(
                        'filter_category_id'  => $result['category_id'],
                        'filter_sub_category' => true
                    );
                   
                    $product_total = $this->model_catalog_product->getTotalProducts($data);  
                    /* Добавление кода */
                     $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height'));
    /* Добавление кода конец*/
    
                    $this->data['categories'][] = array(
                        'name'  => $result['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''),
                        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url),/*  'thumb' => $image, */
                        'subcategories'=>$this->getSubcategories($result['category_id']),      //Обращаемся к методу модели получения подкатегорий с id родительской категории
                        'thumb' => $this->model_tool_image->resize(($result['image']=='' ? '' : $result['image']), $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')),
                    );
                }
               
                $this->data['products'] = array();
               
                $data = array(
                    'filter_category_id' => $category_id,
                    'filter_filter'      => $filter,
                    'sort'               => $sort,
                    'order'              => $order,
                    'start'              => ($page - 1) * $limit,
                    'limit'              => $limit
                );
                       
                $results = $this->model_catalog_product->getProducts($data);
                //Вызов метода getFoundProducts должен проводится сразу же после getProducts
                //только тогда он выдает правильное значения количества товаров
                $product_total = $this->model_catalog_product->getFoundProducts();
               
                foreach ($results as $result) {
                    if ($result['image']) {
                        $image = $this->model_tool_image->resize($result['image'], $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    } else {
                        $image = $this->model_tool_image->resize('no_image.jpg', $this->config->get('config_image_product_width'), $this->config->get('config_image_product_height'));
                    }
                   
                    if (($this->config->get('config_customer_price') && $this->customer->isLogged()) || !$this->config->get('config_customer_price')) {
                        $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')));
                    } else {
                        $price = false;
                    }
                   
                    if ((float)$result['special']) {
                        $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')));
                    } else {
                        $special = false;
                    }  
                   
                    if ($this->config->get('config_tax')) {
                        $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price']);
                    } else {
                        $tax = false;
                    }              
                   
                    if ($this->config->get('config_review_status')) {
                        $rating = (int)$result['rating'];
                    } else {
                        $rating = false;
                    }
                                   
                    $this->data['products'][] = array(
                        'product_id'  => $result['product_id'],
                        'thumb'       => $image,
                        'name'        => $result['name'],
                        'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, 300) . '..',
                        'price'       => $price,
                        'special'     => $special,
                        'tax'         => $tax,
                        'rating'      => $result['rating'],
                        'reviews'     => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
                        'href'        => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url)
                    );
                }
               
                $url = '';
               
                if (isset($this->request->get['filter'])) {
                    $url .= '&filter=' . $this->request->get['filter'];
                }
                   
       
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
                                           
                $this->data['sorts'] = array();
               
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_default'),
                    'value' => 'p.sort_order-ASC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url)
                );
               
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_name_asc'),
                    'value' => 'pd.name-ASC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url)
                );
    
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_name_desc'),
                    'value' => 'pd.name-DESC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url)
                );
    
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_price_asc'),
                    'value' => 'p.price-ASC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url)
                );
    
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_price_desc'),
                    'value' => 'p.price-DESC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url)
                );
               
                if ($this->config->get('config_review_status')) {
                    $this->data['sorts'][] = array(
                        'text'  => $this->language->get('text_rating_desc'),
                        'value' => 'rating-DESC',
                        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url)
                    );
                   
                    $this->data['sorts'][] = array(
                        'text'  => $this->language->get('text_rating_asc'),
                        'value' => 'rating-ASC',
                        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url)
                    );
                }
               
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_model_asc'),
                    'value' => 'p.model-ASC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url)
                );
    
                $this->data['sorts'][] = array(
                    'text'  => $this->language->get('text_model_desc'),
                    'value' => 'p.model-DESC',
                    'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url)
                );
               
                $url = '';
               
                if (isset($this->request->get['filter'])) {
                    $url .= '&filter=' . $this->request->get['filter'];
                }
    
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }
               
                $this->data['limits'] = array();
               
                $limits = array_unique(array($this->config->get('config_catalog_limit'), 25, 50, 75, 100));
               
                sort($limits);
       
                foreach($limits as $value){
                    $this->data['limits'][] = array(
                        'text'  => $value,
                        'value' => $value,
                        'href'  => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value)
                    );
                }
               
                $url = '';
               
    
                if (isset($this->request->get['filter'])) {
                    $url .= '&filter=' . $this->request->get['filter'];
                }
    
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }
       
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
                       
                $pagination = new Pagination();
                $pagination->total = $product_total;
                $pagination->page = $page;
                $pagination->limit = $limit;
                $pagination->text = $this->language->get('text_pagination');
                $pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}');
           
                $this->data['pagination'] = $pagination->render();
           
                $this->data['sort'] = $sort;
                $this->data['order'] = $order;
                $this->data['limit'] = $limit;
           
                $this->data['continue'] = $this->url->link('common/home');
    
                if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/category.tpl')) {
                    $this->template = $this->config->get('config_template') . '/template/product/category.tpl';
                } else {
                    $this->template = 'default/template/product/category.tpl';
                }
               
                $this->children = array(
                    'common/column_left',
                    'common/column_right',
                    'common/content_top',
                    'common/content_bottom',
                    'common/footer',
                    'common/header'
                );
                   
                $this->response->setOutput($this->render());                                      
            } else {
                $url = '';
               
                if (isset($this->request->get['path'])) {
                    $url .= '&path=' . $this->request->get['path'];
                }
               
                if (isset($this->request->get['filter'])) {
                    $url .= '&filter=' . $this->request->get['filter'];
                }
                   
                                       
                if (isset($this->request->get['sort'])) {
                    $url .= '&sort=' . $this->request->get['sort'];
                }  
    
                if (isset($this->request->get['order'])) {
                    $url .= '&order=' . $this->request->get['order'];
                }
                   
                if (isset($this->request->get['page'])) {
                    $url .= '&page=' . $this->request->get['page'];
                }
                           
                if (isset($this->request->get['limit'])) {
                    $url .= '&limit=' . $this->request->get['limit'];
                }
                           
                $this->data['breadcrumbs'][] = array(
                    'text'      => $this->language->get('text_error'),
                    'href'      => $this->url->link('product/category', $url),
                    'separator' => $this->language->get('text_separator')
                );
                   
                $this->document->setTitle($this->language->get('text_error'));
    
                  $this->data['heading_title'] = $this->language->get('text_error');
    
                  $this->data['text_error'] = $this->language->get('text_error');
    
                  $this->data['button_continue'] = $this->language->get('button_continue');
    
                  $this->data['continue'] = $this->url->link('common/home');
    
                if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/error/not_found.tpl')) {
                    $this->template = $this->config->get('config_template') . '/template/error/not_found.tpl';
                } else {
                    $this->template = 'default/template/error/not_found.tpl';
                }
               
                $this->children = array(
                    'common/column_left',
                    'common/column_right',
                    'common/content_top',
                    'common/content_bottom',
                    'common/footer',
                    'common/header'
                );
                       
                $this->response->setOutput($this->render());
            }
          }
    }
    ?>
    
     
  18. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    3.198
    Симпатии:
    1.306
    Где вы откопали этот гавнокод? Автору стоит узнать о существовании foreach (и не только).

    Вот как должен выглядеть этот метод:
    PHP:
    public function getSubcategories($category_id) {
         
    $result $this->model_catalog_category->getCategories($category_id);
         
    $subcategories = [];
         if (!empty(
    $result)){
             foreach (
    $result as $category) {
                
    $subcategories[] = [
                    
    'name'  => $category['name'],
                    
    'href' => $this->url->link('product/category''path=' $this->request->get['path'] . '_' $category['category_id']),   
                    
    'thumb' => !empty($category['image']) ? $this->model_tool_image->resize($category['image'], $this->config->get('config_image_category_width'), $this->config->get('config_image_category_height')) : ''
                
    ];
             }
         }
        
         return 
    $subcategories;
    }
    После этого в шаблоне всё выведется.
     
    Allaur нравится это.
  19. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    В каком дерьме я только не копался ))
    Ваш код отлично сработал.
    Огромное спасибо!
    Как я могу Вас отблагодарить?
     
  20. Allaur

    Allaur

    Регистрация:
    5 дек 2013
    Сообщения:
    31
    Симпатии:
    1
    перенёс на главный домен и получил вот это
    Parse error: syntax error, unexpected '[' in /путь/catalog/controller/product/category.php on line 5
    Код:
    строка-5   $subcategories = [];
    На демо домене работает всё отлично
    Версия php тут случайно не рулит?