ti-enxame.com

Como faço para gerar um URL SEF em um módulo personalizado em vez do URL real?

No meu módulo, esse código está sendo usado para gerar a URL da página:

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

Isso funciona exatamente como deveria e produz um URL parecido com:

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

Mas eu gostaria de saber se existe uma maneira de obter o módulo para gerar a URL do SEF para a página atual. Algo como:

http://example.com/resources/blog/83-illustration
7
rleathers

Use o JRoute para isso:

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

mas você não precisa de JUri :: base () se não deseja vincular a um domínio diferente.

13
Harald Leithner

Existe um plugin do sistema chamado Sistema: SEF. Quando ativado, esse plug-in verifica a saída HTML final, pouco antes de ser enviada ao navegador, e substitui todos os links que não sejam SEF pelos seus equivalentes SEF, executando-os através de JRoute::_($url);. Isso funciona apenas para links internos, embora comece com index.php; Portanto, não funcionará se o link começar com http://.

Tente remover JUri::base() (e, assim, remover o http: // do link) e deve funcionar se o plug-in estiver ativado.

4
Don Gilbert

Aqui está outra maneira de obter o URL raiz correto do site. Isso também cuida se o site estiver na subpasta

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

Então você pode fazer

$url = $rootURL.JRoute::_(ContentHelperRoute::getArticleRoute(  $article->id,  $article->catid ));
3
Ramesh Elamathi