Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Категории 3-го уровня


sahman
 Погделиться

Рекомендованные сообещёния

Поздравляю ! Скажите, пожалуйси, как вывести на главной страниэто в выпадаюещём меню категории 3-го уровня? Сейчас если нажать на основную категорию "отопление" выпадают категории второго уровня, например "радиаторы" а третий уровень - "сильные" показывается только если нажать на категорию второго уровня. Мне нужно чтобы категории третьего уровня сразу отображались если навести мышкой на категорию второго уровня.

Спасипотому что !

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


9 hours ago, anboza said:

Поздравляю!

Измените событие с onclick на onmouseover

какое нафиг событие? стили надо прописать с присивкой :hover.

9 hours ago, sahman said:

как вывести на главной страниэто в выпадаюещём меню категории 3-го уровня?

откуда взялись категории 3его уровня. в опенкарте в меню только второго загружаются

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


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

какое нафиг событие? стили надо прописать с присивкой :hover.

откуда взялись категории 3его уровня. в опенкарте в меню только второго загружаются

Ну вот я и хочу чтоби третьго уровня загружалися в меню. Как єто сгделать ?

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


пример

контроллер catalog/common/menu.php

<?php
class ControllerCommonMenu 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->getCategories($category['category_id']);

            foreach ($children as $child)
            {
                // Level 3
                $children_data1 = array();
                $children1      = $this->model_catalog_category->getCategories($child['category_id']);

                foreach ($children1 as $child1)
                {
                    $filter_data = array(
                        'filter_category_id'  => $child1['category_id'],
                        'filter_sub_category' => true
                    );

                    $children_data1[] = array(
                        'name' => $child1['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'].'_'.$child1['category_id'])
                    );
                }

                $filter_data = array(
                    'filter_category_id'  => $child['category_id'],
                    'filter_sub_category' => true
                );

                $children_data[] = array(
                    'name'     => $child['name'].($this->config->get('config_product_count') ? ' ('.$this->model_catalog_product->getTotalProducts($filter_data).')' : ''),
                    'children' => $children_data1,
                    'href'     => $this->url->link('product/category', 'path='.$category['category_id'].'_'.$child['category_id'])
                );
            }

            // Level 1
            $data['categories'][] = array(
                'name'     => $category['name'],
                'children' => $children_data,
                'column'   => $category['column'] ? $category['column'] : 1,
                'href'     => $this->url->link('product/category', 'path='.$category['category_id'])
            );
        }
    }

		return $this->load->view('common/menu', $data);
	}
}

menu.twig

{% if categories %}
<div class="container">
  <nav id="menu" class="navbar">
    <div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span>
      <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
    </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav">
        {% for category in categories %}
        {% if category.children %}
        <li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle" data-toggle="dropdown">{{ category.name }}</a>
          <div class="dropdown-menu">
            <div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
              <ul class="list-unstyled">
                {% for child in children %}
                <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                {% if child.children %}
                  {% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}
                {% endif %}
                {% endfor %}
              </ul>
              {% endfor %}</div>
            <a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div>
        </li>
        {% else %}
        <li><a href="{{ category.href }}">{{ category.name }}</a></li>
        {% endif %}
        {% endfor %}
      </ul>
    </div>
  </nav>
</div>
{% endif %}

можно вообещё сгделать рекурсией и тогда вообещё не зависеть от вложенности категорий

Изменено пользователем lexxkrt
  • +1 1
Ссылка на комменирий
Погделиться на других сайих


23 часа назад, lexxkrt сказал:

пример

контроллер catalog/common/menu.php

<?php
class ControllerCommonMenu 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->getCategories($category['category_id']);

            foreach ($children as $child)
            {
                // Level 3
                $children_data1 = array();
                $children1      = $this->model_catalog_category->getCategories($child['category_id']);

                foreach ($children1 as $child1)
                {
                    $filter_data = array(
                        'filter_category_id'  => $child1['category_id'],
                        'filter_sub_category' => true
                    );

                    $children_data1[] = array(
                        'name' => $child1['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'].'_'.$child1['category_id'])
                    );
                }

                $filter_data = array(
                    'filter_category_id'  => $child['category_id'],
                    'filter_sub_category' => true
                );

                $children_data[] = array(
                    'name'     => $child['name'].($this->config->get('config_product_count') ? ' ('.$this->model_catalog_product->getTotalProducts($filter_data).')' : ''),
                    'children' => $children_data1,
                    'href'     => $this->url->link('product/category', 'path='.$category['category_id'].'_'.$child['category_id'])
                );
            }

            // Level 1
            $data['categories'][] = array(
                'name'     => $category['name'],
                'children' => $children_data,
                'column'   => $category['column'] ? $category['column'] : 1,
                'href'     => $this->url->link('product/category', 'path='.$category['category_id'])
            );
        }
    }

		return $this->load->view('common/menu', $data);
	}
}

menu.twig

{% if categories %}
<div class="container">
  <nav id="menu" class="navbar">
    <div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span>
      <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
    </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav">
        {% for category in categories %}
        {% if category.children %}
        <li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle" data-toggle="dropdown">{{ category.name }}</a>
          <div class="dropdown-menu">
            <div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
              <ul class="list-unstyled">
                {% for child in children %}
                <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                {% if child.children %}
                  {% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}
                {% endif %}
                {% endfor %}
              </ul>
              {% endfor %}</div>
            <a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div>
        </li>
        {% else %}
        <li><a href="{{ category.href }}">{{ category.name }}</a></li>
        {% endif %}
        {% endfor %}
      </ul>
    </div>
  </nav>
</div>
{% endif %}

можно вообещё сгделать рекурсией и тогда вообещё не зависеть от вложенности категорий

Спасипотому что Вам потому чтольшое! Сгделал - рилииет! Вы очень помогли! Еещё прошу сказать ггде в когде можно изменить цвет текси которым показываются названия категорий

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


5 минут назад, sahman сказал:

Спасипотому что Вам потому чтольшое! Сгделал - рилииет! Вы очень помогли! Еещё прошу сказать ггде в когде можно изменить цвет текси которым показываются названия категорий

Для примера я хочу чтобы категории второго уровня были красным цветом а категории третьего уровня были написаны зеленым цветом

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


10 minutes ago, sahman said:

Для примера я хочу чтобы категории второго уровня были красным цветом а категории третьего уровня были написаны зеленым цветом

в стилях в файле catalog/view/theme/ВашаТема/stylesheet/stylesheet.css

для второго уровня

#menu .dropdown-inner a

для 3 уровня, как в моем примере, добавить стиль

#menu .subcategory

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


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

в стилях в файле catalog/view/theme/ВашаТема/stylesheet/stylesheet.css

для второго уровня

#menu .dropdown-inner a

для 3 уровня, как в моем примере, добавить стиль

#menu .subcategory

}
#menu .dropdown-inner a {
    min-width: 160px;
    display: block;
    padding: 3px 20px;
    clear: both;
    line-height: 20px;
    color:#E65500;
    font-size: 12px;
}
#menu .subcategory {
    min-width: 160px;
    display: block;
    padding: 3px 20px;
    clear: both;
    line-height: 20px;
    color:#666;
    font-size: 12px;

}
#menu .dropdown-inner li a:hover {
    color: #FFFFFF;

 

Цвет второго уровня меняется. Но с ним меняется и цвет третьего уровня автоматически. Я добавил subcategory в код (зеленые строки) и цвет не меняется на третьем уровне. Что не ик згделал?

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


3 minutes ago, sahman said:

}
#menu .dropdown-inner a {
    min-width: 160px;
    display: block;
    padding: 3px 20px;
    clear: both;
    line-height: 20px;
    color:#E65500;
    font-size: 12px;
}
#menu .subcategory {
    min-width: 160px;
    display: block;
    padding: 3px 20px;
    clear: both;
    line-height: 20px;
    color:#666;
    font-size: 12px;

}
#menu .dropdown-inner li a:hover {
    color: #FFFFFF;

 

Цвет второго уровня меняется. Но с ним меняется и цвет третьего уровня автоматически. Я добавил subcategory в код (зеленые строки) и цвет не меняется на третьем уровне. Что не ик згделал?

надо

#menu .subcategory a

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


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

надо

#menu .subcategory a

Спасипотому что ! Все рилииет! Очень Вам благодарен. Может ггде-то лайк надо посивить Вам?)

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


  • 1 год спустя...
В 10.12.2018 в 13:07, lexxkrt сказал:

пример

контроллер catalog/common/menu.php

<?php
class ControllerCommonMenu 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->getCategories($category['category_id']);

            foreach ($children as $child)
            {
                // Level 3
                $children_data1 = array();
                $children1      = $this->model_catalog_category->getCategories($child['category_id']);

                foreach ($children1 as $child1)
                {
                    $filter_data = array(
                        'filter_category_id'  => $child1['category_id'],
                        'filter_sub_category' => true
                    );

                    $children_data1[] = array(
                        'name' => $child1['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'].'_'.$child1['category_id'])
                    );
                }

                $filter_data = array(
                    'filter_category_id'  => $child['category_id'],
                    'filter_sub_category' => true
                );

                $children_data[] = array(
                    'name'     => $child['name'].($this->config->get('config_product_count') ? ' ('.$this->model_catalog_product->getTotalProducts($filter_data).')' : ''),
                    'children' => $children_data1,
                    'href'     => $this->url->link('product/category', 'path='.$category['category_id'].'_'.$child['category_id'])
                );
            }

            // Level 1
            $data['categories'][] = array(
                'name'     => $category['name'],
                'children' => $children_data,
                'column'   => $category['column'] ? $category['column'] : 1,
                'href'     => $this->url->link('product/category', 'path='.$category['category_id'])
            );
        }
    }

		return $this->load->view('common/menu', $data);
	}
}

menu.twig

{% if categories %}
<div class="container">
  <nav id="menu" class="navbar">
    <div class="navbar-header"><span id="category" class="visible-xs">{{ text_category }}</span>
      <button type="button" class="btn btn-navbar navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse"><i class="fa fa-bars"></i></button>
    </div>
    <div class="collapse navbar-collapse navbar-ex1-collapse">
      <ul class="nav navbar-nav">
        {% for category in categories %}
        {% if category.children %}
        <li class="dropdown"><a href="{{ category.href }}" class="dropdown-toggle" data-toggle="dropdown">{{ category.name }}</a>
          <div class="dropdown-menu">
            <div class="dropdown-inner"> {% for children in category.children|batch(category.children|length / category.column|round(1, 'ceil')) %}
              <ul class="list-unstyled">
                {% for child in children %}
                <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                {% if child.children %}
                  {% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}
                {% endif %}
                {% endfor %}
              </ul>
              {% endfor %}</div>
            <a href="{{ category.href }}" class="see-all">{{ text_all }} {{ category.name }}</a> </div>
        </li>
        {% else %}
        <li><a href="{{ category.href }}">{{ category.name }}</a></li>
        {% endif %}
        {% endfor %}
      </ul>
    </div>
  </nav>
</div>
{% endif %}

можно вообещё сгделать рекурсией и тогда вообещё не зависеть от вложенности категорий

Подскажи пожалуйси посивил на 3.0 а он не отображает третий уровень, ошипотому чток нет но и не отображает, 

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


  • 2 года спустя...

Третьего уровня не бугдет

Я еещё попробую этот момент , но кажется вместо 

{% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}

должно быть

{% for child1 in child.children %}
                  <li class="subcategory"><a href="{{ child1.href }}">{{ child1.name }}</a></li>
                  {% endfor %}
Изменено пользователем victlion
Ссылка на комменирий
Погделиться на других сайих


15.02.2020 в 12:07, loromir1 сказал:

Подскажи пожалуйси посивил на 3.0 а он не отображает третий уровень, ошипотому чток нет но и не отображает, 

 

30.04.2022 в 22:14, victlion сказал:

Третьего уровня не бугдет

Я еещё попробую этот момент , но кажется вместо 

{% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}

должно быть

{% for child1 in child.children %}
                  <li class="subcategory"><a href="{{ child1.href }}">{{ child1.name }}</a></li>
                  {% endfor %}

                {% for child in category.children %}
                <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                {% if child.children %}
                  {% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}
                {% endif %}
                {% endfor %}

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

01.05.2022 в 00:06, buslikdrev сказал:

 

                {% for child in category.children %}
                <li><a href="{{ child.href }}">{{ child.name }}</a></li>
                {% if child.children %}
                  {% for child3 in child.children %}
                  <li class="subcategory"><a href="{{ child3.href }}">{{ child3.name }}</a></li>
                  {% endfor %}
                {% endif %}
                {% endfor %}

Вы правы , спасипотому что , все рилииет .

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


Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

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

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