1. THÔNG BÁO
    VIỆC XÁC NHẬN TK QUA EMAIL BỊ LỖI, CÁC BẠN NÊN ĐĂNG KÝ LẠI LÀ ĐƯỢC LUÔN NHÉ!
    Diễn đàn seo - Để hạn chế SPAM, BQT chỉ cho phép mỗi thành viên đăng trong BOX RAO VẶT 1 bài/12 giờ!
    Các thành viên chung IP được đăng trong BOX RAO VẶT 2 bài/1IP/12 giờ!
    TẤT CẢ CÁC TRƯỜNG HỢP AUTO POST SẼ BỊ DELETED ALL POST & FILTER DOMAIN
    Dismiss Notice

Hướng dẫn sửa lỗi tag xenforo tiếng việt không dấu

Thảo luận trong 'Xenforo' bắt đầu bởi admin, 16/5/16.

  1. admin Administrator Staff Member

    admin

    Diễn đàn SEO - Cộng đồng SEOer Việt Nam - forum SEOBEN - Bạn đang xem bài viết Hướng dẫn sửa lỗi tag xenforo tiếng việt không dấu trong mục Xenforo
    Hướng dẫn viết hoa chữ cái đầu tiêu đề cho Xenforo bằng php ... by admin
    Hướng dẫn fix chữ in hoa cho ký tự đầu tiên tags xenforo ... by admin
    Cách sử dụng Tag hiệu quả cho bài viết và sản phẩm trong SEO ... by giatot123

    Có nhiều bạn gặp phải vấn đề trong tag url bị mất một vài ký tự:
    Ví dụ:
    Mã:
    Title: Hướng dẫn sửa lỗi tag xenforo tiếng việt không dấu
    Url: /hung-dn-sua-loi-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.

    Hướng dẫn xử lý dấu tiếng việt url trong tag xenforo

    Edit
    \library\XenForo\DataWriter\Tag.php
    \library\XenForo\Model\Tag.php

    Thêm function dưới đây
    PHP:
    public function seomods_fixCharUtf8($char)
        {
            
    /* www.seomods.co.uk */
            
    $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;
        }
    Trong function _getUrlVersionOfTag($tag) ta thay thế như sau
    PHP:
    protected function _getUrlVersionOfTag($tag)
        {

            
    $db $this->_getDb();
            
    /* thêm dòng này */
            
    $urlVersion $this->seomods_fixCharUtf8($tag);
            
    /* xóa bỏ đoạn này
            $urlVersion = preg_replace('/[^a-zA-Z0-9_ -]/', '', utf8_romanize(utf8_deaccent($tag)));
            $urlVersion = preg_replace('/[ -]+/', '-', $urlVersion);
            */
    Qua đây có thể nói là khá dễ dàng xử lý lỗi url tag tiếng việt không dấu cho xenforo.
    Chúc thành công.

    Bài viết thuộc SEOBEN​
     
    news thích bài này.
  2. namchelsea New Member

    namchelsea
    Bạn hướng dẫn kỹ hơn được ko mình làm hoài không được .
    Thêm function dưới đây
    Mã:
    public function seomods_fixCharUtf8($char)
        {
            /* www.seomods.co.uk */
            $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;
        }

    vào đâu chỉ mình rõ với .....................


    Cho mình hỏi thêm nữa là cái này có cần cài thêm addon tag của tinh tế không
     
    admin thích bài này.
  3. Thớt REPLY

    admin Administrator Staff Member

    admin
    Chào bạn. Hiện tại mình đang sử dụng và không cài xentag tinh tế.
    Việc fix lỗi tag này rất đơn giản bạn à, hàm php trên chẳng qua xử lý chuỗi utf-8 cho tiếng việt, nó hoạt động xử lý trước khi tag được add vào cơ sở dữ liệu.
    Bạn cài thử 2 file mình upload nên xem còn lỗi không? Chú ý update file cũ lại nhé.
     

    Các file đính kèm:

    TD2308 thích bài này.
  4. namchelsea New Member

    namchelsea
    Ôi được rồi phải nói tuyệt vời cảm ơn bạn rất nhiều
     
    seomods and admin like this.
  5. Thớt REPLY

    admin Administrator Staff Member

    admin
    Mình cũng mới chơi xenforo nên vẫn chưa thể hiểu được hết cấu trúc để có thể tự dev hoặc chỉnh sửa những vẫn đề nhỏ, tuy nhiên về php mysql mình cũng nắm cơ bản, bạn có vướng mắc gì mình có thể giúp được bạn mình rất vui!
     
  6. TD2308 New Member

    TD2308
    Đã sửa được lỗi tag. Cám ơn bạn :)
     
  7. nobita8x New Member

    nobita8x
    Hix bác ơi em up vào host rồi mà ko hiểu sao lỗi tags trên 4rum của em không hiện gì cả, bác kiểm tra lỗi giúp em được không ợ ?
    travelmapvn.net
    em còn newbie không biết nhiều.
    thx bác.
     
    seomods thích bài này.
  8. seomods Moderator

    seomods
    Sorry vì không cập nhật thông tin thắc mắc của bạn. Mình vừa vô site bạn check thấy đã xử lý ok. Chúc bạn vui vẻ!
     

Chia sẻ trang này