Перейти к содержанию
alinalessioYandex

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

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

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

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

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

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


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

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

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


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

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

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

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

 

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


Ссылка на сообщение
Поделиться на другие сайты
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 пользователей онлайн

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

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.