Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Нужен ли модуль "фильтр в категории" ?


dotsent

Recommended Posts

Так, я уже запуталься...

Значит что я делаю!

Я беру viewtopic.php?f=21&t=876&start=10#p7565 вот отсюдова качаю архив с чистой установкой, после viewtopic.php?f=21&t=876&start=50#p7701 делаю как ты говорил, по идее должно всё работать?

Надіслати
Поділитися на інших сайтах


Так, я уже запуталься...

Значит что я делаю!

Я беру viewtopic.php?f=21&t=876&start=10#p7565 вот отсюдова качаю архив с чистой установкой, после viewtopic.php?f=21&t=876&start=50#p7701 делаю как ты говорил, по идее должно всё работать?

в ЛС я вам в общем-то ответил. если что - стучитесь по указанным контактам.

лишь отмечу здесь, что я там где-то выше писал (возможно - позже того, как опубликовал тот свой fix) - работаю над вручную установленным (архив "Openstore_module_product_filter_1.0_(manual_install).rar") оригинальным модулем

Надіслати
Поділитися на інших сайтах

...ребят, предложение по улучшению функционала:

сделать не только логическое ИЛИ (или то, или то), но и логическое И (и то, и то обязательно) при фильтрации в категории по свойствам товара...

спасибо Alexander Dorogikh и его теме "сложная(?) выборка" :(

для себя я этот вопрос решил ;)

если вкратце, то:

catalog / model / catalog / product.php

было

if (isset($values) && $values != '') {
			$data = array();
			
			foreach (explode('_', $values) as $value_id) {
				$data[] = "value_id = '" . (int)$value_id . "'";
			}
			
			$sql .= " AND p.product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE " . implode(" OR ", $data) . ")";
		}
стало

/*
		if (isset($values) && $values != '') {
			$data = array();
			
			foreach (explode('_', $values) as $value_id) {
				$data[] = "value_id = '" . (int)$value_id . "'";
			}
			
			$sql .= " AND p.product_id IN (SELECT product_id FROM " . DB_PREFIX . "product_to_value WHERE " . implode(" OR ", $data) . ")";
		}
		*/
		if (isset($values) && $values != '') {
				$data = array();
				
				$values_without_underline = "";
				$values_for_IN = "";
				foreach (explode('_', $values) as $value_id) {
					if (empty($values_for_IN)) {
						$values_for_IN = "'".$value_id."'";
					} else {
						$values_for_IN .= ", '".$value_id."'";
					}
					$values_without_underline .= $value_id;
				}
				
				// http://forums.mysql.com/read.php?78,354483,354598#msg-354598
				//(SELECT GROUP_CONCAT(DISTINCT Tag_id ORDER BY Tag_id ASC SEPARATOR '') FROM Tag_has_Post WHERE Post_id=t.Post_id AND Tag_id IN (2,5))='25';
				$sql .= " AND (SELECT GROUP_CONCAT(DISTINCT value_id SEPARATOR '') FROM product_to_value WHERE product_id=p.product_id AND value_id IN (".$values_for_IN."))='".$values_without_underline."'";
			}

= = =

доработок в движке и, собственно, в фильтре - масса.

что / где / как отличается от того, что есть у вас - не знаю.

поэтому за дополнительной информацией по конкретно вашему случаю прошу в ЛС.

можно с альтернативными контактами - jabber / skype / icq

а лучший вариант - дождитесь релиза от liftex

я помогу ему впарить этот FIX в сборку, которую он уже выкладывал.

а может и вовсе пересобрать её в истинно отдельный модуль.

в этом случае будут кардинальные изменения на стороне catalog`a.

Надіслати
Поділитися на інших сайтах

shoma, верите? - в глаза не видел тот модуль :(

ну и соответственно ничего сказать не могу насчет вашего запроса ;)

Надіслати
Поділитися на інших сайтах

а я говорил про "...модуль экспорта и импорта в хмл..." :(

и еще: у меня хроническая неприязнь к XML, как таковому... ;) :D

поэтому лично я - ничего обещать не могу :(

Надіслати
Поділитися на інших сайтах

SooR, так и думал =)

но вернемся к нашим "баранам" - проблема с фильтром в IE.

не работает ни в одной версии из тех, что я проверял

( ;) https://opencartforum.com/viewtopic.php?f=21&t=876&start=60#p7780)

похоже IE напрочь не понимает вот этого:

$('#filters input, #filters select').live('change', function() {
  effects('', 'jump', 'icon', 200);
  //effects('in', 'fade', 'load', 300);
	alert("IE test _live change_"); // нет этого сообщения в IE
	loadContent();
});

Можно было просто заменить строку с 'live' на

$('#filters input, #filters select').change(function() {

в VI-м IE работает. В остальных думаю тоже.

Сделал инсталл таблиц с админки. Отсюда - пропадают проблемы с префиксами.

  • +1 1
Надіслати
Поділитися на інших сайтах

afwollis хорошее решение логики И-И для выборки по одному полю (value_id).

Но столкнулся с проблемой.

GROUP_CONCAT(DISTINCT value_id SEPARATOR '') - здесь сортировка значений не всегда совпадает с $values_without_underline.

Проблема возникает, если параметры фильтра выстроены не по порядку.

В общем, с этим кодом

if (isset($values) && $values != '') {
      
      $values_without_underline = "";
      $values_for_IN = "";
      $values_arr = explode('_', $values);
      asort($values_arr);
      reset($values_arr);
      foreach ($values_arr as $value_id) {
         if (empty($values_for_IN)) {
            $values_for_IN = "'" . $value_id . "'";
         } else {
            $values_for_IN .= ", '" . $value_id . "'";
         }
         $values_without_underline .= $value_id;
      }
      
      $sql .= " AND (SELECT GROUP_CONCAT(DISTINCT value_id ORDER BY value_id ASC SEPARATOR '') FROM " . DB_PREFIX . "product_to_value WHERE product_id = p.product_id AND value_id IN (" . $values_for_IN . ")) = '" . $values_without_underline . "'";
    }
Всё работает безошибочно.

Сортировал массив и получение value_id.

Надіслати
Поділитися на інших сайтах

C развитием модуля можно сделать еще такой полезный функционал:

Добавление одного значения для всех товаров определенного производителя. То есть мы можем выбрать, например, все товары категории "телефоны", где производитель Nokia и поставить значение фильтра "Nokia".

Это позволит быстро сортировать товар по производителю и выбрать все Nokia в категории "Телефоны" на паблик части.

Надіслати
Поділитися на інших сайтах


afwollis хорошее решение логики И-И для выборки по одному полю (value_id).

Но столкнулся с проблемой.

GROUP_CONCAT(DISTINCT value_id SEPARATOR '') - здесь сортировка значений не всегда совпадает с $values_without_underline.

Проблема возникает, если параметры фильтра выстроены не по порядку.

В общем, с этим кодом

if (isset($values) && $values != '') {
      
      $values_without_underline = "";
      $values_for_IN = "";
      $values_arr = explode('_', $values);
      asort($values_arr);
      reset($values_arr);
      foreach ($values_arr as $value_id) {
         if (empty($values_for_IN)) {
            $values_for_IN = "'" . $value_id . "'";
         } else {
            $values_for_IN .= ", '" . $value_id . "'";
         }
         $values_without_underline .= $value_id;
      }
      
      $sql .= " AND (SELECT GROUP_CONCAT(DISTINCT value_id ORDER BY value_id ASC SEPARATOR '') FROM " . DB_PREFIX . "product_to_value WHERE product_id = p.product_id AND value_id IN (" . $values_for_IN . ")) = '" . $values_without_underline . "'";
    }
Всё работает безошибочно.

Сортировал массив и получение value_id.

С этим кодом ловлю егор

Notice: Undefined variable: text_error in /pub/home/santehexpr/htdocs/catalog/view/theme/default/template/product/get_ajax_products.tpl on line 21

И неплохо было бы сделать, чтобы при добавлении к товару опций значение чекбокса было бы нулевым по дефолту

Изображение

Как на сайте по дефолту "Все"

Изображение

А также вот ещё что )))

Изображение

Надіслати
Поділитися на інших сайтах


Можно было просто заменить строку с 'live' на

$('#filters input, #filters select').change(function() {
в VI-м IE работает. В остальных думаю тоже.
Ну, данный вопрос для меня более не актуален =)

К тому же - на#уй IE6.

Сделал инсталл таблиц с админки. Отсюда - пропадают проблемы с префиксами.

эт хорошо

GROUP_CONCAT(DISTINCT value_id SEPARATOR '') - здесь сортировка значений не всегда совпадает с $values_without_underline.

Проблема возникает, если параметры фильтра выстроены не по порядку.

Да, я это понимал, когда менял код.

Но проблему не встречал независимо от порядка, в котором отмечал checkbox`ы. Возможно где-то ранее сортирую массив.

C развитием модуля можно сделать еще такой полезный функционал:

Добавление одного значения для всех товаров определенного производителя. То есть мы можем выбрать, например, все товары категории "телефоны", где производитель Nokia и поставить значение фильтра "Nokia".

Это позволит быстро сортировать товар по производителю и выбрать все Nokia в категории "Телефоны" на паблик части.

Опции данного фильтра тут ни при чем. Вы описали просто выборку по производителям.

Прикрутить её к данному фильтру не сложно.

С этим кодом ловлю егор

Notice: Undefined variable: text_error in /pub/home/santehexpr/htdocs/catalog/view/theme/default/template/product/get_ajax_products.tpl on line 21
line 21:

<?php if (!$categories && !$products) { ?>
    <div class="content"><?php echo $text_error; ?></div>
    <?php } ?>
Ты не получил ни категорий, ни продуктов по выбранным опциям фильтра.

Проверь языковой файл.

Сравни с оригинальным выводом категорий.

И неплохо было бы сделать, чтобы при добавлении к товару опций значение чекбокса было бы нулевым по дефолту...

....Как на сайте по дефолту "Все"

1. На#уй "радикал". Загружай изображения на форум. чтобы скриншоты всегда были доступны.

2. "все" это "пустое значение". не отмечай чекбоксы или допиши функцию (на jQuery), которая будет обнулять группу опций.

А также вот ещё что )))

Про производителей я написал выше.

Про "интеграцию с поиском" сейчас думать не хочется.

Ребят, есть вопрос - сделал выборку по фильтру с перезагрузкой страницы (надо было именно так), теперь немогу сообразить, как сделать, чтобы выбранные опции в модуле отображались и после перезагрузки страницы? Подкиньте идейку, пожалуйста.

MAN PHP POST ARRAY
Надіслати
Поділитися на інших сайтах

Спасибо за подсказку. Почитал я про это всё дело...

не возникало бы вопросов, если бы "...почитал про это всё..." :D

...например 61_25. Как их разделить?..

...Пробовал также и метод $_POST, выводит массив

Array ( [value_id] => Array ( [31] => 65 [29] => ) )
Подскажите, как из него надёргать нужные данные и какой URL с какими переменными задать в action="" в форме? Заранее благодарю за ответы.
что так, что эдак тебе с массивами работать, поэтому разобраться с ними надо.

:geek: php.net

1) php.net: explode();

2) php.net: array и иже с ним.

ну, а конкретно по вопросу:

передавай данные тем же GET и используй функцию #1.

Надіслати
Поділитися на інших сайтах

Нашел вроде багу. При добовления следуюего кода перестает выгружатся Файл ситмап в гугл. :geek: заметил как запросов стало меньше

public function getProductsByCategoryId($category_id, $values, $sort = 'p.sort_order', $order = 'ASC', $start = 0, $limit = 20) {
При удалине $values, файл выгружается :D
Надіслати
Поділитися на інших сайтах

Спасибо SooR модуль хорош и нужный. Особенно понравилось как здесь

http://svobodamusic.net/music происходит вибор темпа слайдером-диапазонов , как такое

сделать для цены? и возможно ли чтоб оно само определяло min и max цену у вибраной категории?

+ ище здесь http://notik.if.ua/ когда ставиш галочку виборка происходит мгновенно.

Можно ли ускорить работу фильтра в OpenCart ?

Надіслати
Поділитися на інших сайтах


Vetal на http://svobodamusic.net/music там даже не модуль, а рекодинг многих файлов, как бы заказ специфический был. Надо унифицировать и слайдеры, и текстовые поля для модуля.

Цены относятся к отдельному полю таблицы product, поэтому если и делать, то в виде отдельной статичной опции в блоке "Фильтр" с включением из админки.

На счет http://notik.if.ua/, здесь не ajax, там просто загружается сразу весь ассортимент продукции, а когда мы выбираем критерии, то просто лишняя скрывается с помощью CSS и идет перераспределение блоков. Плюс в том, что быстро. Минус - если много товаров, то первая загрузка будет долговато.

По этому принципу лучше делать сортировку одностраничной таблицы. Как сделал здесь http://svobodamusic.net/music, или таблицы незначительных данных, деленной на несколько страниц.

Надіслати
Поділитися на інших сайтах

Vetal на http://svobodamusic.net/music там даже не модуль, а рекодинг многих файлов, как бы заказ специфический был. Надо унифицировать и слайдеры, и текстовые поля для модуля.

Цены относятся к отдельному полю таблицы product, поэтому если и делать, то в виде отдельной статичной опции в блоке "Фильтр" с включением из админки.

На счет http://notik.if.ua/, здесь не ajax, там просто загружается сразу весь ассортимент продукции, а когда мы выбираем критерии, то просто лишняя скрывается с помощью CSS и идет перераспределение блоков. Плюс в том, что быстро. Минус - если много товаров, то первая загрузка будет долговато.

По этому принципу лучше делать сортировку одностраничной таблицы. Как сделал здесь http://svobodamusic.net/music, или таблицы незначительных данных, деленной на несколько страниц.

Спасибо за ответ. етот модуль уже окончательная версия или в нем будут изминения?

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

и в етой теме https://opencartforum.com/topic/790-нужен-ли-модуль-фильтр-в-категории/ где то поделись архивы для скачывания, наверное после обновления форума

post-4020-0-43960200-1294220583_thumb.png

Надіслати
Поділитися на інших сайтах


...етот модуль уже окончательная версия или в нем будут изминения?..

это окончательная версия, в которую могут вноситься изменения =)

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

Vetal, это же админка. тут ничего не должно было "меняться".

и в етой теме https://opencartforum.com/topic/790-нужен-ли-модуль-фильтр-в-категории/ где то поделись архивы для скачывания, наверное после обновления форума

написал об этом liftex и SooR в icq.

кто-нибудь из них выложит =)

Надіслати
Поділитися на інших сайтах

Попроси пуская сразу на файловый архив выкладывают. Там версиооность поддерживается и прочие полезности.

Выложу зануленый clear_install(https://opencartforum.com/topic/790-%d0%bd%d1%83%d0%b6%d0%b5%d0%bd-%d0%bb%d0%b8-%d0%bc%d0%be%d0%b4%d1%83%d0%bb%d1%8c-%d1%84%d0%b8%d0%bb%d1%8c%d1%82%d1%80-%d0%b2-%d0%ba%d0%b0%d1%82%d0%b5%d0%b3%d0%be%d1%80%d0%b8%d0%b8/page__view__findpost__p__7414. Но в нем не пофикшены некоторые баги:

работа в IE

Добавление более 4-5 или выше опций к фильтру и чёто там ещё. Архив от 27.11.2010.

В принципе в этом топике достаточно инфы чтобы его доработать.

В архив пусть выложит Soor. У меня рука не поднимется, выложить его модуль в архив =)

Openstore_module_product_filter_1.0_(clean_install).zip

  • +1 1
Надіслати
Поділитися на інших сайтах


afwollis, ага, читал.. нужно именно между опциями "И". внутри одной опции между чекбоксами как и есть - "ИЛИ"

механику, в общем, понял... копаю.

думаю передать обработчику еще и номер опции. а вот с запросом, боюсь, беда будет - не силен в мускле ((

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.