Выпадающая сортировка товара
Сортировка товара в магазине Shop-Script как на сайте М.видео. Особенность - разделение кнопок на по возрастанию и по убыванию.
Html/smarty
<!-- sorting --> {$sort_fields = [ 'price' => 'По цене', 'name' => 'По названию', 'total_sales' => 'По хитам']} {if !isset($active_sort)} {$get = waRequest::get()} {$active_sort = ifset($get['sort'], 'create_datetime')} {$active_order = ifset($get['order'])} {$sort_order = "`$active_sort`_`$active_order`"} {/if} <form method="get" action="{$category.og.url}" data-loading="{$wa_parent_theme_url}/img/loading32.gif"> <input type="hidden" name="sort" /> <input type="hidden" name="order" /> <!-- Нужны в случае аякс --> <input type="hidden" name="page" value="{ifset($wa->get('page'), '')}" /> <input type="hidden" name="query" value="{ifset($wa->get('query'), '')}" /> <input type="hidden" name="list" value="{ifset($wa->get('list'), '')}" /> <div class="select-sorting"> <ul class="sorting drop"> {if !empty($category) && !$category.sort_products} <li{if !$active_sort} class="selected"{/if}> <a href="{$wa->currentUrl(0, 1)}"> <i class="sort-asc"></i> По популярности </a> </li> {/if} {foreach $sort_fields as $sort => $name} <li{if $sort_order == "`$sort`_asc"} class="selected"{/if} data-sort="{$sort}" data-order="asc"> <a href="?sort={$sort}&order=asc"> <i class="sort-asc"></i> {$name} </a> </li> <li{if $sort_order == "`$sort`_desc"} class="selected"{/if} data-sort="{$sort}" data-order="desc"> <a href="?sort={$sort}&order=desc"> <i class="sort-desc"></i> {$name} </a> </li> {if $active_sort == $sort} {$active_name = $name} {/if} {if $wa->get('sort') == $sort} {$wa->title( $wa->title()|cat:' - '|cat:$name)} {/if} {/foreach} </ul> <div class="slct nowrap"> {if ifset($active_name)} <i class="sort-{if $active_order == "desc"}desc{else}asc{/if}"></i> {$active_name} {else} <i class="sort-asc"></i> По популярности {/if} </div> </div> </form>
Js
$(document).ready(function(){ //PRODUCT SORTING $('body').on('click', '.sorting a', function(){ $this = $(this); sort = $this.parent().data('sort'); order = $this.parent().data('order'); $this.parent().addClass('selected').siblings().removeClass('selected'); $('input[name="sort"]').val(sort); $('input[name="order"]').val(order); if ($('.filters.ajax').length){ ajax_form_callback_mega($('.filters.ajax form').closest('form'), true); } else { ajax_form_callback_mega($(this).closest('form'), true); } return false; }) // Select $('body').on('click', '.select-sorting', function() { var dropBlock = $(this).find('.drop'); if( dropBlock.is(':hidden') ) { dropBlock.slideDown(200); $(this).addClass('active'); dropBlock.find('li').click(function(){ var preResult = $(this).html().replace(/<a>(.*?)<\/a>/,""), selectResult = $(preResult).html(); $(this).parent().parent().removeClass('active').find('.slct').html(selectResult); dropBlock.slideUp(200); }); } else { $(this).removeClass('active'); dropBlock.slideUp(200); } return false; }) .on('click', function(e) { $('.select-sorting.active').removeClass('active').find('.drop').slideUp(200); }); });
Просмотры: 972