it-swarm.dev

Come posso generare un URL SEF in un modulo personalizzato anziché l'URL reale?

Nel mio modulo, questo codice viene utilizzato per generare l'URL della pagina:

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

Funziona esattamente come dovrebbe e produce un URL simile a:

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

Ma vorrei sapere se esiste un modo per ottenere il modulo per generare l'URL SEF per la pagina corrente. Qualcosa di simile a:

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

Usa JRoute per questo:

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

ma non hai bisogno di JUri :: base () se non vuoi collegarti a un dominio diverso.

13
Harald Leithner

Esiste un plugin di sistema chiamato System: SEF. Se abilitato, questo plug-in analizza l'output HTML finale appena prima che venga inviato al browser e sostituisce tutti i collegamenti non SEF con le loro controparti SEF eseguendolo attraverso JRoute::_($url);. Funziona solo per i collegamenti interni anche se inizia con index.php, Quindi non funzionerà se il collegamento inizia con http://.

Prova a rimuovere JUri::base() (e quindi rimuovere http: // dal link) e dovrebbe funzionare se il plugin è abilitato.

4
Don Gilbert

Ecco un altro modo per ottenere l'URL radice corretto del sito. Questo vale anche se il tuo sito è in una sottocartella

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

Quindi puoi farlo

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