Tutorial 2x Url không dấu cho xf 2.1.x fixed dấu unicode (no addon)

phihanh

Private
URL không dấu các bạn nên sửa tự nhiên đừng dùng addon nhiều làm gì (kinh nghiệm cá nhân)
đoạn code này mình có thêm 1 số ký tự dấu của unicode khi member dùng unicode tổ hợp sẽ bị lỗi ko xóa dấu

Tìm file Router.php trong thư mục /src/XF/Mvc

Tìm đoạn code

PHP:
if ($romanize)
        {
            $string = utf8_romanize(utf8_deaccent($string));
            $originalString = $string;

            // Attempt to transliterate remaining UTF-8 characters to their ASCII equivalents
            $string = @iconv('UTF-8', 'ASCII//TRANSLIT', $string);
            if (!$string)
            {
                // iconv failed so forget about it
                $string = $originalString;
            }
        }

thêm vào bên dưới

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

lưu ý ở trong admincp nó sẽ báo file bị thay đổi kệ nó đừng quan tâm nha
 
Chép vô giải quyết được vấn đề url không dấu đẹp đẽ nhưng trong phần quản trị thì bị lỗi :(
upload_2019-5-18_11-24-21.png
 
ĐỪNG BAO GIỜ TỰ SỬA FILE CÓ SẴN TRÊN XENFORO 2.
Nếu có khả năng, hãy tự làm addon.
Nếu không, hãy tìm addon có chức năng mà b cần.

Nếu tự sửa file có sẵn, lỗi sẽ xuất hiện ( cmt trên ).
 
ĐỪNG BAO GIỜ TỰ SỬA FILE CÓ SẴN TRÊN XENFORO 2.
Nếu có khả năng, hãy tự làm addon.
Nếu không, hãy tìm addon có chức năng mà b cần.

Nếu tự sửa file có sẵn, lỗi sẽ xuất hiện ( cmt trên ).

nó chỉ là thông báo kiểu check health thôi mà xóa nó đi là đc ko sao đâu

k muốn có cái thông báo đó thì vào Delete file /src/addons/XF/hashes.json xóa nó đi ^^ hoặc xóa 1 dòng bạn sửa
bác là ad enxf.net à
 
trời mé em tưởng forum đó của mấy ông tây hóa ra mấy Pro vn kiếm chuối :D
ở forum bác có full add-on bên xenforo.com ko bác
:)) e chỉ 1 phần trong đó thôi bác, k full đâu bác, cũng kha khá à, mấy cái SVIP là addon mua á
 
không phải dưới
Mã:
if ($romanize)
        {
            $string = utf8_romanize(utf8_deaccent($string));
            $originalString = $string;

            // Attempt to transliterate remaining UTF-8 characters to their ASCII equivalents
            $string = @iconv('UTF-8', 'ASCII//TRANSLIT', $string);
            if (!$string)
            {
                // iconv failed so forget about it
                $string = $originalString;
            }
        }
mà phải là dưới cái này
Mã:
$string = strval($string);
thì up thêm đoạn code này là ok:
Nếu php5 thì up:
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
còn php7 thì up code này
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
https://www.facebook.com/phong.hyk
 
URL không dấu các bạn nên sửa tự nhiên đừng dùng addon nhiều làm gì (kinh nghiệm cá nhân)
đoạn code này mình có thêm 1 số ký tự dấu của unicode khi member dùng unicode tổ hợp sẽ bị lỗi ko xóa dấu

Tìm file Router.php trong thư mục /src/XF/Mvc

Tìm đoạn code

PHP:
if ($romanize)
        {
            $string = utf8_romanize(utf8_deaccent($string));
            $originalString = $string;

            // Attempt to transliterate remaining UTF-8 characters to their ASCII equivalents
            $string = @iconv('UTF-8', 'ASCII//TRANSLIT', $string);
            if (!$string)
            {
                // iconv failed so forget about it
                $string = $originalString;
            }
        }

thêm vào bên dưới

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

lưu ý ở trong admincp nó sẽ báo file bị thay đổi kệ nó đừng quan tâm nha
Cảm ơn Bạn đã hướng dẫn, hay quá
Cho mình hỏi 1 vấn đề không liên quan chủ đề lắm.
Đó là không hiểu sao forum của mình tất cả các threads đều không hiển thị tiêu đề bài viết
Nhờ Bạn hỗ trợ giúp ạ
 
Back
Top