Bài Phản Hồi Mới Tiêu Đề Mới Tiêu Đề Được Phản Hồi Nhiều Tiêu Đề Top

Share Giải quyết vấn đề URL có dấu của Xenforo tốt cho SEO

Congvt6

Top Bền Vững
Thành viên BQT
Quản Trị Cấp Cao
Thành Viên Kiểm Duyệt
Hỗ Trợ
Bài viết
208
Reaction score
8
Điểm
18
Giá trị
$7,183
Mình nghiên cứu và tìm tòi ra cách để fix lại Url của Xenforo chuẩn hơn khi tiêu đề là tiếng việt.

Trước tiên các bạn phải được code đường dẫn sau: \library\XenForo\Link.php

Đây là đường dẫn chứa file xử lý URL của Xenforo.

Chúng ta bắt đầu fix nó lại như sau:

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

Mã:
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 này nhé:

Mã:
$title = strtr($title, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz');
Bằng đoạn mã sau:

Mã:
self::convert_url_vn($title);
Sau đó test lại URL,

Đây là cách mình sưu tầm được, các bạn tham khảo thử nhé

Chúc các bạn thành công!
 

Congvt6

Top Bền Vững
Thành viên BQT
Quản Trị Cấp Cao
Thành Viên Kiểm Duyệt
Hỗ Trợ
Bài viết
208
Reaction score
8
Điểm
18
Giá trị
$7,183
Mở thư mục src\XF\Mvc
Edit file Route.php:
Tìm"

if ($romanize)
{
$string = utf8_romanize(utf8_deaccent($string));


Thêm bên dưới dòng trên đoạn mã sau PHP5:
Mã:
//Url khong dau
$hacobi1102 = array ("a" => "á|à|ạ|ả|ã|ă|ắ|ằ|ặ|ẳ|ẵ|â|ấ|ầ|ậ|ẩ|ẫ|Á|À|Ạ|Ả|Ã|Ă|Ắ|Ằ|Ặ|Ẳ|Ẵ|Â|Ấ|Ầ|Ậ|Ẩ|Ẫ","o" => "ó|ò|ọ|ỏ|õ|ô|ố|ồ|ộ|ổ|ỗ|ơ|ớ|ờ|ợ|ở|ỡ|Ó|Ò|Ọ|Ỏ|Õ|Ô|Ố|Ồ|Ộ|Ổ|Ỗ|Ơ|Ớ|Ờ|Ợ|Ở|Ỡ","e" => "é|è|ẹ|ẻ|ẽ|ê|ế|ề|ệ|ể|ễ|É|È|Ẹ|Ẻ|Ẽ|Ê|Ế|Ề|Ệ|Ể|Ễ","u" => "ú|ù|ụ|ủ|ũ|ư|ứ|ừ|ự|ử|ữ|Ú|Ù|Ụ|Ủ|Ũ|Ư|Ứ|Ừ|Ự|Ử|Ữ","i" => "í|ì|ị|ỉ|ĩ|Í|Ì|Ị|Ỉ|Ĩ","y" => "ý|ỳ|ỵ|ỷ|ỹ|Ý|Ỳ|Ỵ|Ỷ|Ỹ","d" => "đ|Đ",);
while(list($key,$value) = each($hacobi1102))
{
$string = @ereg_replace($value, $key, $string);
}
//end khong dau

-------------------------------------------------------------------------------
Nếu host dùng PHP7 thì lấy code này nhé:


Mã:
//Url khong dau
$hacobi1102 = array(
        "a" => "Á|À|Ả|Ã|Ạ|Ă|Ắ|Ặ|Ằ|Ẳ|Ẵ|Â|Ấ|Ầ|Ẩ|Ẫ|Ậ|á|à|ả|ã|ạ|ă|ắ|ặ|ằ|ẳ|ẵ|â|ấ|ầ|ẩ|ẫ|ậ",
        "d" => "Đ|đ",
        "e" => "É|È|Ẻ|Ẽ|Ẹ|Ê|Ế|Ề|Ể|Ễ|Ệ|é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ",
        "i" => "Í|Ì|Ỉ|Ĩ|Ị|í|ì|ỉ|ĩ|ị",
        "o" => "Ó|Ò|Ỏ|Õ|Ọ|Ô|Ố|Ồ|Ổ|Ỗ|Ộ|Ơ|Ớ|Ờ|Ở|Ỡ|Ợ|ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ",
        "u" => "Ú|Ù|Ủ|Ũ|Ụ|Ư|Ứ|Ừ|Ử|Ữ|Ự|ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự",
        "y" => "Ý|Ỳ|Ỷ|Ỹ|Ỵ|ý|ỳ|ỷ|ỹ|ỵ",
);
foreach($hacobi1102 as $replace => $search){
        $string = preg_replace("/($search)/i", $replace, $string);
}
$string = str_replace(" ", "-", $string);
//end khong dau
Mình đã thử và đã fix thành công, các bạn có thể tham khảo nhé
 
Sửa lần cuối:

Congvt6

Top Bền Vững
Thành viên BQT
Quản Trị Cấp Cao
Thành Viên Kiểm Duyệt
Hỗ Trợ
Bài viết
208
Reaction score
8
Điểm
18
Giá trị
$7,183
File đính kèm nếu bạn nào lười tìm code và sửa code nhé
 

Congvt6

Top Bền Vững
Thành viên BQT
Quản Trị Cấp Cao
Thành Viên Kiểm Duyệt
Hỗ Trợ
Bài viết
208
Reaction score
8
Điểm
18
Giá trị
$7,183
Các Forum mới xây dựng từ Xenforo hay bị vướn vần đề Url không nhận được tiếng việt cho Frendly Urls, thì đây là giải pháp tốt nhất, cái thứ 2 là cho bạn nào mún tự tìm code check, còn cái down về là cái dành cho các bạn nào làm biếng không muốn điều chỉnh code chỉ cần vào đúng đường dẫn

src\XF\Mvc

Paste vào và Replace là xong
 
Top