Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Стандартный фильтр тип Checkbox на Select


Recommended Posts

Доброго времени суток всем!

Решил переделать стандартную форму фильтра OsStore 1.5... Хочется видеть выпадающий список (экономия места) вместо длинного check... сделал форму, сменил значение.. теперь список ЕСТЬ, но не работает кнопка ФИЛЬТР.. товар перестал отфильтровываться... Может кто встречался с подобным? Что не так?

 

Переделывался файл catalog\view\theme\default\template\module\filter.tpl

 

Ссылка где можно его увидеть  http://auto575.ru/

 

      <?php foreach ($filter_groups as $filter_group) { ?>
      <span id="filter-group<?php echo $filter_group['filter_group_id']; ?>"><?php echo $filter_group['name']; ?></span>
        <div><select name="$filter[<?php echo $filter_id; ?>]">
          <?php foreach ($filter_group['filter'] as $filter) { ?>
          <?php if (in_array($filter['filter_id'], $filter_category)) { ?>
          
            <option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" selected="selected" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          
          <?php } else { ?>
          
            <option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          
          <?php } ?>
          <?php } ?>
              
      <?php } ?>
    </select></div></form>
    <a id="button-filter" class="button"><?php echo $button_filter; ?></a>
  </div>
</div>
<script type="text/javascript"><!--
$('#button-filter').bind('click', function() {
    filter = [];
    
    $('.box-filter input[type=\'option\']:selected').each(function(element) {
        filter.push(this.value);
    });
    
    location = '<?php echo $action; ?>&filter=' + filter.join(',');
});
//--></script>

Надіслати
Поділитися на інших сайтах


@s27 , так понимаю, вам просто совет нужен? Есть раздел Помощь программистам и разработчикам, там надо было тему создавать.
 

input[type=\'option\']:selected

input type="option" - нет таких элементов, есть Input type='select'.
Вместо

 $('.box-filter input[type=\'option\']:selected').each(function(element) {
        filter.push(this.value);
    });

Напишите

 $('.box-filter input[type=\'select\']).each(function(element) {
        filter.push(this.value);
    });

Надіслати
Поділитися на інших сайтах

@s27 , так понимаю, вам просто совет нужен? Есть раздел Помощь программистам и разработчикам, там надо было тему создавать.

 

input type="option" - нет таких элементов, есть Input type='select'.

Вместо

Напишите

Спасибо за подсказку, буду знать где публиковать такие темы. Поправил, но фильтр так же не срабатывает, не отфильтровывает по результату.. Что может быть еще не так?

Надіслати
Поділитися на інших сайтах


Что-то я заработался, какой нафиг input type=select))) Такого тоже нет) Вот так правильно:

$('.box-filter select option:selected').each(function(element) {

filter.push(this.value);

});

И вот это

<select name="$filter[<?php echo $filter_id; ?>]">

заменить на

<select name="filter[<?php echo $filter['filter_id']; ?>]">

Хотя там по идее name и не нужен, можно просто <select> оставить.
Надіслати
Поділитися на інших сайтах

можно проще

location = '<?php echo $action; ?>&' + $('.box-filter :input').serialize();

только name value задать нормальные. и без ошибок

"$filter[<b>Notice</b>: Undefined variable: filter in <b>/var/www/vhosts/auto575.ru/httpdocs/catalog/view/theme/default/template/module/filter.tpl</b> on line <b>9</b>]"

 

Надіслати
Поділитися на інших сайтах

Спасибо freelancer and efremovav

можно проще

location = '<?php echo $action; ?>&' + $('.box-filter :input').serialize();

только name value задать нормальные. и без ошибок

 

Значения заданы вроде правильно, ошибку эту видел, не могу понять в чем дело...

И теперь при добавлени новой группы фильтра приклеивается следующая строка http://auto575.ru/index.php?route=product/category&path=82

Исходник полностью выглядит сейчас так:

<div class="box">
  <div class="box-heading"><?php echo $heading_title; ?></div>
  <div class="box-content">
    <div class="box-filter">
      
        
      <?php foreach ($filter_groups as $filter_group) { ?>
      <span id="filter-group<?php echo $filter_group['filter_group_id']; ?>"><?php echo $filter_group['name']; ?></span>
        <div><select name="$filter[<?php echo $filter['filter_id']; ?>]">
          <?php foreach ($filter_group['filter'] as $filter) { ?>
          <?php if (in_array($filter['filter_id'], $filter_category)) { ?>
          
            <option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" selected="selected" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          
          <?php } else { ?>
          
            <option value="<?php echo $filter['filter_id']; ?>" id="filter<?php echo $filter['filter_id']; ?>" />
            <label for="filter<?php echo $filter['filter_id']; ?>"><?php echo $filter['name']; ?></label>
          
          <?php } ?>
          <?php } ?>
              
      <?php } ?>
    </select></div></form>
    <div style="padding: 6px; text-align: right;"><a id="button-filter" class="button"><?php echo $button_filter; ?></a></div>
  </div>
</div>
<script type="text/javascript"><!--
$('#button-filter').bind('click', function() {
    filter = [];
    
    $('.box-filter select option:selected').each(function(element) {
        filter.push(this.value);
    });
    
    location = '<?php echo $action; ?>&filter=' + filter.join(',');
});
//--></script>
 

Змінено користувачем s27
Надіслати
Поділитися на інших сайтах


  • 10 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.