id категории в header.tpl

Тема в разделе "Общие вопросы", создана пользователем Anatoliy, 23 июн 2015.

  1. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    Добрый день.

    Версия oc 2.0.

    Подскажите как в header.tpl получить id категории?

    При обращении к $category_id получаем

    Undefined variable: category_id in /var/www/**/catalog/view/theme/my_theme/template/common/header.tpl on line 31
    Спасибо.
     
  2. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    вы не правильно обращаетесь, берется из массива categories, правильно будет так $category['category_id']
    но и этого недостаточно нужно в контроллере сначала задать controller\common\header.php
     
  3. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    не подскажите, что в контроллере прописать, для видимости массива?

    этого будет достаточно?
    Код:
            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);
    
     
    Последнее редактирование модератором: 3 июл 2015
  4. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    откуда вы это взяли?

    по идее в этой части кода нужно изменить
    Код:
    foreach ($categories as $category) {
                if ($category['top']) {
                    // Level 2
                    $children_data = array();
    
                    $children = $this->model_catalog_category->getCategories($category['category_id']);
    
                    foreach ($children as $child) {
                        $filter_data = array(
                            'filter_category_id'  => $child['category_id'],
                            'filter_sub_category' => true
                        );
    
                        $children_data[] = array(
                            'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                        );
                    }
    
                    // Level 1
                    $data['categories'][] = array(
                        'name'     => $category['name'],
                        'children' => $children_data,
                        'column'   => $category['column'] ? $category['column'] : 1,
                        'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
                    );
                }
            }

    вот так
    Код:
    $children_data[] = array(
                            'category_id' => $child['category_id'];
                            'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                        );
    и так
    Код:
    $data['categories'][] = array(
                        'category_id' => $category['category_id'];
                        'name'     => $category['name'],
                        'children' => $children_data,
                        'column'   => $category['column'] ? $category['column'] : 1,
                        'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
                    );
    ну и потом в header.tpl, вытягиваем
    Код:
    <?php foreach ($categories as $category) {
                    echo $category['category_id']; } ?>
     
    Последнее редактирование модератором: 3 июл 2015
  5. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    это кусок я взял из контроллера category.php

    уважаемый tsap из вашего сообщения не совсем понятно, что и куда прописать.
     
    Последнее редактирование модератором: 3 июл 2015
  6. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.434
    Симпатии:
    780
    добавить в header.php вставьте например перед // Menu
    PHP:
            if (isset($this->request->get['path'])) {
                
    $parts explode('_', (string)$this->request->get['path']);
                
    $data['category_id'] = (int)array_pop($parts);
            }   else {
                
    $data['category_id'] = '';
            }    
    P.S Пользуйтесь тегами code в сообщениях для кода.
     
    Последнее редактирование: 3 июл 2015
  7. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    это
    Код:
    $children_data[] = array(
                            'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                        );
    на это
    Код:
    $children_data[] = array(
                            'category_id' => $child['category_id'];
                            'name'  => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                            'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                        );
    это
    Код:
    $data['categories'][] = array(
                        'name'     => $category['name'],
                        'children' => $children_data,
                        'column'   => $category['column'] ? $category['column'] : 1,
                        'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
                    );
    на это
    Код:
    $data['categories'][] = array(
                        'category_id' => $category['category_id'];
                        'name'     => $category['name'],
                        'children' => $children_data,
                        'column'   => $category['column'] ? $category['column'] : 1,
                        'href'     => $this->url->link('product/category', 'path=' . $category['category_id'])
                    );
    так понятнее
     
  8. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    хорошо. только я его не нашёл.

    В вашем случае результат, тот же
    Notice: Undefined variable: category_id in /var/www..........

    да, спасибо.
     
    Последнее редактирование модератором: 3 июл 2015
  9. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.434
    Симпатии:
    780
    в смысле не нашли? что? Куда вставить? Вставьте например перед // Menu

    быть такого не может. Может у вас в папке system/modification есть одноименный модифицированный файл? Удалите его пока, а после внесение изменений обновите кеш модификатора.
     
    Последнее редактирование: 3 июл 2015
  10. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    неправильно вызвали
    Код:
    <?php foreach ($categories as $category) {
                    echo $category['category_id']; } ?>
    Romans, а что хранится в request->get['path']?
     
    Последнее редактирование модератором: 3 июл 2015
  11. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.434
    Симпатии:
    780
    изначально путь до категории в виде ГлавнаяКатегория_подкатегория_подкатегория_итд
     
  12. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    подскажите как сбросить кэш модификатора?
     
  13. tsap

    tsap Продвинутый пользователь

    Сообщения:
    230
    Симпатии:
    131
    Модули-Модификаторы в верхнем углу кнопка Обновить
     
  14. Anatoliy

    Anatoliy Новичок

    Сообщения:
    19
    Симпатии:
    0
    Благодарю, всё работает.
    Спасибо всем, за ответы.