Категориии, раскрытие подкатегорий при нажатии

Тема в разделе "Общие вопросы", создана пользователем ddd, 24 янв 2018.

  1. ddd

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

    Сообщения:
    84
    Симпатии:
    4
    Ситуация следующая нужно сделать так ,или модулем или каким то решением
    есть с коробки модуль категории нужно что бы при нажатии на родительськую категорию разкрывался список под категорий ,(БЕЗ ПЕРЕЗАГРУЗКИ СТРАНИЦЫ) а при переходе на страницу под категорий список не сворачивался , помогите пожалуста ! Версия опенкарт 2.3
     
  2. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Это заказ на работу что ли? Не понял? И более внятно называйте тему..если это не работа.

    На форуме были темы о том как сделать раскрывающие категории, есть модули в готовых решениях.. в темах тоже было.
    Есть модуль в магазине http://shop.opencart-russia.ru/yumenu
     
  3. ddd

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

    Сообщения:
    84
    Симпатии:
    4
    Вот файл category.tpl
    Код:
    <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']; ?><i data-toggle="collapse" data-parent="#accordion" href="#<?php echo $category['category_id']; ?>" class="indicator glyphicon glyphicon-triangle-bottom pull-right"></i></a>
      <div id="<?php echo $category['category_id']; ?>" class = "panel-collapse collapse">
                    <?php foreach ($category['children'] as $child) { ?>
                        <?php if ($child['category_id'] == $child_id) { ?>
                            <a href="<?php echo $child['href']; ?>" id="accordion-body" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
                        <?php } else { ?>
                            <a href="<?php echo $child['href']; ?>" id="accordion-body" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
                        <?php } ?>
                    <?php } ?>
                  <!--  <a href="<?php echo $category['href']; ?>" class="list-group-item">Все<?php echo $category['name']; ?></a>-->
                </div>
      <?php } else { ?>
      <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
      <?php } ?>
      <?php } ?>
    </div>
    <script>
    function toggleTriangle(e) {
        $(e.target)
            .prev('.panel-heading')
            .find("i.indicator")
            .toggleClass('glyphicon-triangle-bottom glyphicon-triangle-top');
    }
    $('#accordion').on('hidden.bs.collapse', toggleTriangle);
    $('#accordion').on('shown.bs.collapse', toggleTriangle);
    </script>
    Но мне нужно что бы он не закрывал под категории при переходе (тоесть при нажатии на стрелку категории должны окрыаться как сейчас ноо при переходе на под категорию ,они должны быть открыты )
    вот мой сайт http://ttt.s-host.net/tverdye/pod-kategorija-13
     
  4. Vlad

    Vlad Эксперт

    Сообщения:
    4.129
    Симпатии:
    999
    Что бы не закрывал, фильтруйте по текущему id категории и ставьте соответсвующий класс типа open
     
  5. ddd

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

    Сообщения:
    84
    Симпатии:
    4
    Посоветовали сделать проверку на jq и добавлять бутстаповский клас *in *
    Вот выложу может кому то будет нужно
    Код:
    <div id="accordion">
    <div class="panel list-group">
      <?php foreach ($categories as $category) { ?>
        <?php if ($category['children']) { ?>
            <?php if ($category['category_id'] == $category_id) { ?>
                <a class="list-group-item panel-heading active" href="<?php echo $category['href']; ?>" style="display: flex;align-items: center;justify-content: space-between;" ><?php echo $category['name']; ?><i data-toggle="collapse" data-parent="#accordion" href="#<?php echo $category['category_id']; ?>" class="indicator glyphicon glyphicon-triangle-bottom pull-right" style="font-size: 22px;"></i></a>
            <?php } else { ?>
                <a class="list-group-item panel-heading" href="<?php echo $category['href']; ?>" style="display: flex;align-items: center;justify-content: space-between;"><?php echo $category['name']; ?><i  data-toggle="collapse" data-parent = "#accordion" href="#<?php echo $category['category_id']; ?>" class="indicator glyphicon glyphicon-triangle-bottom pull-right" style="font-size: 22px;"></i></a>
            <?php } ?>         
                <div id="<?php echo $category['category_id']; ?>" class = "panel-collapse collapse">
                    <?php foreach ($category['children'] as $child) { ?>
                        <?php if ($child['category_id'] == $child_id) { ?>
                            <a href="<?php echo $child['href']; ?>" id="accordion-body" class="list-group-item active">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
                        <?php } else { ?>
                            <a href="<?php echo $child['href']; ?>" id="accordion-body" class="list-group-item">&nbsp;&nbsp;&nbsp;- <?php echo $child['name']; ?></a>
                        <?php } ?>
                    <?php } ?>
                  <!--  <a href="<?php echo $category['href']; ?>" class="list-group-item">Все<?php echo $category['name']; ?></a>-->
                </div>
        <?php } else { ?>
            <?php if ($category['category_id'] == $category_id) { ?>
                <a href="<?php echo $category['href']; ?>" class="list-group-item active"><?php echo $category['name']; ?></a>
            <?php } else { ?>
                <a href="<?php echo $category['href']; ?>" class="list-group-item"><?php echo $category['name']; ?></a>
            <?php } ?>
        <?php } ?>
      <?php } ?>
    </div>
    </div>
    <script>
    function toggleTriangle(e) {
        $(e.target)
            .prev('.panel-heading')
            .find("i.indicator")
            .toggleClass('glyphicon-triangle-bottom glyphicon-triangle-top');
    }
    $('#accordion').on('hidden.bs.collapse', toggleTriangle);
    $('#accordion').on('shown.bs.collapse', toggleTriangle);
    
    if ( $(".list-group-item").hasClass("active") ) {
     $(".active").parent().addClass('in');
    }
    </script>
     
  6. orqaok

    orqaok Новичок

    Сообщения:
    2
    Симпатии:
    0
    Спасибо за решение, подскажите как сделать что бы при активной категории список с дочерними был раскрыт?