Мультивитринность

Кто-нибудь имеет опыт в реализации поддержки мультивитринности в плагинах для магазина? Поделитесь опытом =)

Что такое "мультивитринность"? Вот ссылки из ответа тех.поддержки:
<ul>
<li>http://www.webasyst.ru/help/14/shop-script-5-extra-storefronts/</li>
<li>http://www.webasyst.ru/help/75/custom-page-parameters-shop-script-5/<l/i>
</ul>

1 ответ

  • 0
    Михаил Ушенин Webasyst 26 сентября 2014 02:46 #
    У вас возникают какие-то конкретные проблемы при попытке разработать плагин с поддержкой нескольких витрин?
    Вы читали пошаговое руководство по разработке плагинов?
    http://www.webasyst.ru/developers/docs/shop-plugin-tutorial/
    • 0
      %username% 26 сентября 2014 04:23 #
      Да, читал. Про мультивитринность там ничего не нашел.
      У вас в документации путаница в терминах (возможно, только я путаюсь). Термины "поселение" и "домен" приравниваются к "витрине", тогда зачем нужно так много терминов? Также, витриной (витриной магазина) считается frontend - видимая пользователя часть сайта. Это сбивает с толку...

      Если я правильно понял, то для витрина (для моего конкретного случая) это пара "домен" + "приложение", которые уникальным образом идентифицируют магазин. Полный список вариантов я могу получить из роутинга (Сайт->Структура).

      На данный момент я придумал как хранить настройки плагина для каждой витрины. Но остается проблема с идентификацией текущей витрины. Я делаю вот так:

      $routing = wa()->getRouting();
      $domains = $routing->getByApp('shop');

      Проблема в том, что массив $domains имеет следующий формат:
      array(<имя_домена> => array(<настройки_приложений>))

      Как мне получить ID домена?
      • 0
        Михаил Ушенин Михаил Ушенин Webasyst 26 сентября 2014 05:21 #
        "Поселение" приравнивается к "витрине". Домен — нет. Домен — это всего лишь адрес сайта, а в пределах сайта может быть от 1 дол нескольких витрин.
        Витринами в случае с магазином нужно считать все поселения, настроенные для приложения Shop-Script 5.
        Для идентификации доменов используйте их URL (введённые в настройках приложения Сайт). В вашем случае, наверное, будет нужно формировать массив следующего вида (примерно — вместо масок *, shop/*, vkontakte/* и т. п. в каждом конкретном случае будут какие-то свои значения, указанные в настройках витрин/поселений):

        'domain1.ru' => array('*' => array(...), 'shop/*' => array(...), 'vkontakte/*' => array(...),),
        'domain2.ru' => array('store/*' => array(...), 'facebook/*' => array(...),),
        'domain3.ru' => ...,

        Вместо array(...) храните настройки для поселения, маска URL которого указана в ключе элемента массива. Это поселение будет относиться к домену, в массиве поселений которого оно указано.
        • 0
          Мне бы не хотелось хранить в настройках имена доменов строками. Хочется большей универсальности. Проблема в том, что метод wa()->getDomains() возвращает мне массив доменов (тут все верно), вот только ключи в массиве не идентификаторы этих доменов в БД, а просто порядковые номера. Если бы Вы исправили это поведение в ближайшем обновлении, то это было бы замечательно =)
          • 0
            Михаил Ушенин Михаил Ушенин Webasyst 2 октября 2014 06:29 #
            Витрина определяется уникальным образом по домену и поселению приложения для этого домена. В Shop-Script 5 есть пример выбора поселения — в диалоге редактирования категории. Возможно, вам будет достаточно сделать так же.

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

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