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

OCFilter - Модуль фільтру товарів [Поддержка]


SooR

Recommended Posts

Только что, Anothercare сказал:

 

Тоже интересует этот вопрос. Ответьте, пожалуйста! Можно ли сделать фильтр в Производителе?

Есть бош, он делает и дрели, и посудомойку, как будем фильтровать?:)

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


1 час назад, n3bo сказал:

Есть бош, он делает и дрели, и посудомойку, как будем фильтровать?:)

 

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

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


1 минуту назад, Anothercare сказал:

 

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

 

Мне нужно внутри производителя сделать фильтр по линейкам, например линейка средств с алое одного бренда, туда входят товары из разных категорий: крем из категории Кремы, тоник из категории Тоники и т.д.

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


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

не удается создать посадочные страницы

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

Насколько я понял, при наведении на строку категория, должен выпадать список, которые привязывает эти настройки, но у меня этого не происходит

+ ко всему - в строке СЕО текст нет форматирования текста.

Подскажите, как можно решить эту проблему?

 

Опенкарт 2,3 русская сборка

Окфильтр 4.19

https://alexshop.com.ua

скрин настройки:

1.png

2.png

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


Подскажите можно ли как-то это решить?

 

Например есть категория - Стулья.

Есть фильтр: Цвет - коричневый и Цвет - красный

Для обоих фильтров сделала посадочная страница: Стулья красные, Стулья коричневые.

 

Если фильтровать Стулья - красные, то попадаем на страницу. site.ru/stulya/krasnye/

Но если с этой страницы попробовать добавить еще галочку на "красные" (фильтровать красные+коричневые), то происходит редирект на site.ru/stulya/krasnye/

 

Тоесть с адреса site.ru/stulya/cvet/krasnye/korichnevye/ происходит редирект на site.ru/stulya/krasnye/

 

Хотя должна генерироваться страница Стулья красные + коричневы (для которой не настроена СЕО страница)

 

 

Итог: не получается фильтровать 2 посадочные страницы, происходит редирект на ту, которая ближе адресу, то есть с site.ru/stulya/cvet/krasnye/korichnevye/ или site.ru/stulya/cvet/krasnye/zheltye/ на site.ru/stulya/krasnye/

Змінено користувачем dreanei23
Надіслати
Поділитися на інших сайтах

3 часа назад, dreanei23 сказал:

Подскажите можно ли как-то это решить?

 

Например есть категория - Стулья.

Есть фильтр: Цвет - коричневый и Цвет - красный

Для обоих фильтров сделала посадочная страница: Стулья красные, Стулья коричневые.

 

Если фильтровать Стулья - красные, то попадаем на страницу. site.ru/stulya/krasnye/

Но если с этой страницы попробовать добавить еще галочку на "красные" (фильтровать красные+коричневые), то происходит редирект на site.ru/stulya/krasnye/

 

Тоесть с адреса site.ru/stulya/cvet/krasnye/korichnevye/ происходит редирект на site.ru/stulya/krasnye/

 

Хотя должна генерироваться страница Стулья красные + коричневы (для которой не настроена СЕО страница)

 

 

Итог: не получается фильтровать 2 посадочные страницы, происходит редирект на ту, которая ближе адресу, то есть с site.ru/stulya/cvet/krasnye/korichnevye/ или site.ru/stulya/cvet/krasnye/zheltye/ на site.ru/stulya/krasnye/

 

 

В общем сам разобрался, это из-за того, что URL значения cvet/krasnye совпадал с URL СЕО страницы stulya/krasnye

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

Здравствуйте.

 

Пользуюсь фильтром уже давно на Опенкарт 1.5 - всё работает прекрасно. Спасибо разработчику за супер дополнение.

 

Тестирую сейчас версию OcStore 2.3. Установил последнюю версию фильтра. Возможно что то изменилось в структуре. Не могу разобраться как нужно точно им пользоваться. Не хочу нагружать разработчика - у него и так времени очень мало на всех. Помогите разобраться. Возможно я не так что то делаю или модуль криво стал???

 

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

 

Надеюсь понятно изложил вопрос. Спасибо.

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


НА последней закладке есть чекбоксы копировать атрибуты, копировать опции, а чуть ниже кнопка Копировать.

Кстати, ее же надо нажимать, если вы выбираете очистку фильтров.

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


4 минуты назад, jaffagold сказал:

НА последней закладке есть чекбоксы копировать атрибуты, копировать опции, а чуть ниже кнопка Копировать.

Кстати, ее же надо нажимать, если вы выбираете очистку фильтров.

 

Пробовал - не помогает.

В действующем магазине так делаю только тогда - когда впервые оформляю атрибуты. Потом дописываю или редактирую значения этих атрибутов в опциях в фильтре. А в самом товаре - в вкладке "Опции фильтра" - просто выбираю нужные значения и сохраняю товар. Всё работает без дополнительных манипуляций. Щас на новом двиге так не получается.

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


В 04.06.2017 в 09:15, Sergeyy84 сказал:

Подскажите, некоторые атрибуты не нужны (бесполезны) в фильтре (15-20 атрибутов). В настройках фильтра их можно отключить. Но при очистке и копировании атрибутов они снова появляются. И так каждый раз приходится отключать 20-30 атрибутов. Это занятие поднадоело. Реально ли как-то их полностью отключить раз и навсегда?

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

1) в таблице attribute создаем новое поле в конце oc_filter, по умолчанию null
2) attribute_form.tpl перед </form>

		    <div class="form-group">
            <label class="col-sm-2 control-label" for="input-sort-order">Display in oc_filter</label>
            <div class="col-sm-10">
			  
			      <div class="checkbox">
                    <label>
                      <?php if ($oc_filter) { ?>
                      <input type="checkbox" name="oc_filter" value="1" checked="checked" id="input-oc_filter" />
                      <?php } else { ?>
                      <input type="checkbox" name="oc_filter" value="1" id="input-oc_filter" />
                      <?php } ?>
                      &nbsp; </label>
                  </div>
			  
            </div>
          </div>

3) контроллер attribute.php в функции protected function getForm(), после

		if (isset($this->request->post['sort_order'])) {
			$data['sort_order'] = $this->request->post['sort_order'];
		} elseif (!empty($attribute_info)) {
			$data['sort_order'] = $attribute_info['sort_order'];
		} else {
			$data['sort_order'] = '';
		}

вставляем
 

		if (isset($this->request->post['oc_filter'])) {
			$data['oc_filter'] = $this->request->post['oc_filter'];
		} elseif (!empty($attribute_info)) {
			$data['oc_filter'] = $attribute_info['oc_filter'];
		} else {
			$data['oc_filter'] = 0;
		}

4) модель attribute.php
меняем функцию

	public function editAttribute($attribute_id, $data) {
		$this->db->query("UPDATE " . DB_PREFIX . "attribute SET attribute_group_id = '" . (int)$data['attribute_group_id'] . "', sort_order = '" . (int)$data['sort_order'] . "', oc_filter = '" . (int)$data['oc_filter'] . "' WHERE attribute_id = '" . (int)$attribute_id . "'");

		$this->db->query("DELETE FROM " . DB_PREFIX . "attribute_description WHERE attribute_id = '" . (int)$attribute_id . "'");

		foreach ($data['attribute_description'] as $language_id => $value) {
			$this->db->query("INSERT INTO " . DB_PREFIX . "attribute_description SET attribute_id = '" . (int)$attribute_id . "', language_id = '" . (int)$language_id . "', name = '" . $this->db->escape($value['name']) . "'");
		}
	}

 

5) в модели фильтра ocfilter.php
меняем кусок

if (!empty($data['copy_attribute'])) {

..........

 на

    if (!empty($data['copy_attribute'])) {
      $this->db->query("UPDATE " . DB_PREFIX . "product_attribute SET text = TRIM(text)");

      $last_option_id *= 3;
      $last_value_id *= 3;

	  //ocfilter_option+
      $this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option (option_id, status, type, sort_order)      SELECT (attribute_id + '" . (int)$last_option_id . "'), '1' AS status, '" . $this->db->escape($data['copy_type']) . "' AS type, sort_order FROM " . DB_PREFIX . "attribute where oc_filter ='1'");
	  
	  //ocfilter_option_description+
      $this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option_description (option_id, language_id, name) SELECT (ad.attribute_id + '" . (int)$last_option_id . "'), ad.language_id, ad.name FROM " . DB_PREFIX . "attribute_description ad LEFT JOIN " . DB_PREFIX . "attribute att ON (att.attribute_id = ad.attribute_id) where att.oc_filter ='1'");

	  //ocfilter_option_value+
  		$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option_value (option_id, value_id)                                SELECT (pa.attribute_id + '" . (int)$last_option_id . "'), CRC32(CONCAT(pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2)))))                          FROM " . DB_PREFIX . "product_attribute pa 
		LEFT JOIN " . DB_PREFIX . "attribute att ON (att.attribute_id = pa.attribute_id)
		WHERE att.oc_filter ='1' and pa.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2)))");
		
		//ocfilter_option_value_description+
  		$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option_value_description (option_id, value_id, language_id, name) SELECT (pa.attribute_id + '" . (int)$last_option_id . "'), CRC32(CONCAT(pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2))))), pa.language_id, TRIM(pa.text) FROM " . DB_PREFIX . "product_attribute pa 
		LEFT JOIN " . DB_PREFIX . "attribute att ON (att.attribute_id = pa.attribute_id)
		WHERE att.oc_filter ='1' and pa.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2)))");

      $this->load->model('localisation/language');

      $languages = $this->model_localisation_language->getLanguages();

     
//ocfilter_option_value_description+
	 foreach ($languages as $language) {
        if ($language['language_id'] != $this->config->get('config_language_id')) {
      		$this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option_value_description (option_id, value_id, language_id, name)

          SELECT
            (pa.attribute_id + '" . (int)$last_option_id . "'),
            (SELECT
              CRC32(CONCAT(pa2.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa2.text), 1)), LCASE(SUBSTRING(TRIM(pa2.text), 2))))) FROM " . DB_PREFIX . "product_attribute pa2
              WHERE pa2.language_id = '" . (int)$this->config->get('config_language_id') . "'
              AND pa2.product_id = pa.product_id
              AND pa2.attribute_id = pa.attribute_id LIMIT 1
            ) AS value_id, '" . (int)$language['language_id'] . "', CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2)))
          FROM " . DB_PREFIX . "product_attribute pa 
		  LEFT JOIN " . DB_PREFIX . "attribute att ON (att.attribute_id = pa.attribute_id)
		  WHERE att.oc_filter ='1' and  pa.language_id = '" . (int)$language['language_id'] . "' GROUP BY pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2)))");
        }
      }

      
	  //ocfilter_option_value_to_product
	  $this->db->query("INSERT IGNORE INTO " . DB_PREFIX . "ocfilter_option_value_to_product (product_id, option_id, value_id) SELECT pa.product_id, (pa.attribute_id + '" . (int)$last_option_id . "'), CRC32(CONCAT(pa.attribute_id, CONCAT(UCASE(LEFT(TRIM(pa.text), 1)), LCASE(SUBSTRING(TRIM(pa.text), 2))))) AS value_id FROM " . DB_PREFIX . "product_attribute pa 
	  LEFT JOIN " . DB_PREFIX . "attribute att ON (att.attribute_id = pa.attribute_id)
	  WHERE att.oc_filter ='1' and  pa.language_id = '" . (int)$this->config->get('config_language_id') . "'");

      // Separate
      if (!empty($data['ocfilter_attribute_separator'])) {
      	$separator = (string)$data['ocfilter_attribute_separator'];

        $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "ocfilter_option_value_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' AND TRIM(name) LIKE '%" . $this->db->escape($separator) . "%'");

        foreach ($query->rows as $result) {
        	$values = explode($separator, $result['name']);

          foreach ($values as $value) {
            $value = $this->utf8_ucfirst(trim($value));

            if (!$value) {
              continue;
            }

            $value_query = $this->db->query("SELECT value_id FROM " . DB_PREFIX . "ocfilter_option_value_description WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' AND option_id = '" . (int)$result['option_id'] . "' AND LCASE(TRIM(name)) = '" . $this->db->escape(utf8_strtolower($value)) . "'");

            if ($value_query->num_rows) {
              $value_id = $value_query->row['value_id'];
            } else {
        		  $this->db->query("INSERT INTO " . DB_PREFIX . "ocfilter_option_value (option_id) VALUES ('" . (int)$result['option_id'] . "')");

              $value_id = $this->db->getLastId();

              $this->db->query("INSERT INTO " . DB_PREFIX . "ocfilter_option_value_description (option_id, value_id, language_id, name) VALUES ('" . (int)$result['option_id'] . "', '" . $this->db->escape($value_id) . "', '" . (int)$this->config->get('config_language_id') . "', '" . $this->db->escape($value) . "')");
            }

            $this->db->query("INSERT INTO " . DB_PREFIX . "ocfilter_option_value_to_product (product_id, option_id, value_id) SELECT oov2p.product_id, '" . (int)$result['option_id'] . "', '" . $this->db->escape($value_id) . "' FROM " . DB_PREFIX . "ocfilter_option_value_to_product oov2p WHERE oov2p.option_id = '" . (int)$result['option_id'] . "' AND oov2p.value_id = '" . $this->db->escape($result['value_id']) . "'");
          }

          if ($values) {
            $this->db->query("DELETE FROM `" . DB_PREFIX . "ocfilter_option_value` WHERE value_id = '" . $this->db->escape($result['value_id']) . "'");
            $this->db->query("DELETE FROM `" . DB_PREFIX . "ocfilter_option_value_description` WHERE language_id = '" . (int)$this->config->get('config_language_id') . "' AND value_id = '" . $this->db->escape($result['value_id']) . "'");
            $this->db->query("DELETE FROM `" . DB_PREFIX . "ocfilter_option_value_to_product` WHERE option_id = '" . (int)$result['option_id'] . "' AND value_id = '" . $this->db->escape($result['value_id']) . "'");
          }
        }
      }
    }

6) поставить нужные чеки в редактировании аттрибутов

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


13 часов назад, Stendal сказал:

здравствуйте! Кто может уделить 10 минут по скайпу  - не получается коечто по окфильтру.

Товарищи, ну помогите, не можете 10, уделите 7-8 .

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


В 26.07.2017 в 11:51, jaffagold сказал:

Описали бы проблему в теме, давно бы получили ответы.

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

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


Это Характеристики ( атрибуты) товаров.

Вот и создавайте

Группу характеристик

Тип принтера

В этой группе

Струйный, Лазерный монохромный, Лазерный цветной.

В товарах обязательно выбирайте нужный атрибут( характеристику)

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

У вас появится группа фильтров Тип принтера

Попробуйте вручную завести 5-7 товаров пробных и увидите что выйдет

Другой варинат, есть товар, у которого есть несколько вариантов исполнения( например, цветов)

Чернила струйного принтера HP. Их можно заводить как отдельные товары. А можно как один, но опциями ( например ЦВЕТ чернил).

Тогда создаете Опции, тип- Переключатель ( radiobutton), Значения: Черный, Желтый, Голубой, Пурпурный ( можно картинки им подкинуть)

Обязательно отмечаете: обязательная опция.

Тогда в настройках фильтра выбираете копировать опции и у вас появится группа фильтров Цвет. 

Змінено користувачем jaffagold
  • +1 1
Надіслати
Поділитися на інших сайтах


А лучше не слушайте предыдущего человека, а сделайте группу, например "Основные", в ней Атрибут "Тип принтера", а в товаре значение этого атрибута.

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


Можно ли для посадочных страниц добавить чекбокс с выбором индексировать посадочную страницу или нет.

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

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


Добрый день

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

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


Доброго времени суток!

Через поддержку автор пока не ответил, поэтому спрошу, может кто сталкивался (в теме видел эти вопросы, но как решали неизвестно)

1. Вывод хлебных крошек на карточке товара. Кто реализовывал?

2. Добавление товара в карту сайта не работает, не в стандартную, не в любую другую.

 

Версия ос 1.5

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


  • SooR changed the title to OCFilter - Модуль фильтра товаров [Обсуждение]

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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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