Marusia

[РЕШЕНО] Разное боковое меню в зависимости от выбранной категории

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

Marusia    4

Ребята привет!


 


Подскажите, может кто сталкивался с таким. 


 


Мне надо сделать следующее:


 


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


 


Кто сталкивался помогите плизз!


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


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

С ходу на ум приходит только костыль с привязкой к категории с классом .active

Смысл в том, что в tpl'ке модуля для обычных категорий прописываем dispay:none, а для категорий с классом .active dispay:block

 

и подгружать эту tpl'ку только на маршрутах product/category и product/product

 

Но это жесткий костыль... просто первое что на ум пришло...

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


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

С ходу на ум приходит только костыль с привязкой к категории с классом .active

Смысл в том, что в tpl'ке модуля для обычных категорий прописываем dispay:none, а для категорий с классом .active dispay:block

 

и подгружать эту tpl'ку только на маршрутах product/category и product/product

 

Но это жесткий костыль... просто первое что на ум пришло...

 

Жестковато для моего мозга))) но спасибо за наводку

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


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

Жесткость заключается не в сложности, а в иррациональном подходе...

А как это сделать могу подсказать без проблем :)

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


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

Жесткость заключается не в сложности, а в иррациональном подходе...

А как это сделать могу подсказать без проблем :)

 

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

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


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

1. В директории \catalog\view\theme\default\template\module находите category.tpl и создаете его копию с именем category2.tpl

2. В category2.tpl находите строку 

<a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a> 

и заменяете ее на 

<a style="display: none;" href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?></a>

3. В директории \catalog\controller\module находите category.php 

4. В category.php находите текст 

if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/module/category.tpl';
} else {
$this->template = 'default/template/module/category.tpl';
}

и заменяете его на 

if ($this->request->get['route']=='product/category' or $this->request->get['route']=='product/product') {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category2.tpl')) {
$this->template = $this->config->get('config_template') . '/template/module/category2.tpl';
} else {
$this->template = 'default/template/module/category2.tpl';
}
} else {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {
$this->template = $this->config->get('config_template') . '/template/module/category.tpl';
} else {
$this->template = 'default/template/module/category.tpl';
}
}

Если я ничего не упустил, то должно сработать...

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


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

Спасибо большое!!! Я испытаю и сразу отпишусь, рабочее или нет.

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


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

Спасибо большое!!! Я испытаю и сразу отпишусь, рабочее или нет.

Ну так рабочее или нет? Тоже заинтересовало

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


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

Ну так рабочее или нет? Тоже заинтересовало

 

НГ был долгим)) Сейчас начинаю пробовать метод который подсказал xds он же единственный в своем роде))) и сразу отпишу.

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


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

Привет xds твой жесткий костыль работает. Сделала сейчас. только на главной выдает вот это

Notice: Undefined index: route in /home/c/тутмоя база видимо/мой урл/public_html/catalog/controller/module/category.php on line 66Notice:

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


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

 

Привет xds твой жесткий костыль работает. Сделала сейчас. только на главной выдает вот это

Notice: Undefined index: route in /home/c/тутмоя база видимо/мой урл/public_html/catalog/controller/module/category.php on line 66Notice:

 

Что бы сказать что-то вразумительное нужно весь код контролера увидеть... киньте под спойлер

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


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

Что бы сказать что-то вразумительное нужно весь код контролера увидеть... киньте под спойлер

<?php class ControllerModuleCategory extends Controller { protected function index($setting) { $this->language->load('module/category'); $this->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])) { $this->data['category_id'] = $parts[0]; } else { $this->data['category_id'] = 0; } if (isset($parts[1])) { $this->data['child_id'] = $parts[1]; } else { $this->data['child_id'] = 0; } $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $total = $this->model_catalog_product->getTotalProducts(array('filter_category_id' => $category['category_id'])); $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); foreach ($children as $child) { $data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $product_total = $this->model_catalog_product->getTotalProducts($data); $total += $product_total; $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $product_total . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $this->data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $total . ')' : ''), 'children' => $children_data, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } if ($this->request->get['route']=='product/category' or $this->request->get['route']=='product/product') {if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category2.tpl')) {$this->template = $this->config->get('config_template') . '/template/module/category2.tpl';} else {$this->template = 'default/template/module/category2.tpl';}} else {if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {$this->template = $this->config->get('config_template') . '/template/module/category.tpl';} else {$this->template = 'default/template/module/category.tpl';}} $this->render(); }}?>

Вот код контроллера category.php Тема у меня не дефолтная но по всей видимости это не влияет, я заменяла название темы в коде который кинули на свою тему и та же ситуация

 

if ($this->request->get['route']=='product/category' or $this->request->get['route']=='product/product') {
Это 66 я строка)) может поможет в выяснении

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


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

А на магазин можно ссылку?

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


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

Ну так рабочее или нет? Тоже заинтересовало

 

Рабочее!!! 

 

У меня в контроллере 66 строка выдавала ошибку на главной, xds написал решение и оно то же рабочее, вот если что

 

Заменить 

if ($this->request->get['route']=='product/category' or $this->request->get['route']=='product/product') {

На

if (isset($this->request->get['route']) and ($this->request->get['route']=='product/category' or $this->request->get['route']=='product/product')) {

Благодарю xds за эксклюзивное решение проблемы!!!))

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


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

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

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

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

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

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

Войти

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

Войти


  • Похожий контент

    • От VladimirV
       
      Доброго времени суток. Хочу вывести минимальную цену в категорию, что то делаю не так, прошу вашей помощи.
      ocStore 2.3.0.2.2
      в catalog>model>catalog>product добавил:
      public function getMinPriceFromCategory($category_id) { $query = $this->db->query("SELECT LEAST(p.price,IFNULL(ps.price, p.price)) min_price FROM `" . DB_PREFIX . "category` c RIGHT JOIN `" . DB_PREFIX . "product_to_category` p2c ON p2c.category_id = c.category_id RIGHT JOIN `" . DB_PREFIX . "product` p ON p2c.product_id = p.product_id LEFT JOIN `" . DB_PREFIX . "product_special` ps ON p.product_id = ps.product_id AND ps.date_end >= NOW() AND ps.date_start <= NOW() WHERE c.category_id = " . (int)$category_id . " AND p.status = 1 AND c.status = 1 ORDER BY min_price LIMIT 0,1 "); if ($query->num_rows) { return $query->row['min_price']; } else { return 0; } } в cotroller>product>category, после  $data['categories'][] = array(   добавил:
      'min_price' => $this->model_catalog_product->getMinPriceFromCategory($result['category_id']), в шаблоне category.tpl:
      <?php echo $min_price; ?> Итог: "Undefined variable: min_price". Понимаю что делаю не правильно, но знаний не хватает, понять где и что делаю не так. Прошу указать что нет так делаю, заранее спасибо.
    • От alexandr12345
      Добрый день! 
      Необходимо в определенную категорию вывести товары, которые состоят в другой категории.
      Данный шаблон лучше реализовать на ID категории.
       
      То есть, для каждой категории на сайте я могу установить персонализированный шаблон и вот для одной категории мне нужно прописать, чтобы в этой категории выводились все товары из категории №5 например.
       
      Знаю, что можно просто добавить все нужные товары в эту категорию и ничего не мудрить с шаблонами, но нужно именно так, чтобы в эту категорию брались товары из другой.
       
      Вот существующий шаблон.
      Айди нужно категории 238.
      <?php $config = $this->registry->get('config'); ?> <?php $id_slider = '111'; ?> <?php echo $header; ?> <ul class="breadcrumb"> <?php foreach ($breadcrumbs as $i=> $breadcrumb) { ?> <li><?php if($i+1<count($breadcrumbs)) { ?><a href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a> <?php } else { ?><?php echo $breadcrumb['text']; ?><?php } ?></li> <?php } ?> </ul> <?php echo $content_top; ?> <div class="container category-page parket"> <div class="row"><?php echo $column_left; ?> <?php if ($column_left && $column_right) { ?> <?php $class = 'col-sm-6'; ?> <?php } elseif ($column_left || $column_right) { ?> <?php $class = 'col-sm-9'; ?> <?php } else { ?> <?php $class = 'col-sm-12'; ?> <?php } ?> <div id="content" class="<?php echo $class; ?>"> <div class="cattitle"> <h1><?php echo $heading_title; ?></h1> <div class="blocks hidden-xs"> <?php } ?> </div> <?php } ?> </div> </div> <?php if ($products_sub) { ?> <div class="product-grid"> <div class="row flex-container"> <?php foreach ($products_sub as $product_sub) { ?> <div class="col-xs-12 col-sm-25 product-container"> <div class="product-block"> <?php if ($product_sub['thumb']) { ?> <div class="image"> <a href="<?php echo $product_sub['href']; ?>" style="background:transparent; box-shadow:none;"> <img src="<?php echo $product_sub['thumb']; ?>" title="<?php echo $product_sub['name']; ?>" alt="<?php echo $product_sub['name']; ?>" /> <div class="more">Посмотреть все цвета и варианты</div> </a> </div> <?php } ?> <span class="product-name hidden"><?php echo $product_sub['name']; ?></span> <div class="prod-model"> <a href="<?php echo $product_sub['href']; ?>" style="background:transparent; box-shadow:none;"><span class="model"><?php echo $product_sub['model']; ?></span></a> </div> <?php if ($product_sub['price']) { ?> <div class="price"> <span class="button typecatalog modal-raschet">Рассчитать</span> </div> <?php } ?> </div> </div> <?php } ?> </div> </div> <div class="row"> <div class="text-center"><?php echo $pagination; ?></div> </div> <?php } ?> <?php if (!$categories && !$products_sub) { ?> <p><?php echo $text_empty; ?></p> <div class="buttons"> <div class="pull-right"><a href="<?php echo $continue; ?>" class="btn btn-primary"><?php echo $button_continue; ?></a></div> </div> <?php } ?> </div> <div class="clearfix"></div> <?php if ($description) { ?> <div class="description" <?php if ($designer || (isset($inzh_systems_sub) && ($inzh_systems_sub))) echo 'style="text-align: justify; padding: 0 2em 0 1em;"'; ?>> <p><?php echo $description; ?></p> </div> <?php } ?> <?php echo $column_right; ?></div> </div> <?php echo $footer; ?> Я буду очень признателен за помощь!!!
    • От Otvet

      300.00 руб
      Скачать/Купить дополнение


      FX AddOn Pack #1 = Редирект-менеджер + Категория/Бренд
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn ... to be continue  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter Добавил Otvet Добавлено 03.01.2017 Категория Прочее Системные требования Full Index не ниже версии 3.9.9 Метод активации Автоматическая активация Ioncube Loader Нет OpenCart ocStore OpenCart.Pro, ocShop  
    • От Otvet
      Пакет дополнений к модулю Full IndeX, отдельно от которого работа данных дополнений невозможна или неполноценна
      Включает в себя:
      FX Redirects Manager AddOn FX Manufacturers AddOn ... to be continue  
      FX Redirects Manager
      Менеджер редиректов. Позволяет перенаправлять со старых/битых страниц на новые. В дальнейшем будет работать и на любых иных страницах.
      Главные отличительные особенности на фоне конкурентов:
      отсутствие влияния на скорость работы сайта (редиректы работают только если страница не найдена) безопасность (редирект не сработает если страница существует и была занесена с список по ошибке)  
      Новый функционал:
      редиректы по маске (beta) редиректы не только со старых/битых страниц но и с любых иных (запрос)
      При наличии спроса будет добавлено:
      редиректы из файла  
      FX Manufacturers
      Модуль создающий подкатегории вида Категория/Бренд и выводящий меню производителей в категориях для перехода по ним. Возможна автономная работа, но Мета теги и Заголовки без Full Index не будут уникальны.
      Для чего? Создания посадочных страниц в первую очередь, ибо запросы товара с уточнением производителя практически всегда входят в СЧ-ВЧ
      Функционал:
      Вывод меню брендов (виджет или как угодно назвать можно) Исправление ссылок пагинации/сортировки с учетом производителя Добавление в хлебные крошки Совместимость с OCFilter
    • От iDiy

      750.00 руб
      Скачать/Купить дополнение


      Расширенный модуль меню (custom menu)
      Расширенный модуль меню (custom menu)
      Надежный и функциональный модуль витрины категорий, горизонтального и вертикального меню, позволяет создавать меню из произвольных элементов (custom ссылок) и/или использовать категории, товары, бренды и статьи из существующего каталога магазина.
       
      Особенности:
      неограниченный уровень вложенности; выборочные элементы меню (категории, производители, статьи, товары); произвольные ссылки с собственными параметрами (группы, классы, иконки...); горизонтальное адаптивное меню (Amazon стиль); вертикального меню в трех стилях: "Accordion", меню "Flyout" и меню "Drill Down"; многоуровневая витрина с эффектом "Accordion"; отображение меню для конкретной категории/производителя/товара; экспорт/импорт настроек модуля и структуры элементов меню; функция скрытия пустых категорий и производителей (без товара); количество товаров категории и производителя без потери производительности; поддержка мульти-магазинов и групп пользователей; подключение и использование произвольных стилей и скриптов; всего 1 запрос к БД для всех категорий + товаров + производителей + статьи; всего 1 запрос к БД при подсчете количества товаров категории/производителя; модуль не заменяет системных файлов и не использует кеш; простая установка в меню дополнений...  
      Совместимость: OpenCart, ocStore, ocShop и другие сборки версий 2.1.x - 3.х
      Системные требования: PHP 5.6 - 7.0, Ioncube Loader 6+
       
      Демонстрация работы модуля на примере:
      Витрины категорий, Категории, Товара, Бренда
      Админ демо (логин/пароль: demo/demo)
       
      Добавил iDiy Добавлено 29.06.2017 Категория Модули Системные требования PHP 5.6 - 7.0, Ioncube Loader 6+ Сайт разработчика Старая цена Метод активации По запросу на почту Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1  
  • Последние посетители   0 пользователей онлайн

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