Показать/скрыть характеристики в фильтре

  • 7 Ответов
  • 240 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн stparts

Помогите реализовать показ фильтра характеристик по кнопке. Что-бы параметры фильтра были скрыты пока не раскроешь один из нужных фильтров.
Скрыть мне их удалось, но при раскрытии любой из них, у меня отображается всегда первая характеристика, остальные не отображаются.
Что я сделал:
Добавил в шаблон скрипт
<script type="text/javascript">
               function showHide(element_id) {
                
                if (document.getElementById(element_id)) {
                    
                    var obj = document.getElementById(element_id);
                  
                    if (obj.style.display != "block") {
                        obj.style.display = "block";
                    }
                    else obj.style.display = "none";
                }
                
                else alert("Элемент с id: " + element_id + " не найден!");
            }  
        </script>

Вот так выглядит код отвечающий за характеристики в фильтре.
<div class="filter_characteristic">
        <?php foreach($characteristic_displayfields as $ch_id){?>  
            <?php if (is_array($characteristic_fieldvalues[$ch_id])){?>
        
<a href="javascript:void(0)" onclick="showHide('characteristic_name')"><?php print $characteristic_fields[$ch_id]->name;?><br/><br/>
        <div id="characteristic_name" style="display: none;">
                 <div class="characteristic_name"><?php print $characteristic_fields[$ch_id]->name;?></div>
                <input type="hidden" name="extra_fields[<?php print $ch_id?>][]" value="0" />            
                <?php foreach($characteristic_fieldvalues[$ch_id] as $val_id=>$val_name){?>
                     <label><span class="button_checkbox"><input type="checkbox" hidden name="extra_fields[<?php print $ch_id?>][]" value="<?php print $val_id;?>" <?php if (is_array($extra_fields_active[$ch_id]) && in_array($val_id$extra_fields_active[$ch_id])) print "checked";?> onclick="document.jshop_filters.submit();" /> <span><?php print $val_name;?></span></span></label>



                <?php }?>
            <br/></div>
            <?php }?>
        <?php }?>
        </div></div>
За скрытие блока отвечает
<a href="javascript:void(0)" onclick="showHide('characteristic_name')"><?php print $characteristic_fields[$ch_id]->name;?><br/><br/>
        <div id="characteristic_name" style="display: none;">


При просмотре в фаербаге видно, что под каждым спойлером скрыт необходимый кусок кода, но отображается не то пальто.
Пример работы на http://авто-формула.рф/магазин/моторные-масла

*

Оффлайн Serg_

  • ***
  • 175
  • [+]24 / [-]1
  • Skype: smile_bot (Запорожье)
    • Просмотр профиля
Что-то Вы наворотили.
Все блоки с характеристиками имеют одинаковый id
<div [b]id="characteristic_name"[/b] style="display: none;">Дальше даже не смотрел.
На сайте подключается бутстрап. Используйте collapse

вот пример http://www.w3schools.com/Bootstrap/bootstrap_collapse.asp

*

Оффлайн stparts

collapse делает то же самое

Цитировать
<div class="filter_characteristic">
        <?php foreach($characteristic_displayfields as $ch_id){?>   
            <?php if (is_array($characteristic_fieldvalues[$ch_id])){?>
        <a href="#demo" data-toggle="collapse"><?php print $characteristic_fields[$ch_id]->name;?></a>
           <div id="demo" class="collapse">
                 <div class="characteristic_name"><?php print $characteristic_fields[$ch_id]->name;?></div>
                <input type="hidden" name="extra_fields[<?php print $ch_id?>][]" value="0" />           
                <?php foreach($characteristic_fieldvalues[$ch_id] as $val_id=>$val_name){?>
                     <label><span class="button_checkbox"><input type="checkbox" hidden name="extra_fields[<?php print $ch_id?>][]" value="<?php print $val_id;?>" <?php if (is_array($extra_fields_active[$ch_id]) && in_array($val_id, $extra_fields_active[$ch_id])) print "checked";?> onclick="document.jshop_filters.submit();" /> <span><?php print $val_name;?></span></span></label>


                <?php }?>
            <br/></div>
            <?php }?>
        <?php }?>
        </div>

*

Оффлайн Serg_

  • ***
  • 175
  • [+]24 / [-]1
  • Skype: smile_bot (Запорожье)
    • Просмотр профиля
у вас в цикле формируются ссылки с одинаковым id
только если раньше это было
<div id="characteristic_name" style="display: none;">то теперь
<div id="demo" class="collapse">сделайте в цикле разные id и будет работать

*

Оффлайн nevigen

  • *****
  • 9340
  • [+]771 / [-]17
  • http://n*****n.com
    • Просмотр профиля
    • Nevigen.com -разработки для Joomla
добавляйте в конец каждого ИД, например вывод ИД характеристики. как для блока так и для функции тугла.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

Оффлайн stparts

Может кто-то готов помочь за определённое вознаграждение?
Моих знаний не достаточно.

*

Оффлайн nevigen

  • *****
  • 9340
  • [+]771 / [-]17
  • http://n*****n.com
    • Просмотр профиля
    • Nevigen.com -разработки для Joomla
<div id="caharct_<?php echo $ch_id?>" class="collapse">
....
</div>

по идее блоки будут уникальны.
есно и открывать их теперь надо по такому же ИД.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !

*

Оффлайн stparts

Большое спасибо. Заработало)))
<a href="#demo<? echo $ch_id ?>" data-toggle="collapse"><?php print $characteristic_fields[$ch_id]->name;?></a>
           <div id="demo<? echo $ch_id ?>" class="collapse">