Работа корзины в режиме мультивитрины происходит без проверки типа товара Есть решение

4

Одна установка WA+SS. Два домена А и Б. Две разные темы дизайна.
Витрина А и для нее предназначены товары только типа А.
Витрина Б и для нее предназначены товары только типа Б.

Никаких проблем такое разделение типов не создает и все работает хорошо. Товары, категории, теги и т.п. всё красиво разнесено на две витрины.

Сразу уточню. Речь идет про зарегистрированного пользователя или пользователя бекенда. Технически с гостем такая ситуация нереальна и воспроизводима только в лабораторных условиях при доступе к БД, а с зарегистрированным пользователем будут скорее другие проблемы при попытке зарегистрироваться с теми же данными на второй витрине, но суть моего поста в следующем.

"Проблемы" начинаются тогда, когда товар добавляется в корзину. Допустим на одной витрине я добавляю в корзину один товар. На второй витрине тоже добавляю один товар. В корзинах на разных витринах я вижу теперь два товара по одному с каждой условно "недоступной" витрины.

При беглом осмотре таблицы shop_cart_item выясняется, что в магазине не осуществляется проверка типа товара type_id на соответствие витрине при выборе id товара только по code корзины, который записывается в куку shop_cart.

Гостевые корзины имеют разные code и с ними проблем нет, как уже ранее было сказано в уточнении.

Однако считаю отсутствие такой проверки на соответствие типов недоработкой и потенциальной ошибкой. Если делать привязку товаров к витринам, то делать её надо полноценно.

Корзина, в которой при разграничении по типам, могут встретиться товары с разных витрин - это не есть правильно. Пусть даже эта корзина искуственно смоделирована зарегистрированным пользователем и возможна лишь теоретически.

5 комментариев

  • +1
    Алексей Алексей Webasyst 28 марта 2020 17:08 #

    Для каждого домена ставится свой идентификатор в cookie, поэтому для гостя они не будут пересекаться.
    Если же 1 зарегистрированный клиент использует оба сайта и у вас в настройках включено объединение корзины, то может быть пересечение.

    • +2
      replicant replicant 28 марта 2020 17:29 #

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

      Если же объединение корзины - это что-то принципиально иное, то хотелось бы узнать подробности.

      Речь про отсутствие проверки типа товара в корзине. Вышеописанная ситуация воспроизводится в одном браузере на соседних вкладках буквально на раз-два. Сильно не парит, т.к. воспроизводимость ситуации для внешнего покупателя маловероятна. Однако проверки нет, а логично, чтобы была.

      Иначе зачем нужны танцы с мультивитринами, типами и т.п., если типы не проверять?

    • +1
      elifie elifie 13 января 2022 17:18 #

      Спустя полтора года наблюдаем ту же историю. Быть может, пост недаром висит в "Принято" и уже есть решение, а я его просто не вижу?

    • +1
      Михаил Ушенин Михаил Ушенин Webasyst 13 января 2022 18:01 #

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

      • +2
        replicant replicant 13 января 2022 18:20 #

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

        Типы товаров разные. Сайты разные на разных доменах. Общая только панель администрирования, т.к. мультивитрины подвешены на разных доменах (товары не пересекаются), и аккаунты покупателя и пользователя бекенда. В задаче это вроде как все подробно описано.

        Домен А. Товары только типа А.
        Домен Б. Товары только типа Б.

        Но есть ситуация, когда разграничение по типам можно обойти, потому что проверки на соответствие типов в корзине просто нет. :)

        Добавить комментарий

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