Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.5

Thảo luận các vấn đề về CMS khác
Nội quy chuyên mục
Thành viên đăng quảng cáo trong chuyên mục này sẽ bị xóa toàn bộ bài viết và cấm vĩnh viễn tham gia Diễn đàn.

* Xem qui định đăng bài viết tại đây: viewtopic.php?f=2&t=318247

Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.5

Gửi bàigửi bởi TruongLe » 18/09/2010 - 12:45

Không biết các bạn có để ý thấy là khi bật chức năng SEF (Search Engine Friendly URLs) của Joomla! thì tên liên kết trên thanh địa chỉ của trình duyệt hiển thị không đúng với tên bài viết, cụ thể là bị mất một số ký tự có dấu tiếng Việt.

Thí dụ tên bài viết là:
Mã: Chọn tất cả
Cách cài đặt nhiều hệ điều hành trên cùng một máy vi tính

Còn liên kết trên thanh địa chỉ là:
Mã: Chọn tất cả
http://buaxua.vn/the-news/46-cach-cai-t-nhiu-h-iu-hanh-tren-cung-mt-may-vi-tinh.html

Đây là do lỗi khi chuyển đổi từ tiếng Việt có dấu của Title sang tiếng Việt không dấu cho Title Alias trong Joomla! 1.5. Mà chức năng SEF của Joomla! lại lấy Title Alias để tạo liên kết cho nên tên của liên kết cũng không đúng luôn.

Cách khắc phục của một số bạn là tự sửa Title Alias này lại cho đúng, tuy nhiên điều này hơi mất công. Có một cách khác là làm cho Joomla! 1.5 tự động chuyển đúng từ tiếng Việt có dấu sang tiếng Việt không dấu.

Sau đây là cách sửa lỗi này:

Mở tập tin:
Mã: Chọn tất cả
/libraries/joomla/filter/filteroutput.php

Tìm dòng:
Mã: Chọn tất cả
function stringURLSafe($string)
   {
      //remove any '-' from the string they will be used as concatonater
      $str = str_replace('-', ' ', $string);

      $lang =& JFactory::getLanguage();
      $str = $lang->transliterate($str);

      // remove any duplicate whitespace, and ensure all characters are alphanumeric
      $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);

      // lowercase and trim
      $str = trim(strtolower($str));
      return $str;
   }

Xóa hết các dòng này đi và thay thế bằng:
Mã: Chọn tất cả
   function stringURLSafe($string)
        {
       $trans = array(
      "đ"=>"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",
      "í"=>"i","ì"=>"i","ỉ"=>"i","ĩ"=>"i","ị"=>"i",
      "ư"=>"u","ô"=>"o","ơ"=>"o","ê"=>"e",
      "Ư"=>"u","Ô"=>"o","Ơ"=>"o","Ê"=>"e",
      "ú"=>"u","ù"=>"u","ủ"=>"u","ũ"=>"u","ụ"=>"u",
      "ứ"=>"u","ừ"=>"u","ử"=>"u","ữ"=>"u","ự"=>"u",
      "ó"=>"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",
      "ý"=>"y","ỳ"=>"y","ỷ"=>"y","ỹ"=>"y","ỵ"=>"y",
      "Ý"=>"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",
      "Í"=>"I","Ì"=>"I","Ỉ"=>"I","Ĩ"=>"I","Ị"=>"I",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ư"=>"U","Ô"=>"O","Ơ"=>"O","Ê"=>"E",
      "Ú"=>"U","Ù"=>"U","Ủ"=>"U","Ũ"=>"U","Ụ"=>"U",
      "Ứ"=>"U","Ừ"=>"U","Ử"=>"U","Ữ"=>"U","Ự"=>"U",
      "Ó"=>"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",);
      
        //remove any '-' from the string they will be used as concatonater
        $str = str_replace('-', ' ', $string);

      $str = strtr($str, $trans);
        $lang =& JFactory::getLanguage();
        $str = $lang->transliterate($str);

        // remove any duplicate whitespace, and ensure all characters are alphanumeric
        $str = preg_replace(array('/\s+/','/[^A-Za-z0-9\-]/'), array('-',''), $str);

                // lowercase and trim
                $str = trim(strtolower($str));
                return $str;
        }

Sau khi sửa xong thì save file này lại. Tuy nhiên việc sửa đổi này chỉ có hiệu lực đối với các bài viết từ nay về sau mà thôi, còn các bài viết trước vẫn còn bị lỗi. Bạn phải mở (Edit) bài viết ra và xóa hết toàn bộ ký tự trong ô Alias (nằm ngay phía dưới Title) và nhấn Save (hoặc Apply) các lỗi sẽ được tự động sửa.

Bây giờ trên thanh địa chỉ sẽ là:
Mã: Chọn tất cả
http://buaxua.vn/the-news/46-cach-cai-dat-nhieu-he-dieu-hanh-tren-cung-mot-may-vi-tinh.html

Không còn lỗi mất chữ nữa! :D

Các bạn có thể tải file "filteroutput.php" đã được sửa sẵn cho phiên bản Joomla! 1.5.20 tại đây:
filteroutput.zip


Chúc các bạn thành công. :)

* Xem cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 2.5 tại đây: viewtopic.php?f=12&t=99055
* Hãy sử dụng công cụ tìm kiếm của Diễn đàn trước khi đặt câu hỏi.
* Hãy đặt tên cho Chủ đề diễn tả đúng với nội dung để thuận tiện khi tìm kiếm.
* Hãy chia sẻ kiến thức của bạn vì không chỉ giúp được mọi người mà còn giúp mình ghi nhớ những điều đã biết!
Hình đại diện của thành viên
TruongLe
Thành viên
Thành viên
 
Bài viết: 1684
Ngày tham gia: 14/09/2010 - 20:20

Re: Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.

Gửi bàigửi bởi nguyenxuan08 » 04/10/2010 - 22:06

sao không dùng Joomla! Hello SEF for alias title cho tiện chỉ việc cai vao là ok
nguyenxuan08
Thành viên mới
Thành viên mới
 
Bài viết: 5
Ngày tham gia: 04/10/2010 - 21:27

Re: Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.

Gửi bàigửi bởi woreirsis » 07/02/2015 - 16:54

tình hình là sau khi minh cai tieng viet cho virtuemart.thì trên trang web,có 1 số cụm từ nó dịch sai chính tả.mình muốn sửa lai cho đúng chính tả thì lam sao.thanks!! :cry:
woreirsis
Thành viên mới
Thành viên mới
 
Bài viết: 1
Ngày tham gia: 07/02/2015 - 16:30

Re: Cách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.

Gửi bàigửi bởi TruongLe » 08/02/2015 - 21:04

woreirsis đã viết:tình hình là sau khi minh cai tieng viet cho virtuemart.thì trên trang web,có 1 số cụm từ nó dịch sai chính tả.mình muốn sửa lai cho đúng chính tả thì lam sao.thanks!! :cry:


Bạn đang dùng Joomla! và Virtuemart phiên bản nào?
* Hãy sử dụng công cụ tìm kiếm của Diễn đàn trước khi đặt câu hỏi.
* Hãy đặt tên cho Chủ đề diễn tả đúng với nội dung để thuận tiện khi tìm kiếm.
* Hãy chia sẻ kiến thức của bạn vì không chỉ giúp được mọi người mà còn giúp mình ghi nhớ những điều đã biết!
Hình đại diện của thành viên
TruongLe
Thành viên
Thành viên
 
Bài viết: 1684
Ngày tham gia: 14/09/2010 - 20:20


  • Các chủ đề liên quan
    Trả lời
    Xem
    Bài viết mới nhất

Quay về CMS khác

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào đang trực tuyến2 khách

Dịch vụ hỗ trợ thiết kế Web của BuaXua.vn Dịch vụ hỗ trợ thiết kế trang Web và hướng dẫn sử dụng Joomla!
Quảng cáo trên trang Web BuaXua.VN