Ожидать - не стоит.стоит ли ожидать появления в этом фильтре ползунков задания диапазона значений для дополнительных характеристик
Еще один фильтр. Теперь на AJAX.
#61
Отправлено 18 February 2015 - 02:11 AM
#62
Отправлено 21 February 2015 - 09:58 AM
Надо в filter.php сделать следующую замену:Являюсь счастливым обладателем модуля ЧПУ от Трикивеба. При использовании дефолтного filter.php в выдаче отфильтрованных товаров правильные ссылки на товары вида: сайт.ру/тапки/модные_тапки_123.html заменяются на ссылки вида сайт.ру/category_35/модные_тапки_123.html
# $data = db_query("SELECT categoryID, parent FROM ".CATEGORIES_TABLE);
# while ($row = db_fetch_assoc($data)) $fc[] = $row;
$data = db_query("SELECT categoryID, parent, uri FROM ".CATEGORIES_TABLE);
while ($row = db_fetch_assoc($data)) $fc[$row['categoryID']] = $row;
Остальные закомментированые изменения не нужны, они относятся к другой версии этого ЧПУ.
Более новая версия (только измененные файлы) фильтра.
1. Добавлена фильтрация в результатах работы обычного поиска.
2. Добавлены настройки начального состояния (включен автопоказ или нет, развернут и свернут фильтр, развернуты или свернуты списки вариантов, показывать ли кнопку "Развернуть/Свернуть").
3. Добавлено изменение цвета кнопки "Показать" если хоть одна галка в фильтре выбрана.
4. Наверное, что-то еще, но уже не помню .
Прикрепленные файлы
#63
Отправлено 27 February 2015 - 02:21 PM
тут та же проблема с ЧПУ, что была при фильтрации внутри категории.1. Добавлена фильтрация в результатах работы обычного поиска.
#64
Отправлено 27 February 2015 - 04:36 PM
А без фильтра в результатах работы обычного поиска нет проблемы?тут та же проблема с ЧПУ, что была при фильтрации внутри категории.
PS (Позже, подумавши) Не верю. Не должно быть в данном случае разницы между категорией и поиском. "Фильтрация в результатах поиска" это всего навсего добавление в SQL-запрос в условие WHERE кроме "галочно-фильтровых" условий еще и условия (дополнительное ограничение выборки) из строки поиска.
Для используемого вами модуля ЧПУ исходная неработоспособность фильтра заключалась в отсутствии в SQL-запросе поля uri, где содержался ЧПУ, заменяющий штатную ссылку. Если Вы в этой новой версии добавили поле uri в запрос (я в личке описывал, что на что заменить), то должно работать везде. Если нет, то не должно работать нигде. Но точно не "в категориях работает, а в поиске нет". Мне умозрительно видится так.
Я выкладываю как исходные модули, так и обновления применительно к штатной инсталляции ShopCMS, где никаким ЧПУ и не пахнет. Поэтому проблемы с ЧПУ считаю коммерческими с соответствующим отношением.
#65
Отправлено 28 February 2015 - 02:19 PM
Без фильтрации в результатах поиска проблемы с ЧПУ нет. Но как только меняешь что-то в фильтре - в выдаче в ссылке на товар вместо наименования категории - просто "/category_#категории/". То есть также как было до внесения исправлений в фильтрации внутри категории.Если Вы в этой новой версии добавили поле uri в запрос (я в личке описывал, что на что заменить), то должно работать везде. Если нет, то не должно работать нигде. Но точно не "в категориях работает, а в поиске нет". Мне умозрительно видится так.
.....
Я выкладываю как исходные модули, так и обновления применительно к штатной инсталляции ShopCMS, где никаким ЧПУ и не пахнет. Поэтому проблемы с ЧПУ считаю коммерческими с соответствующим отношением.
Но никаких претензий по работе фильтра к Вам не имею, просто, так сказать, довожу до Вашего сведения
#66
Отправлено 28 February 2015 - 04:50 PM
#67
Отправлено 02 March 2015 - 10:27 AM
Для себя понял, что в результатах поиска фильтр не совсем удобен, поскольку туда подтягивается микс характеристик из разных категорий и только лишний раз может запутать клиента. Поэтому не хочу злоупотреблять Вашей добродетельюЕсли Вы мне снова дадите доступ к сайту, где есть этот ЧПУ, то я посмотрю, в чем там проблема. Обещать не обещаю, но если будет свободная минутка, то почему бы нет? У себя посмотреть не могу, т.к. не пользуюсь этим ЧПУ.
Есть немного другой вопрос, может подскажите. Хочу добавить некий текст, чтобы он появлялся над результатами выдачи фильтра, попытался по аналогии с categoryName, дописать в filter.php:
$smarty->assign( "selected_category.description","Тут текст описания категории после фильтра");Но не сработало
#68
Отправлено 02 March 2015 - 01:00 PM
Тут smarty-синтаксис типа "массив.элемент" не прокатит, это же еще не smarty-шаблон .Хочу добавить некий текст, чтобы он появлялся над результатами выдачи фильтра
$smarty->assign( "selected_category",array('description' => "Тут текст описания категории после фильтра"));
#69
Отправлено 02 March 2015 - 03:54 PM
Однако, туда много не вместишь, поэтому сделал для выдачи отдельный файл шаблона category_filter.tpl.html
И последний вопрос (надеюсь ). Задался целью перенести из блока с фильтром селекты "Сортировка" и "К-во товаров на странице". Из шаблона блока в шаблон категории перенес, селекты появились, но естественно не работают. Трудоемко ли их заставить работать? Или проще через position:absolute в CSS перенести?
#70
Отправлено 02 March 2015 - 04:20 PM
Удобнее всего так:Однако, туда много не вместишь, поэтому сделал для выдачи отдельный файл шаблона category_filter.tpl.html
$smarty->assign( "selected_category",array('description' => $smarty->fetch(filter_description.tpl.html)));Где в filter_description.tpl.html будет шаблон описания (только описания!) хоть на чистом HTML, хоть на Smarty.
А что значит "заставить работать"?Задался целью перенести из блока с фильтром селекты "Сортировка" и "К-во товаров на странице". Из шаблона блока в шаблон категории перенес, селекты появились, но естественно не работают. Трудоемко ли их заставить работать?
Что должны делать селекты от фильтра в шаблоне категории?
#71
Отправлено 02 March 2015 - 04:48 PM
Ну ведь порядок сортировки изначально идет в шаблоне категории (category.tpl.html), плюс его логичнее отображать именно над выводом товаров, а не в блоке фильтра. Да и сам блок разгрузится от лишних опций. Сплошные плюсыА что значит "заставить работать"?
Что должны делать селекты от фильтра в шаблоне категории?
#72
Отправлено 02 March 2015 - 05:21 PM
Что означает "изначально"?Ну ведь порядок сортировки изначально идет в шаблоне категории
Изначально в категории есть своя сортировка, а в фильтре своя (с бОльшим количеством вариантов) и каждая из них относится к своему результату. В категории к списку товаров категории, а в фильтре к результату работы фильтра. В категории тип и порядок сортировки задается путем добавления GET-переменных к запросу и вызывается по ссылке, а в фильтре это POST-переменные, задаваемые сабмитом формы.
Возможно, Вас как-то путает, что для вывода результатов работы фильтра используются штатные шаблоны категории и краткого описания. Так они используются как шаблоны ВЫВОДА РЕЗУЛЬТАТА, не более того. Сама выборка делается абсолютно по разному и разным кодом.
Я с ходу даже придумать не могу, как эти две сортировки объединить для фильтра и категории. Да и зачем? А если фильтр нужен будет не только в категории а и, скажем, на главной странице? Или на любой другой странице, где нет штатных для категории выборов сортировки?
PS. Если хочется в категориях иметь точно такие же селекты выбора сортировки и количества показываемых товаров, то на форуме есть дополнения и для сортировки селектом, и для выбора количества селектом.
#73
Отправлено 02 March 2015 - 07:37 PM
Безусловно!Изначально в категории есть своя сортировка, а в фильтре своя (с бОльшим количеством вариантов) и каждая из них относится к своему результату
Меня не путает, да и было бы странно отфильтрованные результаты выводить, используя другой шаблон. Ведь для посетителя это те же товары какой-либо категории, минус отсеянные по каким-то признакам. И соответственно элементы навигации по ним должны быть идентичны.Возможно, Вас как-то путает, что для вывода результатов работы фильтра используются штатные шаблоны категории и краткого описания. Так они используются как шаблоны ВЫВОДА РЕЗУЛЬТАТА, не более того. Сама выборка делается абсолютно по разному и разным кодом
И в этом нет необходимости. Я всего лишь говорил о возможности переноса их из шаблона фильтра в шаблон отвечающий за вывод отфильтрованных товаров. До работы фильтра отображается дефолтная сортировка, а после применения фильтра на том же месте появляется Ваша сортировка. В результате блок фильтра можно разгрузить от следующих элементов:Я с ходу даже придумать не могу, как эти две сортировки объединить для фильтра и категории. Да и зачем?
- кнопка "Сбросить фильтр" - делаем отображение только при возможности сброса (меняем style="color:grey" на style="display:none")
- делаем галку "Автопоказ" включенной по-умолчанию и убираем ее отображение вместе с кнопкой "Показать" (через тот же display:none)
- переносим селекты "Сортировка" и "На странице" в шаблон над выводом товаров вместо $string_product_sort (как это сделать вот в чем вопрос)
Считаю с точки зрения юзабилити такой вариант предпочтительней.
#74
Отправлено 02 March 2015 - 07:45 PM
Мысль интересная, разумная и на первый взгляд вполне решаемая, хотя я уже вижу подводные камни. Я подумаю над решением.Я всего лишь говорил о возможности переноса их из шаблона фильтра в шаблон отвечающий за вывод отфильтрованных товаров. До работы фильтра отображается дефолтная сортировка, а после применения фильтра на том же месте появляется Ваша сортировка
Ну, Вы ведь знаете мой стандартный ответ на такие сентенции?Считаю с точки зрения юзабилити такой вариант предпочтительней.
Считаешь - сделай. Не можешь, но надо - оплати.
#75
Отправлено 03 March 2015 - 04:33 PM
filter.php:Я подумаю над решением.
# BEGIN переносим сортер в результат фильтра
$smarty->assign( "filtersort",$filtersort);
$smarty->assign( "prdPerPage",$prdPerPage);
$smarty->assign( "string_product_sort",$smarty->fetch('filter_sorter.tpl.html'));
# END переносим сортер в результат фильтра
echo iconv('CP1251','UTF-8',$smarty->fetch("category.tpl.html"));
filter_new.tpl.html
{* BEGIN переносим сортер в результат фильтра *}
{*
<select name="sort">
<option value="{$smarty.const.CONF_DEFAULT_SORT_ORDER}">Сортировка</option>
<option value="Price,name">Цена (возр)</option>
<option value="Price DESC,name">Цена (убыв)</option>
<option value="name,Price">Название</option>
<option value="customers_rating DESC,name,Price">Рейтинг</option>
</select>
<div class="fil"></div>
<select name="prdPerPage">
<option value="{$smarty.const.CONF_PRODUCTS_PER_PAGE}"{if $prdPerPage == $smarty.const.CONF_PRODUCTS_PER_PAGE} selected{/if}>На странице</option>
<option value="10"{if $prdPerPage == 10} selected{/if}>10 товаров</option>
<option value="20"{if $prdPerPage == 20} selected{/if}>20 товаров</option>
<option value="50"{if $prdPerPage == 50} selected{/if}>50 товаров</option>
<option value="100"{if $prdPerPage == 100} selected{/if}>100 товаров</option>
</select>
<div class="fil"></div>
*}
<input type="hidden" name="sort" id="sort" value="{$smarty.const.CONF_DEFAULT_SORT_ORDER}">
<input type="hidden" name="prdPerPage" id="prdPerPage" value="{$smarty.const.CONF_PRODUCTS_PER_PAGE}">
<script type="text/javascript">
{literal}
function sortSubmit(select) {
document.getElementById('sort').value = select.value;
filterSubmit();
}
function perpageSubmit(select) {
document.getElementById('prdPerPage').value = select.value;
filterSubmit();
}
{/literal}
</script>
{* END переносим сортер в результат фильтра *}
Прикрепленные файлы
#76
Отправлено 04 March 2015 - 10:23 AM
UPD: все работает как надо
Кто может у себя проверить это:
Попробовал так сделать у себя: чекбоксы и их описание исчезли, но сам блок с опциями меньше не стал. То ли у меня что-то со стилями, то ли так задумано.Ну, это-то и совсем легко. Например, вместо disable в чекбоксы вписать style="display:none". Но я не уверен, что это полезно - убирать из видимости возможные (при другом наборе галок) варианты.Чтобы неактивные (недоступные для отметки) варианты характеристик фильтра не затемнялись, а вообще пропадали, тем самым не будет ненужных неактивных зон.
UPD:
нашел в чем дело, там после каждого <label></label> идет <br>, поэтому пустые строки отображаются.
#77
Отправлено 14 March 2015 - 09:07 PM
А как на практике это реализовать?делаем галку "Автопоказ" включенной по-умолчанию и убираем ее отображение вместе с кнопкой "Показать" (через тот же display:none)
#78
Отправлено 16 March 2015 - 12:06 PM
в файле filter_new.tpl.html строкаА как на практике это реализовать?
define('FILTERAUTO' ,true); // изначально галка "Автопоказ" установленаи
<label><input type="checkbox" name="filterauto" id="filterauto" value="1"{if $smarty.const.FILTERAUTO} checked{/if}> <b>Автопоказ</b></label>меняем на:
<label style="display:none"><input style="display:none" type="checkbox" name="filterauto" id="filterauto" value="1"{if $smarty.const.FILTERAUTO} checked{/if}> <b>Автопоказ</b></label>
#79
Отправлено 16 March 2015 - 05:33 PM
В файле filter.php перекодировка отключена:
echo $smarty->fetch("filter.tpl.html"); echo $smarty->fetch("category.tpl.html");При этом, если ее включить обратно, то проблема в IE11 исчезает, но соответственно появляется во всех других браузерах.
Более того, IE7 и IE8 вообще отказываются отображать опции фильтра. Отображаются только "Свернуть/Развернуть", "Сбросить" и т.д. до селектов сортировки, а ниже ничего из опций характеристик нет, в т.ч. ползунков цены...
#80
Отправлено 16 March 2015 - 06:00 PM
Тут, скорее, надо разбираться в том, почему оно работает при отключенной перекодировке.В файле filter.php перекодировка отключена:
Результат аякс-запроса должен возвращаться в UTF8. Именно поэтому там и вставлена перекодировка результата обработки смарти-шаблонов, ведь он (результат) в кодировке cp1251.