xonar Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 (змінено) Доброго вечера всем. На сайте есть меню и у каждой категории есть подкатегории. Но, дело в том, что в каждой подкатегории дублируются категории которые не принадлежат этой категории. Код прилагаю. Попытался написать проверку, но не выходит. Вот сайт, если непонятно описал проблему. Наведите на первую категорию, запомните её подкатегории и затем у второй категории будут эти же подкатегории + новые. https://vsemsnasti.ru/ <button type="button" class="cats-btn"> <svg class="icon-sprite svg-icon"> <use xlink:href="catalog/view/theme/vsemsnasti/img/symbol_sprite.svg#icon-menu"></use> </svg> </button> <?php foreach ($categories as $category) { ?> <div class="sidebar-item"> <h3><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a></h3> <?php if ($category['children']) { ?> <ul class="level1"> <?php foreach ($category['children'] as $child) { ?> <li> <a href="<?php echo $child['href']; ?>"> <span class="a-txt"><?php echo $child['name']; ?></span> <span class="svg-wrap v1"> <svg class="icon-sprite svg-icon icon-arr_right"> <use xlink:href="catalog/view/theme/vsemsnasti/img/symbol_sprite.svg#icon-arr_right"></use> </svg> </span> </a> <span class="svg-wrap v2"> <svg class="icon-sprite svg-icon icon-arr_right"> <use xlink:href="catalog/view/theme/vsemsnasti/img/symbol_sprite.svg#icon-arr_right"></use> </svg> </span> <?php if ($child['children']) { ?> <div class="ul-wrap"> <ul class="level2"> <?php foreach ($child['children'] as $child_lv2) { ?> <li><a href="<?php echo $child_lv2['href']; ?>"><?php echo $child_lv2['name']; ?></a></li> <?php } ?> </ul> </div> <?php } ?> </li> <?php } ?> </ul> <?php } ?> </div> <?php } ?> Спасибо за ранее. Змінено 16 березня 2020 користувачем xonar Надіслати Поділитися на інших сайтах More sharing options...
fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 тут вроде все правильно. нужно смотреть как формируется массив категорий в контроллере Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 2 минуты назад, fanatic сказал: тут вроде все правильно. нужно смотреть как формируется массив категорий в контроллере Если я не ошибаюсь, речь идёт про этот контроллер, который по адресу - \catalog\view\theme\vsemsnasti\template\product\category.tpl ? Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 К примеру, в дефолтном шаблоне есть такая проверка. Как я понял, именно она сверяет дитё с родителем. А вот в моей теме данной проверки нет. Попробовал сам, чуть всё не сломал. <?php if ($child['category_id'] == $child_id) { ?> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 8 минут назад, xonar сказал: Как я понял, именно она сверяет дитё с родителем. нет, это проверка на текущую категорию Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 13 минут назад, xonar сказал: речь идёт про этот контроллер, который по адресу - \catalog\view\theme\vsemsnasti\template\product\category.tpl ? нет, это шаблон Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 3 минуты назад, fanatic сказал: нет, это шаблон Пардон, не то скопировал. Я про это имел ввиду - \vsemsnasti\catalog\controller\product Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 нет. это контроллер карточки товара меню категорий это модуль catalog/controlltr/extension/module/category.php или же это модуль шаблона Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 Тогда вот. Заплачу за помощь, если поможете. Могу сначала заплатить, а потом помощь. <?php // * @copyright OPENCART.PRO 2011 - 2017. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); $child_lv2 = array(); foreach($children as $child) { $children_child = $this->model_catalog_category->getCategories($child['category_id']); foreach($children_child as $child_child) { $filter_data = array('filter_category_id' => $child_child['category_id'], 'filter_sub_category' => true); $child_lv2[] = array( 'category_id' => $child_child['category_id'], 'name' => $child_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'] . '_'. $child_child['category_id']) ); } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $child_lv2, 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); /*if($data['category_id'] == $category['category_id'] || $data['category_id']==0){*/ $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); /*}*/ } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('common/menu'); /*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->getChildCategories($category['category_id']); foreach($children[0] as $child) { $filter_data=array( 'filter_category_id'=>$child['category_id'], 'filter_sub_category'=>true); if(!file_exists(DIR_IMAGE.'catalog/'.$child['image']))$image='image/catalog/3-100x100-60x50.jpg'; else $image='image/catalog/'.$child['image']; $children_child = null; if($children[1]) { $children_child = $this->getChildInChild($children[1],$category['category_id'].'_'.$child['category_id'],$child['category_id']); } $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_child'=>$children_child, 'image'=>$image); } /*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'])); } } return $this->load->view('extension/module/category', $data); } protected function getChildInChild($array,$href,$parent){ /*Level 3*/ $children_data = array(); foreach($array as $child) { if($child['parent_id']!=$parent) continue; $children_data[]=array( 'name'=>$child['name'], 'href'=>$this->url->link('product/category', 'path='.$href.'_'.$child['category_id'])); } return $children_data; } } Попробуй это контроллер Цитата Цитата Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Помогите с меню. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 2 минуты назад, fanatic сказал: тут вроде все правильно. нужно смотреть как формируется массив категорий в контроллере Если я не ошибаюсь, речь идёт про этот контроллер, который по адресу - \catalog\view\theme\vsemsnasti\template\product\category.tpl ? Надіслати Поділитися на інших сайтах More sharing options...
xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 К примеру, в дефолтном шаблоне есть такая проверка. Как я понял, именно она сверяет дитё с родителем. А вот в моей теме данной проверки нет. Попробовал сам, чуть всё не сломал. <?php if ($child['category_id'] == $child_id) { ?> <?php } ?> Надіслати Поділитися на інших сайтах More sharing options...
fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 8 минут назад, xonar сказал: Как я понял, именно она сверяет дитё с родителем. нет, это проверка на текущую категорию Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 13 минут назад, xonar сказал: речь идёт про этот контроллер, который по адресу - \catalog\view\theme\vsemsnasti\template\product\category.tpl ? нет, это шаблон Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 3 минуты назад, fanatic сказал: нет, это шаблон Пардон, не то скопировал. Я про это имел ввиду - \vsemsnasti\catalog\controller\product Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 нет. это контроллер карточки товара меню категорий это модуль catalog/controlltr/extension/module/category.php или же это модуль шаблона Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 Тогда вот. Заплачу за помощь, если поможете. Могу сначала заплатить, а потом помощь. <?php // * @copyright OPENCART.PRO 2011 - 2017. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); $child_lv2 = array(); foreach($children as $child) { $children_child = $this->model_catalog_category->getCategories($child['category_id']); foreach($children_child as $child_child) { $filter_data = array('filter_category_id' => $child_child['category_id'], 'filter_sub_category' => true); $child_lv2[] = array( 'category_id' => $child_child['category_id'], 'name' => $child_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'] . '_'. $child_child['category_id']) ); } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $child_lv2, 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); /*if($data['category_id'] == $category['category_id'] || $data['category_id']==0){*/ $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); /*}*/ } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('common/menu'); /*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->getChildCategories($category['category_id']); foreach($children[0] as $child) { $filter_data=array( 'filter_category_id'=>$child['category_id'], 'filter_sub_category'=>true); if(!file_exists(DIR_IMAGE.'catalog/'.$child['image']))$image='image/catalog/3-100x100-60x50.jpg'; else $image='image/catalog/'.$child['image']; $children_child = null; if($children[1]) { $children_child = $this->getChildInChild($children[1],$category['category_id'].'_'.$child['category_id'],$child['category_id']); } $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_child'=>$children_child, 'image'=>$image); } /*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'])); } } return $this->load->view('extension/module/category', $data); } protected function getChildInChild($array,$href,$parent){ /*Level 3*/ $children_data = array(); foreach($array as $child) { if($child['parent_id']!=$parent) continue; $children_data[]=array( 'name'=>$child['name'], 'href'=>$this->url->link('product/category', 'path='.$href.'_'.$child['category_id'])); } return $children_data; } } Попробуй это контроллер Цитата Цитата Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Помогите с меню. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 13 минут назад, xonar сказал: речь идёт про этот контроллер, который по адресу - \catalog\view\theme\vsemsnasti\template\product\category.tpl ? нет, это шаблон Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 3 минуты назад, fanatic сказал: нет, это шаблон Пардон, не то скопировал. Я про это имел ввиду - \vsemsnasti\catalog\controller\product Надіслати Поділитися на інших сайтах More sharing options... fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 нет. это контроллер карточки товара меню категорий это модуль catalog/controlltr/extension/module/category.php или же это модуль шаблона Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 Тогда вот. Заплачу за помощь, если поможете. Могу сначала заплатить, а потом помощь. <?php // * @copyright OPENCART.PRO 2011 - 2017. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); $child_lv2 = array(); foreach($children as $child) { $children_child = $this->model_catalog_category->getCategories($child['category_id']); foreach($children_child as $child_child) { $filter_data = array('filter_category_id' => $child_child['category_id'], 'filter_sub_category' => true); $child_lv2[] = array( 'category_id' => $child_child['category_id'], 'name' => $child_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'] . '_'. $child_child['category_id']) ); } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $child_lv2, 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); /*if($data['category_id'] == $category['category_id'] || $data['category_id']==0){*/ $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); /*}*/ } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('common/menu'); /*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->getChildCategories($category['category_id']); foreach($children[0] as $child) { $filter_data=array( 'filter_category_id'=>$child['category_id'], 'filter_sub_category'=>true); if(!file_exists(DIR_IMAGE.'catalog/'.$child['image']))$image='image/catalog/3-100x100-60x50.jpg'; else $image='image/catalog/'.$child['image']; $children_child = null; if($children[1]) { $children_child = $this->getChildInChild($children[1],$category['category_id'].'_'.$child['category_id'],$child['category_id']); } $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_child'=>$children_child, 'image'=>$image); } /*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'])); } } return $this->load->view('extension/module/category', $data); } protected function getChildInChild($array,$href,$parent){ /*Level 3*/ $children_data = array(); foreach($array as $child) { if($child['parent_id']!=$parent) continue; $children_data[]=array( 'name'=>$child['name'], 'href'=>$this->url->link('product/category', 'path='.$href.'_'.$child['category_id'])); } return $children_data; } } Попробуй это контроллер Цитата Цитата Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Помогите с меню. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 3 минуты назад, fanatic сказал: нет, это шаблон Пардон, не то скопировал. Я про это имел ввиду - \vsemsnasti\catalog\controller\product Надіслати Поділитися на інших сайтах More sharing options...
fanatic Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 нет. это контроллер карточки товара меню категорий это модуль catalog/controlltr/extension/module/category.php или же это модуль шаблона Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 Тогда вот. Заплачу за помощь, если поможете. Могу сначала заплатить, а потом помощь. <?php // * @copyright OPENCART.PRO 2011 - 2017. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); $child_lv2 = array(); foreach($children as $child) { $children_child = $this->model_catalog_category->getCategories($child['category_id']); foreach($children_child as $child_child) { $filter_data = array('filter_category_id' => $child_child['category_id'], 'filter_sub_category' => true); $child_lv2[] = array( 'category_id' => $child_child['category_id'], 'name' => $child_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'] . '_'. $child_child['category_id']) ); } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $child_lv2, 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); /*if($data['category_id'] == $category['category_id'] || $data['category_id']==0){*/ $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); /*}*/ } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('common/menu'); /*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->getChildCategories($category['category_id']); foreach($children[0] as $child) { $filter_data=array( 'filter_category_id'=>$child['category_id'], 'filter_sub_category'=>true); if(!file_exists(DIR_IMAGE.'catalog/'.$child['image']))$image='image/catalog/3-100x100-60x50.jpg'; else $image='image/catalog/'.$child['image']; $children_child = null; if($children[1]) { $children_child = $this->getChildInChild($children[1],$category['category_id'].'_'.$child['category_id'],$child['category_id']); } $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_child'=>$children_child, 'image'=>$image); } /*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'])); } } return $this->load->view('extension/module/category', $data); } protected function getChildInChild($array,$href,$parent){ /*Level 3*/ $children_data = array(); foreach($array as $child) { if($child['parent_id']!=$parent) continue; $children_data[]=array( 'name'=>$child['name'], 'href'=>$this->url->link('product/category', 'path='.$href.'_'.$child['category_id'])); } return $children_data; } } Попробуй это контроллер Цитата Цитата Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Помогите с меню. Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich Промо банери в категоріях товарів Автор: IHOR1989 Trend - адаптивний універсальний шаблон Автор: DSV
xonar Опубліковано: 16 березня 2020 Автор Share Опубліковано: 16 березня 2020 Тогда вот. Заплачу за помощь, если поможете. Могу сначала заплатить, а потом помощь. <?php // * @copyright OPENCART.PRO 2011 - 2017. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('extension/module/category'); $data['heading_title'] = $this->language->get('heading_title'); if (isset($this->request->get['path'])) { $parts = explode('_', (string)$this->request->get['path']); } else { $parts = array(); } if (isset($parts[0])) { $data['category_id'] = $parts[0]; } else { $data['category_id'] = 0; } if (isset($parts[1])) { $data['child_id'] = $parts[1]; } else { $data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); $child_lv2 = array(); foreach($children as $child) { $children_child = $this->model_catalog_category->getCategories($child['category_id']); foreach($children_child as $child_child) { $filter_data = array('filter_category_id' => $child_child['category_id'], 'filter_sub_category' => true); $child_lv2[] = array( 'category_id' => $child_child['category_id'], 'name' => $child_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'] . '_'. $child_child['category_id']) ); } $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $child_lv2, 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); /*if($data['category_id'] == $category['category_id'] || $data['category_id']==0){*/ $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); /*}*/ } return $this->load->view('extension/module/category', $data); } } Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 <?php class ControllerExtensionModuleCategory extends Controller { public function index() { $this->load->language('common/menu'); /*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->getChildCategories($category['category_id']); foreach($children[0] as $child) { $filter_data=array( 'filter_category_id'=>$child['category_id'], 'filter_sub_category'=>true); if(!file_exists(DIR_IMAGE.'catalog/'.$child['image']))$image='image/catalog/3-100x100-60x50.jpg'; else $image='image/catalog/'.$child['image']; $children_child = null; if($children[1]) { $children_child = $this->getChildInChild($children[1],$category['category_id'].'_'.$child['category_id'],$child['category_id']); } $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_child'=>$children_child, 'image'=>$image); } /*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'])); } } return $this->load->view('extension/module/category', $data); } protected function getChildInChild($array,$href,$parent){ /*Level 3*/ $children_data = array(); foreach($array as $child) { if($child['parent_id']!=$parent) continue; $children_data[]=array( 'name'=>$child['name'], 'href'=>$this->url->link('product/category', 'path='.$href.'_'.$child['category_id'])); } return $children_data; } } Попробуй это контроллер Цитата Цитата Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Загальні питання Помогите с меню.
esculapra Опубліковано: 16 березня 2020 Share Опубліковано: 16 березня 2020 public function getChildCategories($parent_id = 0) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c LEFT JOIN " . DB_PREFIX . "category_description cd ON (c.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (c.category_id = c2s.category_id) WHERE c.parent_id = '" . (int)$parent_id . "' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND c.status = '1' ORDER BY c.sort_order, LCASE(cd.name)"); $array=array(); foreach($query->rows as $row){ $array[]=$row['category_id']; } if(!empty($array)) return array($query->rows,$this->getChildInChild($array)); else return array($query->rows,false); } protected function getChildInChild($parent_id = array()) { $query = $this->db->query("SELECT c.*,cd.* FROM " . DB_PREFIX . "category AS c LEFT JOIN " . DB_PREFIX . "category_description AS cd ON (c.category_id = cd.category_id) WHERE c.parent_id IN(" . implode(',',$parent_id ).") AND cd.language_id = " . (int)$this->config->get('config_language_id') . " AND c.status = 1"); return $query->rows; } А это в модели Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 10 часов назад, esculapra сказал: А это в модели Вставил, контроллер по пути - catalog/controlltr/extension/module/category.php И модель по пути - /catalog/model/catalog/category.php Ничего не получилось. Категории отображаются нормально, а подкатегории пропали. Надіслати Поділитися на інших сайтах More sharing options...
xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Ребята очень нужна помощь. Готов заплатить 500 рублей за помощь (чем богат). Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 17 березня 2020 Share Опубліковано: 17 березня 2020 <div class="h3"> {{ heading_title }} </div> <ul id="left-menu"> {% for category in categories %} <li class="parent"> {% if category.category_id == category_id %} <a href="{{ category.href }}" class="active"> {{ category.name }} </a> {% else %} <a href="{{ category.href }}"> {{ category.name }} </a> {% endif %} {% if category.children %} <ul id="submenu"> {% for child in category.children %} <li class="parent"> {% if child.category_id == child_id %} <a href="{{ child.href }}" class="active"> {{ child.name }} </a> {% else %} <a href="{{ child.href }}"> {{ child.name }} </a> {% endif %} {% if child.children_child %} <ul id="submenu"> {% for children_child in child.children_child %} <li class="parent"> <a href="{{ children_child.href }}"> {{ children_child.name }} </a> </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> {% endif %} </li> {% endfor %} </ul> 4 часа назад, xonar сказал: подкатегории пропали Потому что нужно еще изменить контроллер. Это меню переделалось для сайта https://udachi.by/ Вот шаблон, только нужно учесть, что необходимо добавить стили Надіслати Поділитися на інших сайтах More sharing options... xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1
xonar Опубліковано: 17 березня 2020 Автор Share Опубліковано: 17 березня 2020 Всем спасибо за помощь. Мне помог данный человек - https://opencartforum.com/profile/11962-wadamir/ Спасибо ему огромное, причина была в том, что массив не сбрасывался. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts