• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.
  • Upgrade Your Account
    Hello Guest! Upgrade your account to download all VIP Resource here

NamLee

Bơ Đi Mà Sống
Staff member
Joined
Dec 11, 2015
Messages
2,459
Chủ thớt
#1
Qua quá trình cài đặt và sử dụng Xenforo, mình có gặp phải vấn đề tag url bị mất một vài ký tự. Ví dụ:

Title: Fix lỗi url tag xenforo tiếng việt không dấu
Url: fix-li-url-tag-xenforo-ting-vit-khong-du

Lỗi này xuất phát từ quá trình xử lý chuyển đổi ký tự tag không dấu ghi vào cột dữ liệu tag_url, mặc định trong xenforo không có hỗ trợ chuyển đổi utf8 unicode tiếng việt.

Sau đây mình sẽ hướng dẫn các bạn cách sửa lỗi url tag xenforo tiếng việt.

File cần chỉnh sửa:
\library\XenForo\DataWriter\Tag.php
\library\XenForo\Model\Tag.php

Tìm:
Code:
protected function _getUrlVersion($tag)
    {
        $urlVersion = preg_replace('/[^a-zA-Z0-9_ -]/', '', utf8_romanize(utf8_deaccent($tag)));
        $urlVersion = preg_replace('/[ -]+/', '-', $urlVersion);
Thay bằng code sau
Code:
public function buidoi_fixCharUtf8($char)
    {
        /* www.buidoi.net */
        $char = preg_replace("#(à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ|À|Á|Ạ|Ả|Ã|Â|Ầ|Ấ|Ậ|Ẩ|Ẫ|Ă|Ằ|Ắ|Ặ|Ẳ|Ẵ)#", 'a', $char);
        $char = preg_replace("#(è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ|È|É|Ẹ|Ẻ|Ẽ|Ê|Ề|Ế|Ệ|Ể|Ễ)#", 'e', $char);
        $char = preg_replace("#(ì|í|ị|ỉ|ĩ|Ì|Í|Ị|Ỉ|Ĩ)#", 'i', $char);
        $char = preg_replace("#(ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ|Ò|Ó|Ọ|Ỏ|Õ|Ô|Ồ|Ố|Ộ|Ổ|Ỗ|Ơ|Ờ|Ớ|Ợ|Ở|Ỡ)#", 'o', $char);
        $char = preg_replace("#(ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ|Ù|Ú|Ụ|Ủ|Ũ|Ư|Ừ|Ứ|Ự|Ử|Ữ)#", 'u', $char);
        $char = preg_replace("#(ỳ|ý|ỵ|ỷ|ỹ|Ỳ|Ý|Ỵ|Ỷ|Ỹ)#", 'y', $char);
        $char = preg_replace("#(đ|Đ)#", 'd', $char);
        $char = iconv('utf-8', 'us-ascii//TRANSLIT', $char);
        $char = preg_replace('~[^- \w]+~', '', $char);
        $char = mb_strtolower($char, 'UTF-8');
        $char = preg_replace('/[ -]+/', '-', $char);
        return $char;
    }

    protected function _getUrlVersionOfTag($tag)
    {
        $db = $this->_getDb();

        $urlVersion = $this->buidoi_fixCharUtf8($tag);
        /* remove
        $urlVersion = preg_replace('/[^a-zA-Z0-9_ -]/', '', utf8_romanize(utf8_deaccent($tag)));
        $urlVersion = preg_replace('/[ -]+/', '-', $urlVersion);
Lưu lại và tận hưởng.

Các bạn có thể test tag có dấu bằng cách click vào tag sau: Việt Nam
 

Facebook Comment

New posts New resources Most viewed threads Threads with more replies