1. Diễn đàn SEO - SEOBEN
    DIỄN ĐÀN SEO TỐT NHẤT VIỆT NAM: Cho phép SEOer đăng tin rao vặt giới thiệu sản phẩm
    NOTE: Nghiêm cấm post bài trùng lặp, nội dung spin vô nghĩa! BQT chấp nhận bài được SPIN kỹ lưỡng
    BQT sẽ rà soát định kỳ: Những trường hợp cố tình vi phạm sẽ bị banned và filter domain
    ( Vi phạm đừng oán BQT vô tình )
    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 - 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
    Nêu ứng dụng Tag thế nào cho hiệu quả trong dịch vụ SEO - Ezoom Việt Nam ... by bomkick

    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