Jump to content

Как сделать фильтр товаров чекбоксами


Recommended Posts

код?

Вот код боковой панели

 

{* Шаблон боковой колонки *}


    <div class="row">
        <div class="span3">
 {if $category->brands ||  $features}
<div class="block_listing">    
  <div class="block block-layered-nav">        
    <div class="block-title"><strong>
        <span>Подбор товаров</span></strong>
    </div>        
   <div class="block-content" style="margin:-16px;">                                                
          
      <dl id="narrow-by-list">
{* Фильтр по брендам *}
{if $category->brands}                                                                        
        <dt>Бренды
        </dt>                    
        <dd>
          <ol>    
            <li>                
            <a href="catalog/{$category->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a>             
            </li>
    {foreach name=brands item=b from=$category->brands}
        <li> 
        <a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}" {if $b->id == $brand->id}class="selected"{/if}>{$b->name|escape}</a>
        </li> 
    {/foreach}                
          </ol>
        </dd>
 {/if}


{* Фильтр по свойствам *}
{if $features}       
<div id="features">
    {foreach $features as $key=>$f}
    <dd>
    <ol> 
    <dt class="feature_name" data-feature="{$f->id}">
        {$f->name}:
    </dt>
    
     <li style="margin-left: 8px;"> 
        <a href="{url params=[$f->id=>null, page=>null]}" {if !$smarty.get.$key}class="selected"{/if}>Все</a>
     </li> 
        {foreach $f->options as $o}
     <li style="margin-left: 8px;"> 
        <a href="{url params=[$f->id=>$o->value, page=>null]}" {if $smarty.get.$key == $o->value}class="selected"{/if}>{$o->value|escape}</a>
     </li> 
        {/foreach}
    
    </ol>
        </dd>
    {/foreach}
</div>
{/if}       
                                               
      </dl>            
<script type="text/javascript">decorateDataList('narrow-by-list')</script>                    
    </div>    
  </div>
</div>
{/if}
 

 

Link to post
Share on other sites

Вот у меня так

{* Фильтр по свойствам *}

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
    {$wrapper = '' scope=parent}
{/if}


{literal}
<script>
$("#brands a, .pagination a").live('click', function(){

        var state = {
            title: $(this).attr("title"),
            url: $(this).attr("href")
        }
        history.pushState( state, state.title, state.url );

        // при нажатии back/forward в браузере
        window.onpopstate = function(e){
            get_pagination(this);
            return false;
        }

        get_pagination(this);
        return false;

    });

    function get_pagination(href){

        /*var href = $(this);*/
        var get_link = $(href).attr('href');

        $('#content').css('opacity','0.5');
        $.get(get_link, function(data){
        if(data){
            $('#content').html(data);
            $('#content').css('opacity','1');
            scroll = $('#content').offset().top;
            $('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
          }
        });

    }

</script>

{/literal}





{if $features}
<form method="get" action="{url page=null}"  class="filtr">
	<table id="features">
		<tr>
		{foreach $features as $f}
		
			
			<td class="feature_values">
				<ul>
					{foreach $f->options as $k=>$o}
			                <li style="list-style:none;float:left;margin-right:15px;">
						<label>
							<input type="checkbox" name="{$f->id}[]" onchange="submit(this.form);" {if $filter_features.{$f->id} && in_array($o->value,$filter_features.{$f->id})}checked="checked"{/if} value="{$o->value|escape}" />{$o->value|escape}
						</label>
					</li>
					{/foreach}
				</ul>
			</td>
		
		{/foreach}
		</tr>
	</table>
</form>
{/if}
Link to post
Share on other sites

 

Вот у меня так

{* Фильтр по свойствам *}

{if $smarty.server.HTTP_X_REQUESTED_WITH|strtolower == 'xmlhttprequest'}
    {$wrapper = '' scope=parent}
{/if}


{literal}
<script>
$("#brands a, .pagination a").live('click', function(){

        var state = {
            title: $(this).attr("title"),
            url: $(this).attr("href")
        }
        history.pushState( state, state.title, state.url );

        // при нажатии back/forward в браузере
        window.onpopstate = function(e){
            get_pagination(this);
            return false;
        }

        get_pagination(this);
        return false;

    });

    function get_pagination(href){

        /*var href = $(this);*/
        var get_link = $(href).attr('href');

        $('#content').css('opacity','0.5');
        $.get(get_link, function(data){
        if(data){
            $('#content').html(data);
            $('#content').css('opacity','1');
            scroll = $('#content').offset().top;
            $('html, body').stop().animate({scrollLeft: 0, scrollTop:(scroll-200)}, 500);
          }
        });

    }

</script>

{/literal}





{if $features}
<form method="get" action="{url page=null}"  class="filtr">
	<table id="features">
		<tr>
		{foreach $features as $f}
		
			
			<td class="feature_values">
				<ul>
					{foreach $f->options as $k=>$o}
			                <li style="list-style:none;float:left;margin-right:15px;">
						<label>
							<input type="checkbox" name="{$f->id}[]" onchange="submit(this.form);" {if $filter_features.{$f->id} && in_array($o->value,$filter_features.{$f->id})}checked="checked"{/if} value="{$o->value|escape}" />{$o->value|escape}
						</label>
					</li>
					{/foreach}
				</ul>
			</td>
		
		{/foreach}
		</tr>
	</table>
</form>
{/if}

Спасибо. Сделал по вашему примеру. И заодно множественный выбор сделал. Но теперь дефолтные чекбоксы не нравятся

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
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.

Loading...
×
×
  • Create New...