msOptionsPrice.modification как получить продукты с одинаковым значением параметра модификации

Я использую msoptionsprice2 с msOptionsPrice.modification.
Продукт имеет следующую структуру:
Платье с модификациями(options): цвет, размер, коллекция.
например:
ПлатьеА(Красное, XL, Летняя коллекция)
ПлатьеА(Синий, XL, Летняя коллекция)
ПлатьеB(Красное, L, Летняя коллекция)
ПлатьеB(Красное, XL, зимняя коллекция)

Как получить все товары (платья из определенной коллекции)?
например: Летнюю коллекцию?
что-то вроде этого:
[[!msOptionsPrice.modification?
         &where=`{"collection":"Летняя коллекция"}`
         ]]

tararaxnes
23 ноября 2023, 00:14
modx.pro
1
444
0

Комментарии: 11

Артур Шевченко
23 ноября 2023, 00:39
0
Я бы на вашем месте хорошо подумал, а точно ли коллекция это свойство товара, которое должно быть в модификации. А в текущей раскладке скорее всего только свой сниппет писать, который сделает нужную выборку из БД.
    tararaxnes
    23 ноября 2023, 08:50
    0
    да, вы правы насчет коллекции, но в текущей структуре с использованием модификаций другого пути нет. В коллекции может быть продукт всех цветов, но также может быть продукт определенного цвета. Я не вижу другого пути.
    Володя
    23 ноября 2023, 09:28
    0
    Доброе утро. Можно использовать параметр byOptions
    {'!msOptionsPrice.modification'|snippet: [
    'byOptions' => [
        'collection' => 'Летняя коллекция'
    ]
    ]}
    ps. пардон. все модификации это не даст, а только первую подходящую.
      Володя
      23 ноября 2023, 09:41
      0
      Вот так должно сработать
      [[!msOptionsPrice.modification?
      &where=`[ "Option.key = 'collection' AND Option.value = 'Летняя коллекция'" ]`
      ]]
        tararaxnes
        23 ноября 2023, 13:04
        0
        Я уже пробовал это, но он возвращает: [msOptionPrice] The resource with id= is not instance of msProducts.
        Если я добавлю &product = product_id оно работает.
        Но мне нужно получить список всех продуктов(из модификаций), принадлежащих определенной коллекции.
          Володя
          23 ноября 2023, 13:43
          0
          если вы вызываете сниппет не на странице товара обязательно нужно указать идентификатор
          &product=`[[+id]]`
            tararaxnes
            23 ноября 2023, 14:05
            0
            Моя проблема:
            1. я не хочу запустить этот snippet со страницы продукта
            2. когда я запускаю этот snippet, мне нужно получать результаты всех модификаций продукта с одним и тем же ключом Option.key.

            и
            &product=`[[+id]]`
            не поможет, оно возвращает то же предупреждение:"[msOptionPrice] The resource with id= is not instance of msProducts." и я думаю, что это нормально,
            у меня такое впечатление, что snippet msOptionsPrice.modification возвращает данные только для конкретного продукта, но мне нужно что-то вроде, например:
            [[pdoResourses? &parents=`47` &where=`{'class_key' : 'msCategory'}'
            Это вернет информацию обо всем, что находится под родительским номером 47.
              Володя
              23 ноября 2023, 14:15
              0
              не поможет, оно возвращает то же предупреждение:"[msOptionPrice] The resource with id= is not instance of msProducts." и я думаю, что это нормально,
              либо у вас неверно указан параметр product, либо в плейсхолдере [[+id]] не идентификатор продукта. ЧУдес не бывает.
                tararaxnes
                23 ноября 2023, 14:35
                0
                Наверное я не так ясно выразился (мой русский не на высоком уровне).
                Например, у меня есть следующие 3 продукта(3 разных продукта одной категории (а не 3 модификации одного продукта)):
                ТоварА(ID:1)------>(с 3 модификациями)
                1. модификация1: цвет1, размер, коллекцияА
                2. модификация2: цвет2, размер, коллекцияА
                3. модификация3: цвет3, размер, коллекцияB

                ТоварB(ID:2)------>(с 2 модификациями)
                1. модификация1: цвет3, размер, коллекцияА
                2. модификация2: цвет1, размер, коллекцияB

                ProductC(ID:3)------>(с 2 модификациями)
                1. модификация1: цвет3, размер, коллекцияА
                2. модификация2: цвет1, размер, коллекцияА

                Поэтому мне нужно использовать snippet
                [[!msOptionsPrice.modification?
                &where=`[ "Option.key = 'collection' AND Option.value = 'коллекциюА'" ]`
                ]]
                например, в строке меню:
                чтобы получить все товары, входящие в коллекциюА.

                он должен вернуть следующий список:
                ТоварA, цвет1, размер, коллекцияA
                ТоварA, цвет2, размер, коллекцияA
                ТоварB, цвет3, размер, коллекцияA
                ТоварC, цвет3, размер, коллекцияA
                ТоварC, цвет1, размер, коллекцияA
                  Володя
                  23 ноября 2023, 14:51
                  0
                  да, так уже понятней.
                  для такого варианта не получится использовать msOptionsPrice.modification. Нужно писать свой сниппет для выборки. Или как то использовать pdoResourses
                    tararaxnes
                    23 ноября 2023, 14:53
                    +1
                    Хорошо, я попробую, спасибо, что уделили время
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11