Категории 3 уровня в горизонтальном меню.

Тема в разделе "Общие вопросы", создана пользователем Сергей2015, 23 апр 2015.

  1. vagan28

    vagan28 Новичок

    Сообщения:
    6
    Симпатии:
    0
    Доброго дня!

    Версия 2.1
    Поменял код как написано, но категорий 3-го уровня так и нет(((
    Замена в файлах:
    \catalog\view\theme\default\stylesheet\stylesheet.css
    \catalog\controller\common\header.php
    \catalog\view\theme\default\template\common\header.tpl

    В чем может быть загвоздка?
     
  2. Русский медведь

    Русский медведь Новичок

    Сообщения:
    4
    Симпатии:
    0
    Спасибо за инструкцию. Все получилось. Но мне одного уровня еще не хватает. Как можно сделать 4-х-уровневое меню?
     
  3. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    по аналогии попробовать разобраться. Звучит банально, но пока можно ответить только так.
    Если конечно, кто нибудь не захочет сделать все за вас.
     
  4. Русский медведь

    Русский медведь Новичок

    Сообщения:
    4
    Симпатии:
    0
    Я конечно попробовал по аналогии, но похвастаться к сожалению не чем. :( Мои познания в php пока ограничиваются уровнем:
    Код:
    <?php echo '<p>Привет, мир!</p>'; ?>
    
    Вот так я пробовал добавить 4 уровень вложенности категории:

    В контроллере:
    Код:
    foreach ($children as $child) {
    
               $children_data3 = array(); 
      $children3 = $this->model_catalog_category->getCategories($child['category_id']); 
      
      foreach ($children3 as $child3) {
      $children_data3[] = array(
      'name'  => $child3['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
      'href'  => $this->url->link('product/category', 'path=' . $child['category_id'] . '_' . $child3['category_id']),
      );
      }
    
      $children_data2 = array(); 
      $children2 = $this->model_catalog_category->getCategories($child['category_id']); 
      
      foreach ($children2 as $child2) {
      $children_data2[] = array(
      'name'  => $child2['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''),
      'href'  => $this->url->link('product/category', 'path=' . $child['category_id'] . '_' . $child2['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) . ')' : ''),
      'href'  => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']),
      'children' => $children_data2,
      );
      }
    
    В шаблоне:
    Код:
    <div class="dropdown-inner">
      <?php foreach (array_chunk($category['children'], ceil(count($category['children']) / $category['column'])) as $children) { ?>
      <ul class="list-unstyled">
      <?php foreach ($children as $child) { ?>
      <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a>
      <?php  if ($child['children']) {?>
      <div class="child"><ul class="list-unstyled">
      <?php foreach ($child['children'] as $child) { ?>
      <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a>
      <?php  if ($child['children']) {?>
      <div class="child"><ul class="list-unstyled">
      <?php foreach ($child['children'] as $child) { ?>
      <li><a href="<?php echo $child['href']; ?>"><?php echo $child['name']; ?></a>
      </li>
      <?php } ?>
      </ul></div>
      <?php } ?>
      </li>
      <?php } ?>
      </ul></div>
      <?php } ?>
      </li>
      <?php } ?>
      </ul>
      <?php } ?>
      </div>
    
    Вот только это не работает. Да и было бы удивительно, если бы заработало, ведь это попытка угадать. )) Может кто подскажет как добавить еще один уровень?
     
    Последнее редактирование: 7 мар 2016
  5. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
  6. Русский медведь

    Русский медведь Новичок

    Сообщения:
    4
    Симпатии:
    0
    Спасибо за ссылочку. Рассматривал такой вариант, но такие модули находил только в долларах. Был бы в рублях, купил бы. А при нынешнем курсе за такой модуль, слишком не адекватная цена получается.
     
  7. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    grantstat нравится это.
  8. Mega

    Mega Пользователь

    Сообщения:
    40
    Симпатии:
    2
    На всякий случай сообщу в этой теме, что существует другая по вертикальному меню. Так как варианты изменения дизайна в ряде случаев может быть полезно рассматривать в комплексе.
     
  9. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    Для опен карт 2.3.0.2 Данная инструкция тоже актуальна?
     
  10. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    а вы попробуйте ;)
     
  11. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    В том то и дело, что дважды уже попробовал сделать. - Не работает..... Потому и спросил.
    То ли переделать еще пару разочков)))) то ли все же в 2.3 работать не будет?)
     
  12. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    а что именно не работает? Ошибки или что? Просто неработает, такого не бывает!
     
  13. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    Ошибок нет. Но третья линия не выводится. Соответствующую категорию в админке создал (третьего уровня)
     
  14. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    ну если ошибок нет, тогда тем более странно. Модификаторы обновили? Тема стандартная?
     
  15. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    Да, тема стандартная. Я (дважды) попробовал сначала внести изменения в те три файла, о которых говорилось в начале. Не увидел результата.... Потом взял модуль, который рекомендовали в теме. (Для него требовался vqmod.)
    Модуль внес свои файлы на сервер, отобразился в списке модификаций. Но изменений никаких... Ошибок тоже...
    Магазин: velik.top
     
  16. RoS

    RoS Специалист

    Сообщения:
    227
    Симпатии:
    220
    а вы эти стили добавили в файл stylesheet.css?

    Код:
    .child {display:none;}
    #menu .dropdown-inner ul > li:hover .child {display:block;background: #fff;border: 1px solid #ddd;left: 100%;position: absolute;top: 0;z-index: 9;}
    nav#menu.navbar ul li div.dropdown-menu div ul li {position:relative;}
    В верстке 3 уровень есть на сайте, но т.к. стилей нету, пункт меню выглядит как 2 уровень
     
  17. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    Похоже я не туда вписал...
    Я правильно понимаю, что выше указанный код нужно вписать в конце раздела /* menu */
    перед закрывающей скобочкой??

    Код:
    #menu {
        background-color: #434343;
        background-image: linear-gradient(to bottom, #434343, #4c4c4c);
        background-repeat: repeat-x;
        border-color: #4c4c4c #4c4c4c #434343;
        min-height: 40px;
    }
    #menu .nav > li > a {
        color: #a0eb00;
        text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
        padding: 10px 15px 10px 15px;
        min-height: 15px;
        background-color: transparent;
    }
    #menu .nav > li > a:hover, #menu .nav > li.open > a {
        background-color:#313432;
    }
    #menu .dropdown-menu {
        padding-bottom: 0;
        opacity: 0.95;
    
    
    }
    #menu .dropdown-inner {
        display: table;
    }
    #menu .dropdown-inner ul {
        display: table-cell;
    
    
    }
    #menu .dropdown-inner a {
        min-width: 160px;
        display: block;
        padding: 3px 20px;
        clear: both;
        line-height: 20px;
        color: #434343;
        font-size: 14px;
    }
    #menu .dropdown-inner li a:hover {
        color: #a0eb00;
        background-image: linear-gradient(to bottom, #434343, #303431);
    
    
    }
    #menu .see-all {
        display: block;
        margin-top: 0.5em;
        border-top: 2px solid #DDD;
        padding: 3px 20px;
        -webkit-border-radius: 0 0 4px 4px;
        -moz-border-radius: 0 0 4px 4px;
        border-radius: 0 0 3px 3px;
        font-size: 12px;
    }
    #menu .see-all:hover, #menu .see-all:focus {
        text-decoration: none;
        color: #a0eb00;
        background-color: #434343;
        background-image: linear-gradient(to bottom, #434343, #303431);
        background-repeat: repeat-x;
    }
    #menu #category {
        float: left;
        padding-left: 15px;
        font-size: 16px;
        font-weight: 700;
        line-height: 40px;
        color: #a0eb00;
        text-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
    }
    #menu .btn-navbar {
        font-size: 15px;
        font-stretch: expanded;
        color: #a0eb00;
        padding: 2px 18px;
        float: right;
        background-color: #434343;
        background-image: linear-gradient(to bottom, #434343, #303431);
        background-repeat: repeat-x;
        border-color: #303431 #303431 #434343;
    }
    #menu .btn-navbar:hover, #menu .btn-navbar:focus, #menu .btn-navbar:active, #menu .btn-navbar.disabled, #menu .btn-navbar[disabled] {
        color: #ffffff;
        background-color: #434343;
    }
    @media (min-width: 768px) {
        #menu .dropdown:hover .dropdown-menu {
            display: block;
        }
    }
    @media (max-width: 767px) {
        #menu {
            border-radius: 4px;
        }
        #menu div.dropdown-inner > ul.list-unstyled {
            display: block;
        }
        #menu div.dropdown-menu {
            margin-left: 0 !important;
            padding-bottom: 10px;
            background-color: rgba(0, 0, 0, 0.1);
        }
        #menu .dropdown-inner {
            display: block;
        }
        #menu .dropdown-inner a {
            width: 100%;
            color: #fff;
        }
        #menu .dropdown-menu a:hover,
        #menu .dropdown-menu ul li a:hover {
            background: rgba(0, 0, 0, 0.1);
        }
        #menu .see-all {
            margin-top: 0;
            border: none;
            border-radius: 0;
            color: #fff;
        }
    }
     
    Последнее редактирование модератором: 8 сен 2016
  18. RoS

    RoS Специалист

    Сообщения:
    227
    Симпатии:
    220
    Да
     
  19. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    Спасибо!
    Все работает!
     
  20. bullneformal

    bullneformal Новичок

    Сообщения:
    12
    Симпатии:
    0
    но теперь есть следующий вопрос: в мобильной версии сайта третий уровень меню не отображается. Это из-за не прописанных стилей stylesheet.css или потому что нужно дописывать что-то в header.php и header.tpl?