Jump to content
Sign in to follow this  
s27

[Решено] Стандартный фильтр тип 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>

Share this post


Link to post
Share on other sites

@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);
    });

Share this post


Link to post
Share on other sites

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

 

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

Вместо

Напишите

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

Share this post


Link to post
Share on other sites

Что-то я заработался, какой нафиг 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> оставить.

Share this post


Link to post
Share on other sites

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

filter.push(this.value);

});

 

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

Спасибо большое!!! Все работает!!!

Share this post


Link to post
Share on other sites

можно проще

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>]"

 

Share this post


Link to post
Share on other sites

Спасибо 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>
 

Edited by s27

Share this post


Link to post
Share on other sites

Опять ошибся...

Вместо

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

Добавить

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

Share this post


Link to post
Share on other sites

Сделал и себе фильтр в виде селектов, всплыл следующий вопрос, а как сделать кнопку "ресет", или как добавить в этот список "все товары" 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.