Установка характеристик с помощью API

Всем добрый вечер!

Как с помощью API установить для товара выбор характеристик (Размер и цвет), см. скриншот?

Пробовал методы shop.product.skus.add, shop.product.update, shop.product.skus.update:

'features_selectable[size]' => 'L',

'features_selectable[tsvet]' => 'Зеленый'

Но ничего не получается.

Буду признателен за помощь!

1 ответ

  • 1

    АПИ и характеристики - это боль

    Уже поднимал вопрос. Ответ вэбасиста - пилите свое АПИ

    • +1
      Nikk99rus Nikk99rus 9 декабря 2015 16:15 #

      Да, я уже понял, что придется допиливать API самому. Для проекта уже делаем свое, но просто странно, что на такие очень важные мелочи разработчик внимание не обращает.

    • +1

      Можно узнать, где такой ответ вы получили? И желательно точную цитату, а не переиначенную вашим восприятием.

      • +1

        Цитирую:

        Леонид Вакуленко Webasyst 24 июня 2015 13:51 # Реальность жизни такова, что имеющимся API к магазину никто не пользуется. Поскольку им никто не пользуется (и не пинает вебасист), его никто не дорабатывает. Поскольку его никто не дорабатывает, он остаётся в плачевном состоянии. А поскольку он в плачевном состоянии, им никто не пользуется... Практика показала, что сторонние разработчики предпочитают написать свой плагин, который предоставит наружу нужные контроллеры для получения данных. И продавать этот свой плагин. И, честно говоря, я могу понять такую точку зрения.

        ну и ссылочка на тему

        • +1

          Во-первых, в той теме не нашёл ответа пилите своё API именно по этому вопросу, да и вообще пилите своё API.
          Там идёт лишь констатация факта, что большинство разработчиков даже не пытается использовать API, а пишут свои плагины, в связи с чем реальных использований API довольно мало, а потому оно особо и не развивается, т.к. почти никто ничего не просит.
          Во-вторых, мнение отдельного разработчика != "ответ Вебасиста".




          • +1

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

            Вопрос АПИ поднимается далеко не первый раз, и этот пост единственный, в котором есть ответ Webasyst по сути.

            Если я ошибаюсь - ну так дайте расширенный ответ, напишите, что собираетесь его пилить, или уже пилите! А то != и все....

            Опровергать - это здорово. Констатировать факты - сложнее.

            Дайте совет: Вот что делать? ждать, пока Вы выпустите обновленный АПИ? или все-таки "пилите, Шура, плите..."?

            • +1

              Исправлено на github: https://github.com/webasyst/shop-script/commit/d4a...

              После этого можно создавать товары по характеристикам так:

              Метод shop.product.add

              array(        
                      'name' => 'Товар по характеристикам',
              	'sku_type' => 1,
              	'type_id' => 1,
              	'base_price_selectable' => 200,
              	'currency' => 'RUB',
              	'features_selectable' => array(
              		'size' => array(
              			12,
              			16
              		),
              	)
              )

              size - код характеристики
              12 и 16 - это НЕ сами значения, а ID значений (feature_value_id)

              • +1

                На сколько я понимаю - этот вариант не решает проблему топик стартера....

                • +1

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

                  • +1

                    Вооот. Ну наконец то лучик света пролился на АПИ.

                    Значит еще не все потеряно и можно надеяться на полноценный АПИ.

                    Это первое сообщение, в котором я встречаю желание его допилить. Ранее - "ни кому не надо", "ни кто не пользуется" и т.д.

                • +1

                  А вообще я попробовал выполнить метод shop.product.update передав туда:

                  array(
                  	'features_selectable' => array(
                  		'size' => array(
                  			12,
                  			16,
                  			24
                  		),
                  	)
                  )

                  И у меня обновились артикулы в соответствии с переданными характеристиками.
                  Всё работает.

                  • +1
                    Nikk99rus Nikk99rus 12 декабря 2015 11:53 #

                    Приветствую!
                    К сожалению, ссылка, приведенная выше, 404 возвращает (https://github.com/webasyst/shop-script/commit/d4a...).

                    А какого вида запрос к shop.product.update нужно делать, чтобы параметры установились (имею в виду features_selectable[tsvet]' => 'Зеленый' и т.п.)?

                    • +1

                      Ссылка доступна разработчикам, но в принципе она не нужна даже для update.

                      Я же написал данные для примера.
                      Передавать нужно не значения Зелёный, Красный, а ID этих значений.

                      • +1
                        Nikk99rus Nikk99rus 12 декабря 2015 13:59 #

                        С цветом все получилось, спасибо!

                        А как быть с размерами? У меня функция shop.feature.getList выдает для размеров следующие данные:


                          88 => Array
                          (
                            id => '88'
                            parent_id => NULL
                            code => 'razmer1'
                            status => 'public'
                            name => 'Размер'
                            type => 'varchar'
                            selectable => '1'
                            multiple => '1'
                            count => '6'
                            values => Array
                            (
                              0 => 'S'
                              1 => 'XS'
                              2 => 'M'
                              3 => 'L'
                              4 => 'XL'
                              5 => 'XXL'
                              _element => 'value' 

                        )

                        Как тогда для него установить? Пробовал так:
                        'features_selectable[razmer1]' => 'S'

                        или

                        'features_selectable[razmer1]' => '0'

                        или

                        'features_selectable[razmer1][]' => '0', но что-то пока не получается...

                        • +1

                          Нужно передавать ID значений! Посмотрите какие данные уходят в POST-е при сохранении товара в админке, там эти ID передаются.
                          Через API пока ID значений получить нельзя, это баг, исправим в ближайшем обновлении.

                          • +1
                            Nikk99rus Nikk99rus 12 декабря 2015 16:24 #

                            Не, я понял, что по id, просто думал, что сработает по аналогии с обычными features. Кстати, если будете дорабатывать api, то было бы удобно, чтобы можно было обходиться без id, как, к примеру, сейчас можно устанавливать свойства артикула (Вкладка "Дополнительно" -> "ХАРАКТЕРИСТИКИ АРТИКУЛА"): 'features[tsvet]'=>'Зеленый' и т.п.


                            А так в базе нашел id характеристик:

                            Теперь все работает. Пока обновление не вышло, придется самому дописать метод определения id. Но главное, что теперь можно полноценно создавать товары - а это главное. Еще раз спасибо за помощь!




                      • +2
                        Михаил Михаил 14 января 2016 07:18 #

                        А вы спрашиваете почему никто не пользуется...

                        Решил посмотреть инфу по api, а ее нигде нет

                        на github - пусто, нужно где-то зарегистрироваться

                        https://developers.webasyst.ru/api/explorer/shop/ - тут

                        не понятно куда слать запросы, как авторизоваться

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите