Абсолютный (для скриптов) url до плагина Есть решение

Есть плагин с фронтендом. Нужно получить абсолютный (для скриптов) url на него с учётом поселения.

как это корректно сделать?

4 ответа

  • 2

    Так путь к скриптам не поменяется в любом поселении:

    {$wa_url}wa-apps/shop/plugins/plugin/js/script.js

    UPD: Пропустил, что путь абсолютный {$wa->domainUrl()}{$wa_url}wa-apps/shop/plugins/plugin/js/script.js


  • 2

    Если поселение шопа находится в корне то добраться до него можно $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 в конец адреса

    Я перепробывал кучу всего. И в результате, либо неполный урл. Либо мусор.

    • +2

      Следующий код по-идее вернёт ссылку на любое поселение магазина на конкретном домене:

      wa()->getRouteUrl('shop/frontend', array(), true);


      Если нужно сослаться на что-то из роутинга плагина, можно пробовать что-то такое:

      wa()->getRouteUrl('shop/method/action', array(), true);

      При таком роутинге плагина:

      <?php

      return array(
      'my-cool-link' => 'method/action', );


      И оно как-то работает! :) но как - без понятия.

      Если кто пояснит, самому интересно узнать.



  • 4
    Леонид Вакуленко Webasyst 14 мая 2015 06:24 # Решение

    Плюсую 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);

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

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