Чтобы сделать фильтр по атрибутам нужно купить/скачать и установить плагин.
Так я думал раньше. Что поменялось теперь и как я оседлал типовые фильтры opencart – читайте дальше.
Для opencart 2.3 и 3.0 вы можете скачать бесплатный фильтр:
2.3 – http://ocroshka.ru/products/prosto-filtr-opencart-2-3/
3.0 – http://ocroshka.ru/products/prosto-filtr-opencart/
Для начала я хорошенько изучил таблицы opencart 2.0, а затем накидал 1,5 десятка простых запросов MySQL, код которых привожу ниже
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
TRUNCATE TABLE tk_filter_group_description; TRUNCATE TABLE tk_filter_group; TRUNCATE TABLE tk_filter; TRUNCATE TABLE tk_filter_description; TRUNCATE TABLE tk_category_filter; TRUNCATE TABLE tk_product_filter; INSERT INTO tk_filter_group_description (filter_group_id, language_id, name) SELECT attribute_id, language_id, name FROM tk_attribute_description; INSERT INTO tk_filter_group (filter_group_id, sort_order) SELECT attribute_id, 0 FROM tk_attribute_description; ALTER TABLE tk_filter ADD name VARCHAR(256); ALTER TABLE tk_filter ADD language_id INT(11); INSERT INTO tk_filter (filter_group_id, sort_order, name, language_id) SELECT attribute_id, 0, text, language_id FROM tk_product_attribute GROUP BY attribute_id,text; INSERT INTO tk_filter_description (filter_id, filter_group_id, language_id, name) SELECT filter_id, filter_group_id, language_id, name FROM tk_filter; INSERT INTO tk_product_filter (product_id, filter_id) SELECT pa.product_id, pf.filter_id FROM tk_product_attribute pa LEFT JOIN tk_filter pf ON pf.name = pa.text AND pf.filter_group_id = pa.attribute_id; ALTER TABLE tk_filter DROP name; ALTER TABLE tk_filter DROP language_id; INSERT INTO tk_category_filter (category_id, filter_id) SELECT pc.category_id, pf.filter_id FROM tk_product_to_category pc LEFT JOIN tk_product_filter pf ON pc.product_id = pf.product_id GROUP BY pc.category_id,pf.filter_id |
И не забудьте поменять префикс tk_ на тот, который установлен в Вашей базе
Недостатков у этого решения много. Список недостатков:
- Нет фильтров для страницы производителя
- Фильтры не отрабатывают на условие “И”, когда выбраны значения из разных групп фильтра, т.е. нельзя отобрать все телефоны с LTE из группы стандарт связи “И” ОС Android из группы ОС. Будет сделана выборка “ИЛИ”
- Нет выбора атрибутов для переноса. Приходиться потом ручками убирать ненужные фильтры.
- Нет ajax обработки установки галочек
И это только то, что сразу бросилось в глаза. Наверняка есть еще и другие. Если Вы знаете о них – пишите в комментариях.
Предчувствуя первый вопрос – хочу сразу на него ответить.
Будет ли это работать в opencart 1.5?
Не знаю, не пробовал. Скорее всего будет после некоторой модификации или без.