EasyWeb.org.ua
  • Главная
    • shop-script
    • акции
    • php
    • javascript
    • joomla
    • wordpress
    • docs
    • internet
    • объявления
    • other
  • Вопрос ответ
  • Портфолио
  • Модули
  • Обратная связь
  • О блоге
    • Каталог сайтов
    • Карта сайта
Главная » shop-script » Фильтры в Webasyst Shop-Script
Июл08 61

Фильтры в Webasyst Shop-Script

Опубликовано в shop-script

Всем привет. Хочу поделиться еще одним готовым решением.

А именно фильтром по доп. характеристикам внутри категории

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

Установка:

  • файл function.filtr.php ложим в папку /kernel/includes/smarty/plugins
  • в админке магазина создаем строку перевода (админка — магазин — дизайн — язык и переводы — редактировать перевод) с ID filtr_title
  • в нужном месте (в разметке странице) вставляем вывод этого фильтра {filtr param=’18′}, где 18 — это id вашей доп. характеристики
    Чтобы узнать id вашей доп. характеристики, зайдите в управление Доп. характеристиками в админке и наведите на значек  (удалить) и в статусной строке браузера увидите длинную ссылку, в конце этой ссылки будет что-то типа &optionID=88,  вот 88 и есть наш id

Содержание файла function.filtr.php

<?php
 
function smarty_function_filtr( $params, &$smarty )
{
	$disp='';
	$ids=getid($_GET['categoryID']);
	$s=implode(",",$ids);
 
	if(isset($_GET['categoryID']) && $_GET['categoryID']!=1 && $_GET['categoryID']!=''){
		$sql='SELECT DISTINCT(option_value_ru) as value FROM SC_product_options_values WHERE optionID="'.$params['param'].'" AND productID in ('.$s.')';
		if($r=mysql_query($sql)){
			$disp.='<div class="filtr_box"><h2>'.translate('filtr_title').'</h2><ul class="smenu">';			
			while($res=mysql_fetch_assoc($r)){
				if($res['value']!=''){
					$disp.='<li><a href="/category_search/?search_with_change_category_ability=yes&categoryID='.$_GET['categoryID'].'&search_name=&search_price_from=&search_price_to=&param_'.$params['param'].'='.trim(str_replace(" ", "+", $res['value'])).'&search_in_subcategory=1&advanced_search_in_category=?????">'.trim($res['value']).'</a></li>';
				}
			}
		}
		$disp.='</ul></div>';
	}
 
	return $disp;
 
}
 
function getid($cat){
		$ids=array();
		$sql0='SELECT categoryID FROM SC_categories WHERE parent="'.$cat.'" OR categoryID="'.$cat.'"';
		if($r0=mysql_query($sql0)){
			while($res0=mysql_fetch_assoc($r0)){
				$sql='SELECT productID FROM SC_products WHERE categoryID="'.$res0['categoryID'].'"';
				if($r=mysql_query($sql)){
					while($res=mysql_fetch_assoc($r)){
						$ids[]=$res['productID'];
					}
				}
			}
		}
		return $ids;
	}
?>

Что умеет фильтр и что не умеет:

  1. Если в этой категории таких характеристик нет, то ничего не показывается.
  2. Ищет и в подкатегориях.
  3. Можно использовать неограниенное кол-во фильтров на странице.
  4. Работает с доп. характеристиками, которые вводятся вручную, а не выбираются из списка.
  5. Работает только при включенном ЧПУ.
  6. Если на странице подключены несколько фильтров, то работают они по очереди. То есть выборку можно сделать только по одному из них.
  7. Работает с русскими значениями.
  8. Нужно в редактировании категории найти «Расширенный поиск:» и нажав на «Возможные варианты выбора…», отметить галочкой вашу доп. характеристику.
  9. Для родительских категорий нужно отмечать галочкой «Показывать пользователю продукты из подкатегорий при просмотре этой категории»

Все, чего не хватает, можно доработать в версии Pro.
Для заказа обращайтесь через страницу обратной связи (в сообщении не забывайте указывать какой именно плагин вам нужен).

P.S. Недели через две (а может и раньше) постараюсь описать наиболее используемые таблицы базы данных.

« Предыдущая запись

Горячее предложение от WebComplIT

Следующая запись»

«хочу в подарок» ВКонтакте для Shop-Script



Просмотров: 10 572

Похожие записи:

    61 Коммент.

    1. Fedor | 8 июля 2010 at 18:09

      Спасибо за фильтр, установил отлично, однако чего то при нажатии на с генерированный линк, ничего не фильтруется.
      http://www.sport-lider.com.ua/category_search/category_search/category/individualnye_2p/

      не подскажите в чем проблема ? :)

      спасибо

      Ответить
      • Артем | 8 июля 2010 at 20:59

        совсем забыл))))

        нужно в редактировании категории найти «Расширенный поиск:» и нажав на «Возможные варианты выбора…», отметить галочкой вашу доп. характеристику

        Ответить
        • Fedor | 16 июля 2010 at 11:43

          В том то и дело что я для тестируемых категорий устанавливал доп. параметр. (код обновил)
          Описываю детально настройки:
          1. В доп. характеристика создал параметр «Торговая марка» (айди 18) без возможных вариантов выбора
          2. Установил данную хар-ку для категорий (Орбитреки,Индивидуальные,Профессиональные)
          3. Установил значения для некоторых товаров в этих категориях (Titan, Life Gear)

          Все равно не филтруется :(

          Ответить
          • Fedor | 16 июля 2010 at 13:10

            а… походу у меня навернулся сам скрипт поиска вообще, куда делаются запросы.

            Ответить
    2. Артем | 8 июля 2010 at 21:02

      и обновил немного код php файла

      Ответить
    3. Иван | 11 июля 2010 at 12:13

      Вот только не совсем ясно куда этот код вставлять? Ведь для отдельной категории не получится.

      Ответить
    4. Артем | 11 июля 2010 at 12:32

      вставлять в редакторе дизайна

      Ответить
    5. Иван | 11 июля 2010 at 12:51

      Это понятно, но если на каждую категорию нужен свой набор фильтров, как это можно реализовать?

      Ответить
    6. Иван | 11 июля 2010 at 13:27

      Или как забить эту функцию «filtr» в описание каждой категории? Теоретически если возможно в каждую категорию ставить описания, то может можно поставить и какую нибудь функцию?

      Ответить
    7. Артем | 11 июля 2010 at 21:45

      в опиисание никак. нужно вставлять в шаблон категории

      чтобы для каждой категории использовать свой, то нужно фильтровать по id категории

      {if $smarty.get.categoryID}
      …
      {/if}

      Ответить
    8. Иван | 12 июля 2010 at 16:56

      Странно как то..Вставил {filtr param=’ХХ′} он заработал, но потом резко исчез, и теперь вообще не работает, хотя все доп. характеристики забиты.

      Ответить
    9. Fedor | 17 июля 2010 at 12:03

      Для того, что бы сделать фильтры индивидуальными для каждой категории в которых есть товары, достаточно чуть модифицировать зарос
      $sql=’SELECT DISTINCT(pov.option_value_ru) as value FROM SC_product_options_values AS pov
      INNER JOIN SC_products AS p
      ON p.productID = pov.productID AND p.categoryID = ‘ . $_GET['categoryID'] . ‘
      WHERE pov.optionID=»‘.$params['param'].’»‘;

      Ответить
      • Андрей | 21 июля 2010 at 23:16

        Вы вставляете этот код в файл:function.filtr.php
        Если да, то вот вместо этого: $sql=’SELECT DISTINCT(option_value_ru) as value FROM SC_product_options_values WHERE optionID=»‘.$params['param'].’»‘;

        ?

        Ответить
    10. Fedor | 17 июля 2010 at 12:17

      А для того что бы и в корневых категориях отображались фильтры, делаем так:

      $sql=’SELECT DISTINCT(pov.option_value_ru) as value FROM SC_product_options_values AS pov
      INNER JOIN SC_categories AS c
      ON c.categoryID = ‘ . $_GET['categoryID'] . ‘ OR c.parent = ‘ . $_GET['categoryID'] . ‘
      INNER JOIN SC_products AS p
      ON p.productID = pov.productID AND c.categoryID = p.categoryID
      WHERE pov.optionID=»‘.$params['param'].’»‘;

      Ответить
      • Иан | 17 июля 2010 at 13:43

        Если не сложно, выложите ваш function.filtr.php и строку где у Вас {filtr param=}. Все вставляю, доп характеристики стоят, но самого фильтра нет.

        Ответить
        • Fedor | 19 июля 2010 at 10:51

          Моя функция отличается от функции автора исключительно строкой запроса.
          Возможно вы не туда вставляете вызов фильтра, я вставил в published\SC\html\scripts\repo_themes\tableware\category.tpl и \published\SC\html\scripts\templates\frontend\advanced_search_in_category.tpl

          Ответить
          • Андрей | 21 июля 2010 at 23:24

            Отправьте пожалуйста свой файл function.filtr.php
            Поскольку в комментариях идет не совсем точная передача кода и у меня ругается на ошибку.

            Мой e-mail:prosto-andryxa@i.ua

            Ответить
    11. Евгений | 18 июля 2010 at 15:25

      А я с помощью тэгов и подкатегорий реализовал фильтр товаров.
      Как вариант: http://gosha.com.ua/index.php?categoryID=558&category_slug=bodiki-dlinnye

      Ответить
      • Иван | 18 июля 2010 at 22:21

        Но не когда у тебя таких фильтров нужно 10-15

        Ответить
    12. Андрей | 22 июля 2010 at 0:45

      Также в фильтре есть один значительный глюк:
      Попробуйте отсортировать товары. А потом вам выведет список товаров, удовлетворяющих условию. Нажмите кнопку «Купить», но товар не добавится в корзину.
      Как это решить?

      Ответить
    13. Андрей | 22 июля 2010 at 20:30

      Зачем удалять комментарии?

      Ответить
      • Артем | 24 июля 2010 at 9:03

        Андрей, какой ваш комментарий был удален?
        Может он просто не успел пройти предмодерацию?!
        Теперь ваши комментарии появляются сразу после публикации

        если какой-то комментарий все-таки был удален, значит произошла ошибка. напишите, пожалуйста, его еще раз.
        спасибо

        Ответить
    14. Flip:Who? | 28 июля 2010 at 23:08

      Супер работает, спасибо!!!

      Ответить
    15. Flip:Who? | 29 июля 2010 at 0:15

      Почему-то в каждой категории отображаются все фильтры.
      В category.tpl.html пишу:
      {filtr param=’25′}
      {filtr param=’28′}
      Как описано: «1. Если в этой категории таких характеристик нет, то ничего не показывается.»
      У меня выводятся ВСЕ фильтры.
      Помогите побороть глюк/баг. Спасибо

      Ответить
    16. Артем | 2 августа 2010 at 21:07

      Обновил код плагина

      Ответить
    17. Евгений | 8 августа 2010 at 21:14

      Огромное спасибо, все вышло, фильтры работают.
      Но есть несколько недочетов :(
      Не указывается название параметра(доп. характеристики по которой происходит фильтр)
      Плюс дублируется название указываемое, как заменяемое для «filtr»
      В принципе вещи поправимые :) Думаю если чуток подумать можно забацать очень хорошую штуковину :)

      Ответить
    18. Николай | 24 октября 2010 at 21:28

      Заметил, что если позиция кроме основной категории входит и в дополнительную, то в дополнительной она не фильтруется. Можно как-то исправить?

      Ответить
      • Артем | 24 октября 2010 at 21:34

        нужно включить «показывать в категории продукты из подкатегорий»

        Ответить
        • Николай | 24 октября 2010 at 21:52

          Включено на всех категориях

          Ответить
    19. Дмитрий | 3 декабря 2010 at 10:22

      Хрень кая та а не фильтры, почему до сих пор нет ни одного нормального бесплатного решения. Облазил все форумы — ничего толкового, нашел норм здесь http://forum.webasyst.ru/viewtopic.php?pid=50602#p50602 но стоит 90 баксов, можете разработать чет подобное? чтоб нормально фильтровало

      Ответить
      • Артем | 3 декабря 2010 at 10:29

        почему до сих пор нет ни одного нормального бесплатного решения

        наш народ )

        чего ругаетесь? напишите свое решение.

        подобное можем, бесплатно — только то, что здесь описано.
        описан принцип, а дальше уже каждый делает себе что ему нравится.

        Ответить
        • Дмитрий | 3 декабря 2010 at 11:00

          «будь проклят тот день когда я сел за баранку этого вебасиста»

          Ответить
    20. Srgey | 16 января 2011 at 23:37

      Все сделал как выше описывалось и ничего не выводится :(

      Ps: помогите !!!! ))))

      Ответить
      • Артем | 16 января 2011 at 23:41

        Это решение уже устарело скорее всего.
        На новых обновлениях я его не проверял

        Через месяц или позже будет новый фильтр.

        Ответить
    21. Srgey | 16 января 2011 at 23:56

      да я вот смотрю как в резетке сделано и облизуюсь ))) то что мне надо )))

      Ответить
      • Артем | 17 января 2011 at 0:12

        можете сделать так же или заказать такую доработку :)

        Ответить
    22. Srgey | 17 января 2011 at 0:26

      вот и сижу голову ломаю как так сделать )))

      Ps: мб кто то даст сырой вариант )))) (который надо будет подредактировать)

      Ответить
      • Артем | 17 января 2011 at 0:33

        Спросите у Owox’a, они сейчас занимаются поддержкой розетки)))

        Ответить
    23. Владимир | 20 июля 2011 at 13:59

      Уважаемый Андрей, что Вы можете сказать про WebAsyst версии 3.0x? Станет ли этот фильтр?

      Ответить
      • Артем | 21 июля 2011 at 11:17

        по поводу Андрея не знаю, а я не проверял это решение в обновлениях 300 и выше

        теоретически должно, но не исключено что потребуются небольшие изменения

        Ответить
    24. Роман | 13 августа 2011 at 19:01

      У меня вообще расширенного поиска нет почему то :(
      или я его найти не могу?

      В категории поставил галку расширенный поиск. Выбрал по каким параметрам будет возможен поиск…

      И чет ни че не работает…

      скажите что не так делаю?!

      Ответить
    25. Роман | 14 августа 2011 at 11:59

      Разобрался)
      Теперь у меня другая проблема…

      Описание товара это доп характеристики…

      И почему то.. скрипт их выводит селектами а не простым текстом. Где это можно исправить?

      Ответить
    26. IRIDON | 30 августа 2011 at 18:29

      Вставляю в шаблон {filtr param=’15′} но выводиться только тайтл, доп. характеристики для категории включил. И вот не пойму, Ид нужно просто в апострофах указывать, а то то что я копирую там два разных апострофа, не понятно совсем

      Ответить
      • Артем | 30 августа 2011 at 19:30

        не в апострофах, а в кавычках
        в одинарных или в двойных :)

        Ответить
        • IRIDON | 30 августа 2011 at 19:46

          Попробовал по разному, в двойных скобках тоже, но все равно отображается только тайтл. Версия WA 300

          Ответить
    27. Сергей | 20 сентября 2011 at 14:03

      Встало у кого на 300??

      Ответить
      • IRIDON | 20 сентября 2011 at 14:18

        У меня на 300 так и не заработало

        Ответить
    28. Артем | 20 сентября 2011 at 14:41

      а вопрос заключается в том «заработало» или «встало»?

      а если серьезно, то я уже писал по этому поводу выше в комменатриях
      http://easyweb.org.ua/shop-script/filtry/#comment-715

      Ответить
      • IRIDON | 20 сентября 2011 at 16:02

        А будете дорабатывать? Или решение уже есть но в паблик выкладывать не будет

        Ответить
        • Артем | 20 сентября 2011 at 20:24

          решения пока нет. в планах новое решение фильтров есть
          но пока не готов назвать сроки

          очень надеюсь до нового года, но обещать боюсь

          Ответить
    29. Сергей | 21 сентября 2011 at 7:47

      В любом случае большое спасибо за работу!
      И будем ждать дальнейшей разработки..

      Ответить
    30. Gurvinyk | 26 сентября 2011 at 17:10

      У меня почемуто просто выводит «filtr»…

      Ответить
    31. Сергей | 18 ноября 2011 at 13:21

      На 300 фильтр выводится, но загвоздка в том, что вместо ID бренда выводится само название бренда, если это поправить то все заработает, может кто-то знает как это сделать?

      Ответить
    32. Sergio | 27 января 2012 at 14:35

      Поправьте меня, если я ошибаюсь, но это решение не защищено от SQL инъекций.

      Ответить
      • Sergio | 27 января 2012 at 15:07

        не знаю или на каком нибудь из уровней выполнения кода происходит фильтрация запроса, но я непосредственно при подготовке sql запроса использовал ф-цию mysql_real_escape_string()
        и еще:
        когда название любой доп. характеристики включает в себя название доп.характеристики, по которой производится фильтрация в результате фильтрации (по сути — поиска) получаем желаемые товары + товары с более короткой доп.характеристикой.
        решил изменением строки с запросом в файле published/SC/html/scripts/core_functions/product_functions.php, метод _prepareSearchExtraParameters (убрал знаки %)

        Ответить
      • Артем | 28 января 2012 at 17:05

        да, это решение не защищено
        без дополнительной доработки это решение вообще мало что умеет, это скорее «заготовка»

        Ответить
    33. Сергей | 31 января 2012 at 12:06

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

      Ответить
    34. invole-rc.d | 2 февраля 2012 at 11:34

      Непонятная статья….как будто писалось для себя а не для читателей, пишиите пожалуйста более доходчиво.
      Кстати…впервые столкнулся с вебасистом, раньше делал сайты на престашоп, джумла и опенкарт, немного работал с битрикс, вебассист это полный шлак по сравнению даже с джумлой — ужасная документация, деревянность шаблона и за это еще и платить нужно. Уж лучше заказать нормальный хостинг и поставить magento.

      Ответить
      • Артем | 2 февраля 2012 at 12:01

        как будто писалось для себя а не для читателей, пишиите пожалуйста более доходчиво

        к несчастью, это мой личный блог. и многие записи сделаны действительно для себя.

        попробуйте прочитать статью еше раз или спросить то,что вам не понятно, а не рассказывать о том какая это ужасная система

        Ответить
      • Сергей | 2 февраля 2012 at 14:40

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

        Ответить
    35. Владимир | 2 февраля 2012 at 14:58

      При прямых руках WS отличный движок.

      2invole-rc.d — коль не нравится двиг — какого лешего ты им пользуешься? Бери джумлу с говнокодом и работай. Документации для WS предостаточно на официальном сайте, было бы желание

      P.S. Благодарить должны Артема, за то что он выкладывает полезные дополнения у себя на блоге, тем более бесплатно.

      Ответить

    Оставить комментарий Отменить ответ

    Ваш e-mail не будет опубликован. Обязательные поля помечены *

    *

    *

    Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

    • Twitter
    • Facebook
    • Google
    • RSS

    | |

    Последние комментарии

    • Артем к записи Оплата через LiqPay для Shop-Script
    • Владимир к записи Оплата через LiqPay для Shop-Script
    • The Best к записи Убираем auxpage_ у дополнительныйх страниц
    • Андрей к записи Прием платежей по пластиковым картам в Украине
    • Ирина к записи Партнерская программа. Дорабатываем Webasyst Shop-Script

    Самые комментируемые

    • Автоматическое заполнение рекомендуемых товаров (129)
    • дерево категорий по-своему (shop-script) (127)
    • Фильтры в Webasyst Shop-Script (61)
    • WP Cumulus для Shop-Script исправленный (58)
    • Оплата через LiqPay для Shop-Script (51)
    • WP Cumulus для Joomla и Shop-Script (46)
    • Две цены в WA Shop-Script (46)

    Самые читаемые

    • Фильтры в Webasyst Shop-Script - 10 572 просмотров
    • дерево категорий по-своему (shop-script) - 9 317 просмотров
    • ввод даты, календарь javascript - 8 843 просмотров
    • Бренды в Webasyst Shop-Script - 6 331 просмотров
    • Автоматическое заполнение рекомендуемых товаров - 5 758 просмотров
    • «хочу в подарок» ВКонтакте для Shop-Script - 4 619 просмотров
    • Слайдер в списках продуктов - 4 179 просмотров

    Архивы







    Поддерживать ежемесячно с помощью Donutor

    Свежие записи

    • Новый Год отменяется :(
    • Webasyst Shop-Script новгодняя распродажа
    • новый шаблон
    • BUBA 2011
    • Zend Framework Day 2011

    друзья

    • at-home
    • Fisher — сотовые телефоны
    • WebAsyst
    • WebComplIT
    • Zdorovy.in.ua

    Счетчики

    www.megastock.ru Яндекс.Метрика

    Мета

    • Войти
    • RSS записей
    • RSS комментариев
    • WordPress.org

    © 2008-2012 EasyWeb.org.ua | Дизайн elegantthemes.com | Разработано на CMS WordPress