Мультивитринность
Кто-нибудь имеет опыт в реализации поддержки мультивитринности в плагинах для магазина? Поделитесь опытом =)
Что такое "мультивитринность"? Вот ссылки из ответа тех.поддержки:
<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>
Что такое "мультивитринность"? Вот ссылки из ответа тех.поддержки:
<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>
5 ответов
Вы читали пошаговое руководство по разработке плагинов?
http://www.webasyst.ru/developers/docs/shop-plugin-tutorial/
У вас в документации путаница в терминах (возможно, только я путаюсь). Термины "поселение" и "домен" приравниваются к "витрине", тогда зачем нужно так много терминов? Также, витриной (витриной магазина) считается frontend - видимая пользователя часть сайта. Это сбивает с толку...
Если я правильно понял, то для витрина (для моего конкретного случая) это пара "домен" + "приложение", которые уникальным образом идентифицируют магазин. Полный список вариантов я могу получить из роутинга (Сайт->Структура).
На данный момент я придумал как хранить настройки плагина для каждой витрины. Но остается проблема с идентификацией текущей витрины. Я делаю вот так:
$routing = wa()->getRouting();
$domains = $routing->getByApp('shop');
Проблема в том, что массив $domains имеет следующий формат:
array(<имя_домена> => array(<настройки_приложений>))
Как мне получить ID домена?
Витринами в случае с магазином нужно считать все поселения, настроенные для приложения 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 которого указана в ключе элемента массива. Это поселение будет относиться к домену, в массиве поселений которого оно указано.