Как создать URL-адрес SEF в пользовательском модуле вместо реального URL-адреса?

В моем модуле этот код используется для создания URL-адреса страницы:

JURI::base() . ContentHelperRoute::getArticleRoute(  $article->id,  $article->catid )

Это работает, как должно, и создает URL-адрес, который выглядит следующим образом:

http://example.com/index.php?option=com_content&view=article&id=83&catid=26&Itemid=162

Но я хотел бы знать, есть ли способ заставить модуль генерировать URL SEF для текущей страницы. Что-то вроде:

http://example.com/resources/blog/83-illustration
8 голосов | спросил rleathers 22 PMpTue, 22 Apr 2014 22:28:48 +040028Tuesday 2014, 22:28:48

3 ответа


12

Используйте JRoute для этого:

rtrim(JUri::base(), '/') . JRoute::_(ContentHelperRoute::getArticleRoute(  $article->id,  $article->catid ))

, но вам не нужно JUri :: base (), если вы не хотите ссылаться на другой домен.

ответил Harald Leithner 22 PMpTue, 22 Apr 2014 22:32:08 +040032Tuesday 2014, 22:32:08
4

Существует системный плагин под названием System: SEF. Когда этот параметр включен, этот плагин проверяет окончательный вывод HTML непосредственно перед его отправкой в ​​браузер и заменяет любые ссылки, отличные от SEF, с помощью своих SEF-копий, запуская его через JRoute::_($url); , Это работает только для внутренних ссылок, начиная с index.php, поэтому он не будет работать, если ссылка начинается с http://.

Попробуйте удалить JUri::base() (и таким образом удалить http: //из ссылки), и он должен работать, если плагин включен.

ответил Don Gilbert 22 PMpTue, 22 Apr 2014 22:33:39 +040033Tuesday 2014, 22:33:39
3

Вот еще один способ получить правильный корневой URL-адрес сайта. Это также заботится, если ваш сайт находится в подпапке

$rootURL = rtrim(JURI::base(),'/');
        $subpathURL = JURI::base(true);
        if(!empty($subpathURL) && ($subpathURL != '/')) {
            $rootURL = substr($rootURL, 0, -1 * strlen($subpathURL));
        }

Затем вы можете сделать

$url = $rootURL.JRoute::_(ContentHelperRoute::getArticleRoute(  $article->id,  $article->catid ));
ответил Ramesh Elamathi 23 AMpWed, 23 Apr 2014 10:38:24 +040038Wednesday 2014, 10:38:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132