1

Тема: Фильтр размеров

Создаю размеры товара через комплектации чтобы отслеживать количество размера на складе.
Как можно сделать фильтр по размерам в таком случае?

2

Re: Фильтр размеров

Да, очень актуальный вопрос. Как раз зашел на форум, чтобы его задать, а тут смотрю свежачок!
Действительно, есть ли возможность сделать фильтр по размерам на основе комплектаций?

3

Re: Фильтр размеров

Нет. Надо добавить характеристики для фильтрации именно на вкладку характеристики у самого товара. Т.к. комплектации и товары это разные сущности.

4

Re: Фильтр размеров

Хорошо, добавляем характеристику "размер". Например, у товара есть 3 размера в наличии: 80, 90, 100. Через некоторое время продается комплектация с размером 100, остаток по ней 0. А галочка в характеристиках будет стоять, т.е. будет находить по фильтру, а по факту этого размера не будет (если зайти в карточку товара). Так ведь?

5 Отредактировано Sergey T. (20.07.2016 08:51:02)

Re: Фильтр размеров

Данный функционал очень актуален для магазинов, которые продают одежду и обувь. Чтобы человек, зайдя в каталог товаров, мог выбрать, например, все кроссовки 41 размера и посмотреть, что есть в наличии, а не открывать 100 товаров и проверять его там.

6

Re: Фильтр размеров

Да, да, Сергей, абсолютно верно! wink А у нас из размерного товара - ремни и т.к они укорачиваются, то подойдут и большие размеры, т.е. удобно было бы выбрать и смотреть все размеры, которые больше или равны 100, например.

7

Re: Фильтр размеров

Сейчас у нас ведутся работы в направлении характеристик, мы учтём все Ваши пожелания.

8

Re: Фильтр размеров

А когда планируете завершить? Я к тому предпринимать ли нам какие-то действия или лучше подождать smile

9

Re: Фильтр размеров

Сроки пока неизвестны, что будет в итоге тоже не раскрою, но работа идёт smile Всё инкогнито. Следите за обновлениями. Будет статья.

10

Re: Фильтр размеров

Закусило Александр пишет:

Сроки пока неизвестны, что будет в итоге тоже не раскрою, но работа идёт smile Всё инкогнито. Следите за обновлениями. Будет статья.

Скажите пожалуйста Александр, есть ли на данный момент решение этой задачи?

11

Re: Фильтр размеров

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

12

Re: Фильтр размеров

Представляю количество запросов к базе )) Я делал на сфинксе, любой более менее большой магазин переделывает фильтры на сфинксе либо люцене, на втором фасеточный поиск в апи реализован. Сначала индексация, потом зато одним запросом и очень быстро. Но в реализации дорого, у большинства магазинов выручка меньше, чем зарплата вменяемого программиста.

13

Re: Фильтр размеров

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

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

14

Re: Фильтр размеров

Юрий пишет:

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

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

15

Re: Фильтр размеров

Т.е. чтобы такая штука появилась в RS это нужно вносить глобальные изменения в платформу, одним созданным модулем тут не обойтись? Я с позиции не девелопера, а продвинутого юзера смотрю на всё это.

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

16

Re: Фильтр размеров

Юрий пишет:

Т.е. чтобы такая штука появилась в RS это нужно вносить глобальные изменения в платформу, одним созданным модулем тут не обойтись? Я с позиции не девелопера, а продвинутого юзера смотрю на всё это.

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

В интернете полно статей на эту тему, гуглите самостоятельно.

17

Re: Фильтр размеров

Юрий пишет:

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

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

Это очень напряжный запрос, который очень тяжелый и вызывает подобный гемморой. Не каждый хостинг может обечпечит адекватное время ответа и реакции. даже если кэшировать, то размер кэшей будет неадекватно велик. Это скорее частное решение, а не массовое. Тут нужен хороший сервер для таких вещей. Мы каждый год возвращаемся к этой теме, но порка не готовы представить массовое решение, которое бы нас устроило.

18

Re: Фильтр размеров

Закусило Александр пишет:

Это очень напряжный запрос, который очень тяжелый и вызывает подобный гемморой. Не каждый хостинг может обечпечит адекватное время ответа и реакции. даже если кэшировать, то размер кэшей будет неадекватно велик. Это скорее частное решение, а не массовое. Тут нужен хороший сервер для таких вещей. Мы каждый год возвращаемся к этой теме, но порка не готовы представить массовое решение, которое бы нас устроило.

На самом деле в одном из известных движков это реализовано, начинается на CS, но размеры там атрибутами реализованы.

19 Отредактировано Ярослав (14.12.2017 17:57:35)

Re: Фильтр размеров

Так простое решение есть. Делаем характеристику  "Размеры в наличии". После обмена с 1С ,по cron-у или просто при изменении товара, заполняем данную характеристику значениями исходя из наличия в комплектациях.
И эту характеристику выводите в фильтре, а не настоящий "Размер".

Я делал фильтрацию по росту ползунком "от и до". В каждой комплектации был заполнен "рост от" и "рост до", а у товара выставлялось минимальное и максимальное значение роста для комплектаций в наличии.
Выводил в фильтр просто РОСТ.

   public static function ormAfterwriteCatalogProduct(array $params, \RS\Event\Event $event) {
        if (($params['flag'] == \RS\Orm\AbstractObject::INSERT_FLAG) ||
                ($params['flag'] == \RS\Orm\AbstractObject::UPDATE_FLAG)) { //Если это добавление 
            $min = 99999;
            $max = 0;
            $prop_rfrom = 89; //характеристика - ростовка от
            $prop_rto = 90; //характеристика - ростовка до 
            $prop_rostovka = 'Ростовка'; //характеристика - ростовка
            $product = $params['orm'];

            $offer_api = new \Catalog\Model\OfferApi();
            $offer_api->setFilter(array(
                'sortn:>=' => 0,
                'product_id' => $product['id']
            ));
            $offers = $offer_api->getList();

            foreach ($offers as $offer) {
                if ($offer['num'] > 0) {
                    $data = $offer['propsdata_arr'][$prop_rostovka];
                    if (isset($data)) {
                        $arr = explode('-', $data, 2);

                        if ($arr[0] < $min)
                            $min = preg_replace('/[^0-9]/', '', $arr[0]);
                        if ($arr[1] > $max)
                            $max = preg_replace('/[^0-9]/', '', $arr[1]);
                    }
                   
                }
            }
            if ($max > 0 && $min < 99999 && $max >= $min) {

                //выключаем ростовку от и до 
                \RS\Orm\Request::make()
                        ->delete()
                        ->from(new \Catalog\Model\Orm\Property\Link())
                        ->where("group_id is null")
                        ->whereIn("prop_id", array($prop_rfrom, $prop_rto))
                        ->exec();
                $proplink_table = \RS\Orm\Tools::getTable(new \Catalog\Model\Orm\Property\Link());
                \RS\Db\Adapter::sqlExec("INSERT IGNORE INTO {$proplink_table} (site_id, prop_id, product_id,  val_int, public, xml_id)
               VALUES (1,{$prop_rfrom},{$product['id']},{$min},0,'')");
                \RS\Db\Adapter::sqlExec("INSERT IGNORE INTO {$proplink_table} (site_id, prop_id, product_id,  val_int, public, xml_id)
               VALUES (1,{$prop_rto},{$product['id']},{$max},0,'')");
            }
        }
    }

20

Re: Фильтр размеров

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

21

Re: Фильтр размеров

Да, действительно, перечитал тему, последний вопрос по количеству товара в разрезе размеров.

Ответ был на вопрос:

Данный функционал очень актуален для магазинов, которые продают одежду и обувь. Чтобы человек, зайдя в каталог товаров, мог выбрать, например, все кроссовки 41 размера и посмотреть, что есть в наличии, а не открывать 100 товаров и проверять его там.