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 và Forum khác như WordPress, Drupal, phpBB, SMF, vBulletin, MyBB,...
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: Nội quy đăng bài viết
Đăng trả lời
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ách sửa lỗi tiếng Việt trong Title Alias của Joomla! 1.5

Gửi bài gử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
Bạn không có quyền cần thiết để xem các tệp đính kèm với bài đăng này.
* 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!

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
Liên hệ:

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

Gửi bài gử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

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ài gử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:

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ài gử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!

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

Quay về

Quảng cáo trên trang Web BuaXua.VN