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

Как в стандартных категориях добавить маркеры для раскрывающихся категорий?


Recommended Posts

Сейчас стандартные категории в колонке выглядят одинаково, даже если есть вложенность. Как добавить маркер (плюсик или стрелочку) для тех категорий, у которых есть вложенные подкатегории?

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

ocStore 2.3.0.2.2

Змінено користувачем alinalessioYandex
Надіслати
Поділитися на інших сайтах


4 часа назад, Miha7685776 сказал:

модуль категории? дочерние обернуть в блок и стилизовать

Мне надо не вложенные категории стилизовать, а категории верхнего уровня, и только те, у которых есть внутри вложенность.

 

Подскажите пожалуйста, как корневой категории, у которой есть вложенность, добавить класс?

<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>

 

Змінено користувачем alinalessioYandex
Надіслати
Поділитися на інших сайтах


alinalessioYandex,

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <?php if ($category['category_id'] == $category_id) { ?>
//начало
   <div class="primer">
       <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
  </div>
//конец
  <?php if ($category['children']) { ?>

чет тормознул. можно было класс active взять. 

Змінено користувачем Miha7685776
Надіслати
Поділитися на інших сайтах


Так уже пробовал. В этом случае класс добавляется только когда находишься внутри категории. А надо, чтобы находясь снаружи, категории имеющие вложенность, были отмечены.

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


11 часов назад, Miha7685776 сказал:

alinalessioYandex,  попробуй заменить  условие 


<?php if ($category['category_id'] == $category_id) { ?>

на <?php if ($category['children']) { ?>

 

Изменил условие, но все равно блок добавляется только к той корневой категории, на которой находишься. Если смотреть снаружи, то все категории без блока.

Похоже, там надо добавить еще одно условие, при котором будет показываться корневая категория. Сейчас проверка на наличие подкатегорий включается только для тех ссылок, на которой находишься. А как сделать условие, чтобы проверка была не только при переходе на ссылку, а вообще изначально?

Змінено користувачем alinalessioYandex
Надіслати
Поділитися на інших сайтах


не может быть. чисти кеши, обнови модификатор. как раз условие 

<?php if ($category['category_id'] == $category_id) { ?> делает такое

или ошибся файлом. такое тоже бывает)

Змінено користувачем Miha7685776
Надіслати
Поділитися на інших сайтах


5 часов назад, Miha7685776 сказал:

не может быть. чисти кеши, обнови модификатор. как раз условие 


<?php if ($category['category_id'] == $category_id) { ?> делает такое

или ошибся файлом. такое тоже бывает)

Да, это условие проверяет наличие вложенности у категорий. Но проверяет только тогда, когда находишься в самой категории. А надо изменить условие, чтобы запрашивало сразу. Только вот ума не приложу, как это сделать.

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


alinalessioYandex,

контроллер

<?php
class ControllerModuleCategory extends Controller {
    public function index() {
        $this->load->language('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();
            //if ($category['category_id'] == $data['category_id']) {
            if ($category['category_id']) {
                $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(
                        'category_id' => $child['category_id'],
                        'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
                        'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id'])
                    );
                }
            }
            $filter_data = array(
                'filter_category_id'  => $category['category_id'],
                'filter_sub_category' => true
            );
            $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'])
            );
        }
        if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/module/category.tpl')) {
            return $this->load->view($this->config->get('config_template') . '/template/module/category.tpl', $data);
        } else {
            return $this->load->view('default/template/module/category.tpl', $data);
        }
    }
}

 

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


alinalessioYandex,

вюшка

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <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">   - <?php echo $child['name']; ?></a>
  <?php } else { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item">   - <?php echo $child['name']; ?></a>
  <?php } ?>
  <?php } ?>
  <?php } ?>
  <?php } ?>
</div>

 

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


3 часа назад, Miha7685776 сказал:

alinalessioYandex,

контроллер

<?php
class ControllerModuleCategory extends Controller {

 

3 часа назад, Miha7685776 сказал:

вюшка

<div class="list-group">
  <?php foreach ($categories as $category) { ?>
  <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>

Спасибо. Но в этом случае все категории, которые имеют вложенность, всегда раскрыты, где бы мы не находились.

 

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


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

я уже не понял что ты хочешь, но "маркер" может тут колдовать

 

?php foreach ($category['children'] as $child) { ?>
  <?php if ($child['category_id'] == $child_id) { ?>
  <a href="<?php echo $child['href']; ?>" class="list-group-item active">---Тута ------   - ------ до Тута--------------- <?php echo $child['name']; ?></a>
  <?php } else { ?>

 

Забудь! гугли модуль. чую опять начнется

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


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

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

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

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

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

Вхід

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

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

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

Important Information

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