Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


rabsanek

Recommended Posts

Доброго времени суток, столкнулся с проблемой 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
Надіслати
Поділитися на інших сайтах


Цитата

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

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

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

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

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

 

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

Надіслати
Поділитися на інших сайтах

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

/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) {

 

 

 

 

Надіслати
Поділитися на інших сайтах

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

// 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
Надіслати
Поділитися на інших сайтах


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

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

 

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

Надіслати
Поділитися на інших сайтах

 

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

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

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

 

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

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.