it-swarm-vi.com

Làm cách nào để tạo URL SEF trong mô-đun tùy chỉnh thay vì URL thực?

Trong mô-đun của tôi, mã này đang được sử dụng để tạo URL của trang:

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

Điều này hoạt động exaclty như nó cần và tạo ra một URL trông giống như:

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

Nhưng tôi muốn biết liệu có cách nào để có được mô-đun để tạo URL SEF cho trang hiện tại không. Cái gì đó như:

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

Sử dụng JRoute cho việc này:

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

nhưng bạn không cần JUri :: base () nếu bạn không muốn liên kết đến một tên miền khác.

13
Harald Leithner

Có một plugin hệ thống được gọi là System: SEF. Khi được bật, plugin này sẽ quét đầu ra HTML cuối cùng ngay trước khi nó được gửi tới trình duyệt và thay thế bất kỳ liên kết không phải SEF nào với các đối tác SEF của chúng bằng cách chạy nó qua JRoute::_($url);. Điều này chỉ hoạt động cho các liên kết nội bộ mặc dù bắt đầu bằng index.php, Vì vậy nó sẽ không hoạt động nếu liên kết bắt đầu bằng http://.

Hãy thử xóa JUri::base() (và do đó xóa http: // khỏi liên kết) và nó sẽ hoạt động nếu plugin được bật.

4
Don Gilbert

Đây là một cách khác để có được URL gốc của trang web. Điều này cũng quan tâm nếu trang web của bạn nằm trong thư mục con

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

Sau đó bạn có thể làm

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