Alias trong Joomla được tạo tự động từ tiêu đề bài viết. Để đảm bảo alias hỗ trợ tiếng Việt, bạn cần kiểm tra và chỉnh sửa file xử lý alias.
Vị trí file xử lý alias: tuỳ vào ngôn ngữ bạn đang dùng để chắc chắc chắn có thể sửa luôn cả 2 file này
- File
localise.php
trong thư mục/language/vi-VN/
. - File
localise.php
trong thư mục/language/en-GB/
.
Dưới đây là ví dụ nếu bạn sử dụng tiếng việt
<?php
/**
* @package Joomla.Language
*
* @copyright (C) 2010 Open Source Matters, Inc. <https://www.joomla.org >
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* @phpcs:disable Squiz.Classes.ValidClassName.NotCamelCaps
* @phpcs:disable PSR1.Classes.ClassDeclaration.MissingNamespace
*/
// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects
/**
* vi-VN localise class.
*
* @since 1.6
*/
abstract class Vi_VNLocalise
{
/**
* Returns the potential suffixes for a specific number of items
*
* @param integer $count The number of items.
*
* @return array An array of potential suffixes.
*
* @since 1.6
*/
public static function getPluralSuffixes($count)
{
if ($count == 0) {
return ['0'];
} elseif ($count == 1) {
return ['ONE', '1'];
} else {
return ['OTHER', 'MORE'];
}
}
/**
* Hàm xử lý alias cho tiếng Việt
*
* @param string $string Chuỗi cần chuyển đổi thành alias.
*
* @return string Alias đã được xử lý.
*
* @since 1.6
*/
public static function transliterate($string)
{
// Bảng quy đổi từ ký tự có dấu sang không dấu
$patterns = [
'/[áàảãạăắằẳẵặâấầẩẫậ]/u' => 'a',
'/[éèẻẽẹêếềểễệ]/u' => 'e',
'/[íìỉĩị]/u' => 'i',
'/[óòỏõọôốồổỗộơớờởỡợ]/u' => 'o',
'/[úùủũụưứừửữự]/u' => 'u',
'/[ýỳỷỹỵ]/u' => 'y',
'/đ/u' => 'd',
'/[^a-zA-Z0-9\-]/u' => '-', // Thay thế ký tự đặc biệt bằng dấu gạch ngang
'/-+/' => '-', // Loại bỏ nhiều dấu gạch ngang liên tiếp
];
// Áp dụng bảng quy đổi
$string = preg_replace(array_keys($patterns), array_values($patterns), $string);
// Chuyển về chữ thường và loại bỏ khoảng trắng thừa
$string = strtolower(trim($string, '-'));
return $string;
}
}