Lập trình PHP

Trong xenforo có tùy chỉnh URL thân thiện cho SEO, nhưng với các tiêu đề tiếng việt thì nhiều khi vẫn còn các ký tự có dấu.

Hướng dẫn này để chuyển URL tiếng việt không dấu hoàn chỉnh hơn.

Xử lý lấy URL khi render của Xenforo

Trong hệ thống xenforo việc xử lý link nằm trong file: \library\XenForo\Link.php

Chúng ta sẽ chỉnh sửa nội dung file này để thay đổi cách lấy URL của Xenforo

Chỉnh sửa XenForo_Link

Trong file Link.php có lớp XenForo_Link. Trong lớp này bạn thêm biến và hàm sau:

public static  $unicode_vn=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă", "ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề" ,"ế","ệ","ể","ễ", "ì","í","ị","ỉ","ĩ", "ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ" ,"ờ","ớ","ợ","ở","ỡ", "ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ", "ỳ","ý","ỵ","ỷ","ỹ", "đ", "À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă" ,"Ằ","Ắ","Ặ","Ẳ","Ẵ", "È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ", "Ì","Í","Ị","Ỉ","Ĩ", "Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ" ,"Ờ","Ớ","Ợ","Ở","Ỡ", "Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ", "Ỳ","Ý","Ỵ","Ỷ","Ỹ", "Đ");

public static  $unicode_vn_latin=array("a","a","a","a","a","a","a","a","a","a","a" ,"a","a","a","a","a","a", "e","e","e","e","e","e","e","e","e","e","e", "i","i","i","i","i", "o","o","o","o","o","o","o","o","o","o","o","o" ,"o","o","o","o","o", "u","u","u","u","u","u","u","u","u","u","u", "y","y","y","y","y", "d", "a","a","a","a","a","a","a","a","a","a","a","a" ,"a","a","a","a","a", "e","e","e","e","e","e","e","e","e","e","e", "i","i","i","i","i", "o","o","o","o","o","o","o","o","o","o","o","o" ,"o","o","o","o","o", "u","u","u","u","u","u","u","u","u","u","u", "y","y","y","y","y", "d");

public static function convert_url_vn(&$title)
{
    $title = strtr(str_replace(
           self::$unicode_vn,
           self::$unicode_vn_latin,$title), 
      'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 
      'abcdefghijklmnopqrstuvwxyz');

}
 

Bước cuối cùng bạn tìm đến hàm getTitleForUrl, và thay dòng 

$title = strtr($title, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');

Bằng đoạn mã sau:

self::convert_url_vn($title);

Kiểm tra lại URL của XenForo. Chúc bạn thành công!

Có vấn đề gì các bạn cứ comment nhé.