rabsanek

Вывод категорий в определенном месте в header.tpl

Рекомендуемые сообщения

rabsanek    0

Доброго времени суток, столкнулся с проблемой OpenCart Version 2.3.0.2

При адаптивном дизайне сайта на opencart при разрешении меньше 768 категории скрываются, чтобы они отобразились необходимо убрать hidden-xs в этой строчке:

<aside id="column-left" class="col-sm-3 hidden-xs">

И все категории отображаются на устройствах меньше 768 разрешением

Но если много категорий, то получается очень длинная колбаса

Поэтому решил создать дополнительную кнопку , такую же как для сворачивания главного меню, при нажатии на которую у нас во всплывающем окне отображаются Главная Стастьи и т.д, только для категорий (см. фото)

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

В header.tpl создал кнопку и хотелось бы чтобы при ее нажатии выскакивало меню с категориями.

Пробовал сделать так , но ничего не вышло

Добавил кнопку в header.tpl ,вставил содержимое файла category.tpl, который формирует list-group, но ничего не происходит, кнопка раскрывается, но там пусто
 

<div class="navbar-header"><span class="toggle-top-text hidden-lg hidden-md hidden-sm"><?php echo $text_category; ?>:</span>
  <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex2-collapse"><i class="fa fa- bars"></i></button>
</div>

<div class="collapse navbar-collapse2 navbar-ex2-collapse ">
  <div class="list-group">
    <?php foreach ($categories as $category) { ?>
    <?php if ($category['category_id'] == $category_id) { ?>
    <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
    <?php if ($category['children']) { ?>
    <?php foreach ($category['children'] as $child) { ?>
    <?php if ($child['category_id'] == $child_id) { ?>
    <a href="<?php echo $child['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
    <?php } else { ?>
    <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
    <?php } ?>
    <?php } ?>
    <?php } ?>
    <?php } else { ?>
    <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
    <?php } ?>
    <?php } ?>
  </div>


Если вставляю 
 

<div class="list-group">
  <a href="//localhost:3000/apple-iphone-6s" class="list-group-item">Apple iPhone 6s</a>
  <a href="//localhost:3000/apple-iphone-6s-plus" class="list-group-item">Apple iPhone 6s Plus</a>
  <a href="//localhost:3000/apple-iphone-6" class="list-group-item">Apple iPhone 6</a>
  <a href="//localhost:3000/apple-iphone-6-plus" class="list-group-item">Apple iPhone 6 Plus</a>
  <a href="//localhost:3000/apple-iphone-5s" class="list-group-item">Apple iPhone 5s</a>
  <a href="//localhost:3000/apple-watch" class="list-group-item">Apple Watch</a>
  <a href="//localhost:3000/skidki" class="list-group-item">Скидки</a>
</div>


То при нажатии на кнопку отображается list-group как я и хочу, но так не правильно, потому что при добавлении или редактировании категорий через админку ничего не измениться
 
Что нужно поправить в этом куске кода чтобы он вывел категории в header.tpl при нажатии на кнопку? Ну или все проще можетя не то что нужно вставляю и не правильно вызываю list-group
 

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <?php if ($category['category_id'] == $category_id) { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
  <?php if ($category['children']) { ?>
  <?php foreach ($category['children'] as $child) { ?>
  <?php if ($child['category_id'] == $child_id) { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
  <?php } else { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } else { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
  <?php } ?>
  <?php } ?>
</div>


Принт прилагаю то что я имею ввиду

Ошибок не выдает, но если убрать строчку

 <?php foreach ($categories as $category) { ?>

 

То выдает ошибки

Notice: Undefined variable: category in E:\OpenServer\domains\opencart.loc\catalog\view\theme\apple\template\common\header.tpl on line 119Notice: Undefined variable: category_id in E:\OpenServer\domains\opencart.loc\catalog\view\theme\apple\template\common\header.tpl on line 119 Notice: Undefined variable: category in E:\OpenServer\domains\opencart.loc\catalog\view\theme\apple\template\common\header.tpl on line 120 Notice: Undefined variable: category in E:\OpenServer\domains\opencart.loc\catalog\view\theme\apple\template\common\header.tpl on line 121

Я так понимаю надо создать модификатор чтобы эти переменные появились в header.tpl

Модификатор создаю, бросаю туда все переменные из category.php, но скорее всего что то не так делаю потомучто появляется еще куча ошибок

 Это то что я хочу добиться, пока получилось только вставкой   <div class="list-group">
 

Скрытый текст

scr.jpg.ff6102aa97778ed920d36f71263db04e.jpg

Помогите советом, мучаюсь уже вторые сутки, так ни к чему и не пришел

Пните в нужном направлении пожалуйста.

Это отображается при нажатии верхнего значка

Скрытый текст

scr2.jpg

 

Изменено пользователем rabsanek

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dexteron    15
Цитата

Модификатор создаю, бросаю туда все переменные из category.php

У вас шаблон какой?

Попробуйте вывести массив категорий где-то в шапке:

<?php echo "<pre>"; print_r($categories); echo "</pre>"; ?>

И посмотрите что там. Какая структура.

 

P.S. Когда выкладываете сюда код оформляйте его в тег "код" + "скрытый текст" (если кода много), так читать легче. Картинки желательно тоже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
rabsanek    0

Шаблон стандартный

Массив вывел

 

Выдал

Array ( )

Тему отредактировал, буду иметь ввиду

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dexteron    15

Ок, значит массив категорий у вас пуст. Странно.

/catalog/controller/common/header.php 
откройте его и попытайтесь найти там место где по идее формируется массив категорий. В стандартном opencart 2.3 должно быть примерно такое:

Скрытый текст

 


// Menu
$this->load->model('catalog/category');

$this->load->model('catalog/product');

$data['categories'] = array();

$categories = $this->model_catalog_category->getCategories(0);

foreach ($categories as $category) {

 

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
rabsanek    0

Да есть там такой массив

// Menu
$this->load->model('catalog/category');

$this->load->model('catalog/product');

$data['categories'] = array();

$categories = $this->model_catalog_category->getCategories(0);

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'])
);
}
}

 

Изменено пользователем rabsanek

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
dexteron    15

Наверное, у вас в админке не назначены товары к категориям. То есть категории есть, но товаров внутри нет. Поэтому они и не выводятся. 

В настройках категорий поставьте галочку напротив пункта "Главное меню"

 

Либо проблема где-то глубже.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
rabsanek    0

 

1 час назад, dexteron сказал:

Наверное, у вас в админке не назначены товары к категориям. То есть категории есть, но товаров внутри нет. Поэтому они и не выводятся. 

В настройках категорий поставьте галочку напротив пункта "Главное меню"

 

Либо проблема где-то глубже.

Немного не понятно можете принт выложить в каких настройках? Не нашел у себя этого

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
rabsanek    0

Вопрос решен, спасибо dexteron , действительно галочка в настройках категорий была выходом из ситуации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу