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

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

Повысить оценку Понизить оценку

2

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

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

Повысить оценку Понизить оценку

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, например.

Повысить оценку Понизить оценку

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

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

8

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

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

Повысить оценку Понизить оценку

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

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

10

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

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

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

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

Повысить оценку Понизить оценку

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

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

12

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

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

Повысить оценку Понизить оценку

13

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

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

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

Повысить оценку −1 Понизить оценку

14

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

Юрий пишет:

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

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

Повысить оценку −1 Понизить оценку

15

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

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

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

Повысить оценку 0 Понизить оценку

16

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

Юрий пишет:

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

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

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

Повысить оценку −1 Понизить оценку

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

Юрий пишет:

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

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

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

18

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

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

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

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

Повысить оценку −1 Понизить оценку

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,'')");
            }
        }
    }

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

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

21

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

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

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

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