Абсолютный (для скриптов) url до плагина Есть решение
Есть плагин с фронтендом. Нужно получить абсолютный (для скриптов) url на него с учётом поселения.
как это корректно сделать?
Есть плагин с фронтендом. Нужно получить абсолютный (для скриптов) url на него с учётом поселения.
как это корректно сделать?
4 ответа
Так путь к скриптам не поменяется в любом поселении:
{$wa_url}wa-apps/shop/plugins/plugin/js/script.js
UPD: Пропустил, что путь абсолютный {$wa->domainUrl()}{$wa_url}wa-apps/shop/plugins/plugin/js/script.js
Если поселение шопа находится в корне то добраться до него можно $url = wa()->getRootUrl(true, true). Но если не в корне то нужно: $all_routings = wa()->getRouting()->getByApp('shop');
$array_route = array();
foreach ($all_routing as $key=>$value) {
$array_route[] = wa()->getRouteUrl('shop', array(), $absolute = true, $domain=null, $route = $key);
}
Вот тут и проблема: добавляет signup в конец адреса
Я перепробывал кучу всего. И в результате, либо неполный урл. Либо мусор.
Следующий код по-идее вернёт ссылку на любое поселение магазина на конкретном домене:
wa()->getRouteUrl('shop/frontend', array(), true);
Если нужно сослаться на что-то из роутинга плагина, можно пробовать что-то такое:
wa()->getRouteUrl('shop/method/action', array(), true);
При таком роутинге плагина:
И оно как-то работает! :) но как - без понятия.
Если кто пояснит, самому интересно узнать.
Плюсую wa()->getRouteUrl('shop/module/action', array(), true). В бэкэнде вернёт какое-то поселение, во фронтэнде - текущее. Урл абсолютный (третий параметр true).
Более корректно в случае плагина передать array('plugin' => 'yourpluginid') вторым параметром. Тогда вы точно не получите ссылку на чужой плагин, если module+action совпали.
В шаблонах доступна {$wa->getUrl('shop/module/action', ['plugin' => 'yourpluginid'], true)} - то же самое, что и getRouteUrl выше.
Полный урл до фронтэнда магазина, как тоже верно написано ранее: wa()->getRouteUrl('shop/frontend', array(), true);