it-swarm-id.com

Bagaimana cara menghasilkan URL SEF dalam modul khusus alih-alih URL sebenarnya?

Dalam modul saya, kode ini digunakan untuk menghasilkan URL halaman:

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

Ini berfungsi dengan tepat sebagaimana mestinya dan menghasilkan URL yang terlihat seperti:

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

Tapi saya ingin tahu apakah ada cara untuk mendapatkan modul untuk menghasilkan URL SEF untuk halaman saat ini. Sesuatu seperti:

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

Gunakan JRoute untuk ini:

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

tetapi Anda tidak perlu JUri :: base () jika Anda tidak ingin menautkan ke domain lain.

13
Harald Leithner

Ada plugin sistem yang disebut System: SEF. Saat diaktifkan, plugin ini memindai hasil HTML final tepat sebelum dikirim ke browser, dan mengganti tautan non-SEF dengan rekan SEF mereka dengan menjalankannya melalui JRoute::_($url);. Ini hanya berfungsi untuk tautan internal meskipun dimulai dengan index.php, Jadi itu tidak akan berfungsi jika tautan dimulai dengan http://.

Coba hapus JUri::base() (dan dengan demikian menghapus http: // dari tautan) dan itu akan berfungsi jika plugin diaktifkan.

4
Don Gilbert

Berikut ini cara lain untuk mendapatkan URL root yang benar dari situs ini. Ini juga perlu diperhatikan jika situs Anda dalam subfolder

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

Maka Anda bisa melakukannya

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