Xem thêm Tạo đường dẫn URL thân thiện trong Prestashop
Cách làm
1. Mở file /js/admin.js. Sao lưu file
Bước 1: thêm hàm strUnicodeToAscii
function strUnicodeToAscii(str){ str = str.replace(/[\'\~\@\#\%\^\&]/g,''); str = str.replace(/[\u0105\u0104\u00E4\u00E5\u00E0\u00C0\u1EA3\u1EA2\u00E3\u00C3\u00E1\u00C1\u1EA1\u1EA0\u0103\u0102\u1EB1\u1EB0\u1EB3\u1EB2\u1EB5\u1EB4\u1EAF\u1EAE\u1EB7\u1EB6\u00E2\u00C2\u1EA7\u1EA6\u1EA9\u1EA8\u1EAB\u1EAA\u1EA5\u1EA4\u1EAD\u1EAC]/g,'a'); str = str.replace(/[\u00E7\u010D\u0107\u0106]/g,'c'); str = str.replace(/[\u0111\u0110\u010F]/g,'d'); str = str.replace(/[\u00EB\u0119\u011B\u0118\u00E8\u00C8\u1EBB\u1EBA\u1EBD\u1EBC\u00E9\u00C9\u1EB9\u1EB8\u00EA\u00CA\u1EC1\u1EC0\u1EC3\u1EC2\u1EC5\u1EC4\u1EBF\u1EBE\u1EC7\u1EC6]/g,'e'); str = str.replace(/[\u00EC\u00CC\u1EC9\u1EC8\u0129\u0128\u00ED\u00CD\u1ECB\u1ECA\u00EE\u00EF]/g,'i'); str = str.replace(/[\u0142\u0141\u013E\u013A]/g,'l'); str = str.replace(/[\u00F1\u0148]/g,'n'); str = str.replace(/[\u00F2\u00D2\u1ECF\u1ECE\u00F5\u00F6\u00F8\u00D5\u00F3\u00D3\u1ECD\u1ECC\u00F4\u00D4\u1ED3\u1ED2\u1ED5\u1ED4\u1ED7\u1ED6\u1ED1\u1ED0\u1ED9\u1ED8\u01A1\u01A0\u1EDD\u1EDC\u1EDF\u1EDE\u1EE1\u1EE0\u1EDB\u1EDA\u1EE3\u1EE2]/g,'o'); str = str.replace(/[\u0159\u0155]/g,'r'); str = str.replace(/[\u015B\u015A\u0161]/g,'s'); str = str.replace(/[\u0165]/g,'t'); str = str.replace(/[\u00F9\u00D9\u1EE7\u1EE6\u0169\u0168\u00FA\u00DA\u1EE5\u1EE4\u01B0\u01AF\u1EEB\u1EEA\u1EED\u1EEC\u1EEF\u1EEE\u1EE9\u1EE8\u1EF1\u1EF0\u00FB\u00FC\u016F]/g,'u'); str = str.replace(/[\u1EF3\u1EF2\u1EF7\u1EF6\u1EF9\u1EF8\u00FD\u00DD\u1EF5\u1EF4\u00FF]/g,'y'); str = str.replace(/[\u017C\u017A\u017B\u0179\u017E]/g,'z'); str = str.replace(/[\u0153]/g,'oe'); str = str.replace(/[\u00E6]/g,'ae'); str = str.replace(/[\u00DF]/g,'ss'); str = str.replace(/[^a-z0-9\s\'\:\/\[\]-]/g,''); str = str.replace(/[\s\'\:\/\[\]-]+/g,' '); return str; }
2. Tìm hàm str2url và sửa lại như sau
Code
function str2url(str,encoding,ucfirst) { str = str.toUpperCase(); str = str.toLowerCase(); str = strUnicodeToAscii(str); str = str.replace(/[ ]/g,'-'); str = str.replace(/[\/]/g,'-'); if (ucfirst == 1) { c = str.charAt(0); str = c.toUpperCase()+str.slice(1); } return str; } Bước 3 tìm hàm strToAltImgAttr sửa lại như sau {codecitation} function strToAltImgAttr(str,encoding,ucfirst) { str = strUnicodeToAscii(str); if (ucfirst == 1) { c = str.charAt(0); str = c.toUpperCase()+str.slice(1); } return str; }3. Mở file /classes/Tools.php
Tìm hàm link_rewrite và sửa lại như sau
Dòng 150
static public function link_rewrite($str, $utf8_decode = false) { $purified = ''; $length = Tools::strlen($str);//remove any '-' from the string they will be used as concatonater$str = str_replace('-', ' ', $str); $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",);
$str = strtr($str, $trans); if ($utf8_decode) $str = utf8_decode($str); for ($i = 0; $i < $length; $i++) { $char = Tools::substr($str, $i, 1); if (Tools::strlen(htmlentities($char)) > 1) { $entity = htmlentities($char, ENT_COMPAT, 'UTF-8'); $purified .= $entity{1}; } elseif (preg_match('|[[:alpha:]]{1}|u', $char)) $purified .= $char; elseif (preg_match('<[[:digit:]]|-{1}>', $char)) $purified .= $char; elseif ($char == ' ') $purified .= '-'; } return trim(self::strtolower($purified)); }Lưu ý: Lưu file với format UTF-8 without BOM.
Áp dụng cho phiên bản PrestaShop 1.4.4
File js/admin.js dòng 29
/*friendly url for vietnamese *coded by thetoan.cao */ function strUnicodeToAscii(str){ str = str.replace(/[\'\~\@\#\%\^\&]/g,''); str = str.replace(/[\u0105\u0104\u00E4\u00E5\u00E0\u00C0\u1EA3\u1EA2\u00E3\u00C3\u00E1\u00C1\u1EA1\u1EA0\u0103\u0102\u1EB1\u1EB0\u1EB3\u1EB2\u1EB5\u1EB4\u1EAF\u1EAE\u1EB7\u1EB6\u00E2\u00C2\u1EA7\u1EA6\u1EA9\u1EA8\u1EAB\u1EAA\u1EA5\u1EA4\u1EAD\u1EAC]/g,'a'); str = str.replace(/[\u00E7\u010D\u0107\u0106]/g,'c'); str = str.replace(/[\u0111\u0110\u010F]/g,'d'); str = str.replace(/[\u00EB\u0119\u011B\u0118\u00E8\u00C8\u1EBB\u1EBA\u1EBD\u1EBC\u00E9\u00C9\u1EB9\u1EB8\u00EA\u00CA\u1EC1\u1EC0\u1EC3\u1EC2\u1EC5\u1EC4\u1EBF\u1EBE\u1EC7\u1EC6]/g,'e'); str = str.replace(/[\u00EC\u00CC\u1EC9\u1EC8\u0129\u0128\u00ED\u00CD\u1ECB\u1ECA\u00EE\u00EF]/g,'i'); str = str.replace(/[\u0142\u0141\u013E\u013A]/g,'l'); str = str.replace(/[\u00F1\u0148]/g,'n'); str = str.replace(/[\u00F2\u00D2\u1ECF\u1ECE\u00F5\u00F6\u00F8\u00D5\u00F3\u00D3\u1ECD\u1ECC\u00F4\u00D4\u1ED3\u1ED2\u1ED5\u1ED4\u1ED7\u1ED6\u1ED1\u1ED0\u1ED9\u1ED8\u01A1\u01A0\u1EDD\u1EDC\u1EDF\u1EDE\u1EE1\u1EE0\u1EDB\u1EDA\u1EE3\u1EE2]/g,'o'); str = str.replace(/[\u0159\u0155]/g,'r'); str = str.replace(/[\u015B\u015A\u0161]/g,'s'); str = str.replace(/[\u0165]/g,'t'); str = str.replace(/[\u00F9\u00D9\u1EE7\u1EE6\u0169\u0168\u00FA\u00DA\u1EE5\u1EE4\u01B0\u01AF\u1EEB\u1EEA\u1EED\u1EEC\u1EEF\u1EEE\u1EE9\u1EE8\u1EF1\u1EF0\u00FB\u00FC\u016F]/g,'u'); str = str.replace(/[\u1EF3\u1EF2\u1EF7\u1EF6\u1EF9\u1EF8\u00FD\u00DD\u1EF5\u1EF4\u00FF]/g,'y'); str = str.replace(/[\u017C\u017A\u017B\u0179\u017E]/g,'z'); str = str.replace(/[\u0153]/g,'oe'); str = str.replace(/[\u00E6]/g,'ae'); str = str.replace(/[\u00DF]/g,'ss'); str = str.replace(/[^a-z0-9\s\'\:\/\[\]-]/g,''); str = str.replace(/[\s\'\:\/\[\]-]+/g,' '); str = str.replace(/[ ]/g,'-'); str = str.replace(/[\/]/g,'-'); return str; } function str2url(str,encoding,ucfirst) { str = str.toUpperCase(); str = str.toLowerCase(); str = strUnicodeToAscii(str); if (ucfirst == 1) { c = str.charAt(0); str = c.toUpperCase()+str.slice(1); } return str; } function strToAltImgAttr(str,encoding,ucfirst) { str = strUnicodeToAscii(str); if (ucfirst == 1) { c = str.charAt(0); str = c.toUpperCase()+str.slice(1); } return str; } /*friendly url for vietnamese *coded by thetoan.cao */File classes/Tools.php dòng 953
public static function str2url($str) { if (function_exists('mb_strtolower')) $str = mb_strtolower($str, 'utf-8'); /*friendly url for vietnamese *coded by thetoan.cao */ $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",); $str = trim($str); $str = strtr($str, $trans); /*friendly url for vietnamese *coded by thetoan.cao */ $str = preg_replace('/[\x{0105}\x{0104}\x{00E0}\x{00E1}\x{00E2}\x{00E3}\x{00E4}\x{00E5}]/u','a', $str); $str = preg_replace('/[\x{00E7}\x{010D}\x{0107}\x{0106}]/u','c', $str); $str = preg_replace('/[\x{010F}]/u','d', $str); $str = preg_replace('/[\x{00E8}\x{00E9}\x{00EA}\x{00EB}\x{011B}\x{0119}\x{0118}]/u','e', $str); $str = preg_replace('/[\x{00EC}\x{00ED}\x{00EE}\x{00EF}]/u','i', $str); $str = preg_replace('/[\x{0142}\x{0141}\x{013E}\x{013A}]/u','l', $str); $str = preg_replace('/[\x{00F1}\x{0148}]/u','n', $str); $str = preg_replace('/[\x{00F2}\x{00F3}\x{00F4}\x{00F5}\x{00F6}\x{00F8}\x{00D3}]/u','o', $str); $str = preg_replace('/[\x{0159}\x{0155}]/u','r', $str); $str = preg_replace('/[\x{015B}\x{015A}\x{0161}]/u','s', $str); $str = preg_replace('/[\x{00DF}]/u','ss', $str); $str = preg_replace('/[\x{0165}]/u','t', $str); $str = preg_replace('/[\x{00F9}\x{00FA}\x{00FB}\x{00FC}\x{016F}]/u','u', $str); $str = preg_replace('/[\x{00FD}\x{00FF}]/u','y', $str); $str = preg_replace('/[\x{017C}\x{017A}\x{017B}\x{0179}\x{017E}]/u','z', $str); $str = preg_replace('/[\x{00E6}]/u','ae', $str); $str = preg_replace('/[\x{0153}]/u','oe', $str); // Remove all non-whitelist chars. $str = preg_replace('/[^a-zA-Z0-9\s\'\:\/\[\]-]/','', $str); $str = preg_replace('/[\s\'\:\/\[\]-]+/',' ', $str); $str = preg_replace('/[ ]/','-', $str); $str = preg_replace('/[\/]/','-', $str); // If it was not possible to lowercase the string with mb_strtolower, we do it after the transformations. // This way we lose fewer special chars. $str = strtolower($str); return $str; }Nguồn Kênh 360 Công nghệ
Blogger Comment
Facebook Comment