Перейти к содержимому


Делаем развесистый фильтр товаров (обкатка, написание, дополнения)


  • Вы не можете ответить в тему
Сообщений в теме: 469

#181 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 01 July 2012 - 03:07 PM

еще вопрос- как сделать чтобы фильтр 3 с выпадающими отображался на главной странице сайта

Поищите в этой теме ближе к началу, R.Sergey как-то решал эту проблему. Дело в том, что штатный фильтр написан исходя из условия, что он запускается только в категориях. Т.е. предполагается, что переменная $categiryID с номером выбранной категории всегда установлена в какое-то значение. И еше какие-то грабли были, но я не помню, т.к. сам этого не делал, мне не надо было.

PS. Если коротко, то "надо переделывать, штатно этот фильтр работает только в категориях".
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#182 fractala

    Пользователь

  • Download User
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 01 July 2012 - 03:11 PM

еще какую то ошибку я допустил--фильтр 2 и 3 появились-выбираю параметры поиска -нажимаю искать-ничего не находит ( у товара все характеристики прописаны нормально, 1-ый фильтр ищет без проблем)
  • 0

#183 yura

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 82 сообщений
Репутация: 0
Начинающий

Отправлено 01 July 2012 - 03:15 PM

Сейчас быстренько разберусь.

Разобрался. Дополнения к пункту 5.2:
в файле product_functions.php
в функции GetExtraParametrs
ищем строки

'name' => $_Row['name'],
'option_value' => $_Row['option_value']

и между ними вставляем строки

'brief_show' => $_Row['brief_show'],
'product_show' => $_Row['product_show'],

Теперь галочки "Краткое" и "Полное" в "Характеристиках товаров" работают и в случае задания характеристики произвольной строкой в свойствах товара.

а изменения в п.7 и п.8 стаются в силе или надо обратно откатить? (те, что в посте №174 описаны)
  • 0

#184 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 01 July 2012 - 04:31 PM

а изменения в п.7 и п.8 стаются в силе или надо обратно откатить? (те, что в посте №174 опис

Да. Это были временные изменения, чтобы хоть как-то решить Вашу проблему. Я не рассчитывал, что настолько скоро найдется время (и его понадобится немного) для окончательного решения.

Update: Чуть переделал filter2.tpl.html и filter3.tpl.html на предмет корректного поиска для характеристик, у которых в админке стоит галочка "Строка". Теперь в этом случае в выпадающем списке появляется все тот же список характеристик, но в $_GET передается не номер параметра, а соответствующее строчное его значение. Кто не понял - тому и не надо :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#185 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 02 July 2012 - 12:22 PM

Может, кому интересно будет. Чтобы фильтр не занимал много места на странице, например, если под ним есть еще блоки,которые хотелось бы,чтобы не уползали слишком вниз, можно сделать так,чтобы фильтр сворачивался и разворачивался при нажатии на соотвествующую кнопку.

В файл head.tpl.html обязательно после подключения jquery добавить :

<script type="text/javascript">
{literal}
$(document).ready(function(){
$('.splLink').click(function(){
$(this).parent().children('div.splCont').toggle('normal');
return false;
});
});
{/literal}
</script>

В filter.tpl.html в самом начале добавлем :

<div><input type="button" value="Показать / Скрыть" class= 'splLink'>
Строку :
<div align="left">
меняем на :

<div class="splCont" align="left">
В самом конце добавляем :

</div>
Стили,разумеется,можно сделать по своему. По умолчанию, так :

Файл style.css :

.splCont{
display:none;
border:1px solid #cccccc;
padding:1px 1px;
}
Не судите строго, вариант, уверен, не самый лучший, но зато работает ) Насколько я понимаю, так можно сворачивать любой блок, вставляя код из filter.tpl.html в соответствующий файл блока.
  • 1

#186 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 July 2012 - 02:15 PM

Полезная фишечка. Особенно когда используются все три фильтра. Только зачем вставлять скрипт в head.tpl.html, если он нужен только в фильтре? Я в filter.tpl.html и вставил.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#187 ssergioss25

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 56 сообщений
Репутация: 24
Ассистент
  • ГородСПБ

Отправлено 02 July 2012 - 02:27 PM

Полезная фишечка. Особенно когда используются все три фильтра. Только зачем вставлять скрипт в head.tpl.html, если он нужен только в фильтре? Я в filter.tpl.html и вставил.

Насколько я понимаю, если он стоит в head.tpl.html , то можно так любой блок сделать сворачиваемым. Поправьте, если ошибаюсь.
  • 0

#188 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 02 July 2012 - 03:31 PM

Насколько я понимаю, если он стоит в head.tpl.html , то можно так любой блок сделать сворачиваемым. Поправьте, если ошибаюсь.

Да, именно так. А если только в одном блоке, который показывается не всегда, то логичнее в самом блоке и грузить.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#189 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 05 July 2012 - 11:18 PM

update:
1. Убрал add_fields.php, нужный в самом начале одноразово для создания полей. Теперь наличие нужных полей проверяется в catalog_extra.php, при необходимости они создаются. Т.к. это в админке, то накладные затраты невелики. Код таков:

$fields =array (
array ('Field' => 'filter1', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '1', 'Extra' => ''),
array ('Field' => 'filter2', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '0', 'Extra' => ''),
array ('Field' => 'filter3', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '0', 'Extra' => ''),
array ('Field' => 'filter_string', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '0', 'Extra' => ''),
array ('Field' => 'product_show', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '1', 'Extra' => ''),
array ('Field' => 'brief_show', 'Type' => 'tinyint(1)', 'Null' => 'YES', 'Key' => '', 'Default' => '1', 'Extra' => ''));

$data = mysql_query("desc ".PRODUCT_OPTIONS_TABLE);
while ($row[] = mysql_fetch_assoc($data));
foreach ($fields as $field)
{
$flag = true;
foreach ($row as $cur_row) if ($field['Field'] == $cur_row['Field']) {$flag=false; break;}
if ($flag) mysql_query("ALTER TABLE ".PRODUCT_OPTIONS_TABLE." ADD ".$field['Field']." ".$field['Type']." DEFAULT ".$field['Default']);
}


2. сделал сворачивание фильтра с сохранением в куках, т.е. свернуть или развернуть надо всего один раз, при следующем заходе на сайт или на следующией странице состояние сохраняется. Идея и исходники взяты тут: http://yraaa.ru/publ/3-1-0-1283
Почему-то не сохраняется в IE (хотя сворачивается-разворачивается) и выдает ошибку сценария. Пока не разбирался.
Изменения только в файле filter.tpl.html.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#190 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 06 July 2012 - 03:45 PM

Почему-то не сохраняется в IE (хотя сворачивается-разворачивается) и выдает ошибку сценария. Пока не разбирался.

Все, как всегда, оказалось просто. Файрфокс вполне воспринимает конструкцию a=func('b'), а вот IE подавай var a=func('b'). Исправил.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#191 fractala

    Пользователь

  • Download User
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 10 July 2012 - 10:48 AM

подскажите а как убрать в фильтре в выпадающем списке чтобы не отображалось количество товара -подходящее под данную характеристику

Для пояснения вопроса-приложу скрин
Изображение
  • 0

#192 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 10 July 2012 - 12:24 PM

подскажите а как убрать в фильтре в выпадающем списке чтобы не отображалось количество товара

В файле filter3.tpl.html из {$params[i].variants[j].value} ({$params[i].variants[j].count}) убрать ({$params[i].variants[j].count})
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#193 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 18 July 2012 - 01:43 PM

А у меня характеристики так и не отображаются в фильтре, даже после установки по последней версии.
Взял для интереса другую базу с товарами и, о чудо, характеристики появились!!! Но почему то не все и не во всех категориях.
Есть категории в которых ни одной характеристики в фильтре нет, есть в которых некоторые характеристики есть - но значения для выбора представлены не все.
Кто-нибудь сталкивался с подобным?
Неужели что-то не так с моей базой товаров?
  • 0

#194 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 18 July 2012 - 02:06 PM

Есть категории в которых ни одной характеристики в фильтре нет, есть в которых некоторые характеристики есть - но значения для выбора представлены не все

Если в категории (текущей и дочерних) нет ни одного товара с заданным значением этой характеристики, то в фильтре эта хар-ка представлена не будет. Аналогично и со значениями - если в категории (теущей и дочерних) нет ни одного товара с таким значением характеристики, то в фильтре у характеристики это значение показано не будет. Обратное было бы странно - зачем показывать в фильтре значения и характеристики, для которых заведомо нет ни одного товара?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#195 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 18 July 2012 - 02:16 PM

Если в категории (текущей и дочерних) нет ни одного товара с заданным значением этой характеристики, то в фильтре эта хар-ка представлена не будет. Аналогично и со значениями - если в категории (теущей и дочерних) нет ни одного товара с таким значением характеристики, то в фильтре у характеристики это значение показано не будет. Обратное было бы странно - зачем показывать в фильтре значения и характеристики, для которых заведомо нет ни одного товара?

Абсолютно верно, но я говорю только о отображении тех характеристик и значений, комбинации которых имеются в текущей категории.
  • 0

#196 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 18 July 2012 - 03:16 PM

Абсолютно верно, но я говорю только о отображении характеристик и значений, комбинации которых имеются в текущей категории.

Мне сложно сказать, почему это происходит. На своих сайтах я не сталкивался с таким глюком и ни разу не слышал о нем от кого-либо кроме Вас, а смею думать, что модуль установлен не только у нас двоих. Единственное, пожалуй, чем я могу помочь не обладая даром телепатии - лично посмотреть на Ваш сайт.

PS. А насколько много характеристик и значений? Может, они просто упираются в ограничение LIMIT 1000 в запросе в advanced_search_in_category.php?
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#197 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 18 July 2012 - 03:29 PM

PS. А насколько много характеристик и значений? Может, они просто упираются в ограничение LIMIT 1000 в запросе в advanced_search_in_category.php?


В advanced_search_in_category.php в моем файле установлен LIMIT 200. Но лимит ведь ограничить выборку должен, а не прекратить - у меня ведь на одной базе вообще ни одной характеристики в фильтре не показывается...
  • 0

#198 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 18 July 2012 - 04:32 PM

У меня нет ни малейшего желания разбираться с проблемой, которую я даже в виде общедоступного сайта не вижу.
Пишите админский логин и фтп-доступ в личку, а также конретную ссылку, где что-то не так - я в свободное время посмотрю, почему так происходит. Тратить время на теоретизирование в форуме в данном случае считаю совершенно бессмысленным.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#199 Pascal

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 46 сообщений
Репутация: 13
Начинающий

Отправлено 18 July 2012 - 04:33 PM

У меня такая же трабла на одном из сайтов. Den, у Вас ShopCMS какой версии? не 3.0 случайно?
  • 0

#200 Den

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 117 сообщений
Репутация: 0
Начинающий

Отправлено 18 July 2012 - 04:51 PM

У меня такая же трабла на одном из сайтов. Den, у Вас ShopCMS какой версии? не 3.0 случайно?

Нет, у меня - ShopCMS 3.1

badisoft, отправил Вам ЛС.
  • 0