[Помощь] Сортировка выпадающим списком

sergfes

Постоялец
Регистрация
20 Май 2012
Сообщения
120
Реакции
13
В файле /published/SC/html/scripts/templates/frontend/category.tpl.html вывожу сортировку выпадающим списком:
Код:
{if $string_product_sort}
<b>Сортировать по:˜˜</b>
<select onchange="window.location=this.value">
<option selected="selected">Выберите из списка</option>
<option value="/category/{$selected_category.slug}/">Без сортировки</option>
<option value="/category/{$selected_category.slug}/?sort=name&direction=ASC">Наименованию А-Я</option>
<option value="/category/{$selected_category.slug}/?sort=name&direction=DESC">Наименованию Я-А</option>
<option value="/category/{$selected_category.slug}/?sort=Price&direction=ASC">Цене, сначала дешевые</option>
<option value="/category/{$selected_category.slug}/?sort=Price&direction=DESC">Цене, сначала дорогие</option>
</select>
{/if}

Сортировка прекрасно работает. Но при выборе варианта сортировки после обновления страницы, выбор не запоминается. Собственно вопрос к знатокам: как запилить условие для selected?
У меня есть другое выпадающее меню:
Код:
<form method="post" action="">
    Выводить на странице товаров:
                <select size="1" name="menu1" onchange="submit();" >
            <option value="12" {if $products_per_page=='12'}selected="selected"{/if}>12</option>
            <option value="30" {if $products_per_page=='30'}selected="selected"{/if}>30</option>
            <option value="50" {if $products_per_page=='50'}selected="selected"{/if}>50</option>
            <option value="100" {if $products_per_page=='100'}selected="selected"{/if}>100</option>
        </select>
</form>
Так вот в нем все работает благодаря условиям типа {if $products_per_page=='12'}selected="selected"{/if}
Но сделать так же для сортировки не хватает опыта. Как правильно это сделать? Заранее благодарен за помощь!
 
Как бы я сделал, покопался в {debug} и выяснил, какая переменная меняется при выборе option и составлял условие.
 
Спасибо! щас погуглю куда вставить и пороюсь.
Не получилось найти переменную(
Попробовал как ShopOS сделать вот такое условие:
Код:
<option value="/category/{$selected_category.slug}/?sort=name&direction=ASC" {php}if ($_GET['sort'] == 'name' & $_GET['direction'] == 'asc'){{/php}selected="selected"{php}}{}{/php}>Наименованию А-Я</option>
Но при любой сортировке, оно срабатывает...

Не получается ничего... Прошу знающих помочь :(
 
Последнее редактирование:
Тоже очень интересует решение как присвоить selected активному пункту

Нашел условие с предыдущей версии:

{if $sort == "name" && $direction == "ASC"} selected{/if}

но с ссылками ЧПУ <option value="/category/{$selected_category.slug}/?sort=name&direction=ASC">
оно у меня не срабатывает
Подскажите в чем может быть причина?
 
Последнее редактирование:
у меня реализовано вот так. Первым наперво разметка в шаблоне и условия отображения
HTML:
<select onchange="window.location=this.value" class="select sort_select">
	<option value="{$_category_url}?sort=name&amp;direction=ASC"{if $string_product_sort_row == 'name' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_name_asc'|translate}</option>
	<option value="{$_category_url}?sort=name&amp;direction=DESC"{if $string_product_sort_row == 'name' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_name_desc'|translate}</option>
	<option value="{$_category_url}?sort=Price&amp;direction=ASC"{if $string_product_sort_row == 'Price' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_price_asc'|translate}</option>
	<option value="{$_category_url}?sort=Price&amp;direction=DESC"{if $string_product_sort_row == 'Price' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_price_desc'|translate}</option>
	<option value="{$_category_url}?sort=product_code&amp;direction=ASC"{if $string_product_sort_row eq 'product_code' && $string_product_current eq 'ASC'} selected="selected"{/if}>{'sort_code_asc'|translate}</option>
	<option value="{$_category_url}?sort=product_code&amp;direction=DESC"{if $string_product_sort_row eq 'product_code' && $string_product_current eq 'DESC'} selected="selected"{/if}>{'sort_code_desc'|translate}</option>
</select>
в файле published\SC\html\scripts\includes\category.php
ищем строку
PHP:
$smarty->assign( "string_product_sort", $sort_string );
после нее добавляем
PHP:
$smarty->assign( "string_product_sort_row", $current_sort_field);
$smarty->assign( "string_product_current", $current_sort_direction);

вот и все. Но если необходимо, чтобы можно было сделать такую сортировку и в результатах простого поиска, то в файле published\SC\html\scripts\modules\test\_methods\search_simple.php дописываем тоже самое после такой же строки.
В шаблоне /published/SC/html/scripts/templates/frontend/search_simple.html необходимо дописать вот это
HTML:
<select onchange="window.location=this.value" class="select sort_select">
	<option value="{$smarty.get.ukey}/?searchstring={$searchstring}&amp;sort=name&amp;direction=ASC"{if $string_product_sort_row == 'name' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_name_asc'|translate}</option>
	<option value="{$smarty.get.ukey}/?searchstring={$searchstring}&amp;sort=name&amp;direction=DESC"{if $string_product_sort_row == 'name' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_name_desc'|translate}</option>
	<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=ASC"{if $string_product_sort_row == 'Price' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_price_asc'|translate}</option>
	<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=DESC"{if $string_product_sort_row == 'Price' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_price_desc'|translate}</option>
	<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=product_code&amp;direction=ASC"{if $string_product_sort_row eq 'product_code' && $string_product_current eq 'ASC'} selected="selected"{/if}>{'sort_code_asc'|translate}</option>
	<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=product_code&amp;direction=DESC"{if $string_product_sort_row eq 'product_code' && $string_product_current eq 'DESC'} selected="selected"{/if}>{'sort_code_desc'|translate}</option>
</select>

Для расширенного поиска дописываем в этом файле published\SC\html\scripts\modules\test\_methods\category_search_result.php. Теоретически в шаблоне можно прописать такой же код как для категории. Должно сработать.

ЗЫ у меня добавлена сортировка по артикулу и для выпадающего списка задан свой класс, т.к. идет стилизация селекта. Не забываем менять на свое.
 
Последнее редактирование:
У меня не получалось, пока я в value= и в условии не поставил слово price с учетом регистра. Поставил Price (с большой буквы).
То есть было так:
Код:
<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=ASC"{if $string_product_sort_row == 'price' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_price_asc'|translate}</option>
    <option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=DESC"{if $string_product_sort_row == 'price' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_price_desc'|translate}</option>
А заработало так:
Код:
<option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=ASC"{if $string_product_sort_row == 'Price' && $string_product_current == 'ASC'} selected="selected"{/if}>{'sort_price_asc'|translate}</option>
    <option value="{$smarty.get.ukey}?searchstring={$searchstring}&amp;sort=Price&amp;direction=DESC"{if $string_product_sort_row == 'Price' && $string_product_current == 'DESC'} selected="selected"{/if}>{'sort_price_desc'|translate}</option>
Извините за занудство.
 
Последнее редактирование:
Товарищи, простите за тупизм.

Но не могли бы подробней описать запросы которые будет формировать выпадающий список в других вариантах? Интересуют значение value=" "
 
Назад
Сверху