Tim rơi lệ
[Code] Việt hóa URL
on 10/12/2013Tim rơi lệ
Mặc dù forumtion đã câp nhật URL theo tiêu đề từ rất lâu, tuy nhiên đến nay vẫn không hỗ trợ Tiếng Việt.
Cách thường dùng nhất hiện nay là cài đặt ngôn ngữ hệ thống về Tiếng Anh, cách này không tiện với những diễn đàn mà thành viên ít dùng Tiếng Anh, hơn nữa URL cũng không hiển thị tốt với Tiếng Việt có dấu.
Bài viết này, mình sẽ hướng dẫn cách tạo URL theo tiêu đề mà không phụ thuộc vào ngôn ngữ diễn đàn.
Phần 1: Sửa URL trang web
PunBB + PhpBB2:
ACP >> Display >> Templates >> QLTT >> overall_header
Tìm:
- Code:
<title>{SITENAME_TITLE}{PAGE_TITLE}</title>
- Code:
<script type="text/javascript">
//<![CDATA[
function lang_vi(a) {
a = a.toLowerCase();
a = a.replace(/\u00e0|\u00e1|\u1ea1|\u1ea3|\u00e3|\u00e2|\u1ea7|\u1ea5|\u1ead|\u1ea9|\u1eab|\u0103|\u1eb1|\u1eaf|\u1eb7|\u1eb3|\u1eb5/g, "a");
a = a.replace(/\u00e8|\u00e9|\u1eb9|\u1ebb|\u1ebd|\u00ea|\u1ec1|\u1ebf|\u1ec7|\u1ec3|\u1ec5/g, "e");
a = a.replace(/\u00ec|\u00ed|\u1ecb|\u1ec9|\u0129/g, "i");
a = a.replace(/\u00f2|\u00f3|\u1ecd|\u1ecf|\u00f5|\u00f4|\u1ed3|\u1ed1|\u1ed9|\u1ed5|\u1ed7|\u01a1|\u1edd|\u1edb|\u1ee3|\u1edf|\u1ee1/g, "o");
a = a.replace(/\u00f9|\u00fa|\u1ee5|\u1ee7|\u0169|\u01b0|\u1eeb|\u1ee9|\u1ef1|\u1eed|\u1eef/g,
"u");
a = a.replace(/\u1ef3|\u00fd|\u1ef5|\u1ef7|\u1ef9/g, "y");
a = a.replace(/\u0111/g, "d");
a = a.replace(/\W+/g, "-");
a = a.replace(/^\-+|\-+$/g, "");
a = a.replace(/(-group)$/, "");
return a.replace(/(-page-\d+)$/, "")
}
var path = location.pathname,
canonical = path + location.search + location.hash;
/(\-category|\-forum|\-topic|\-group)/.test(path) && history.replaceState(null, null, canonical.slice(1).replace(/(\-category|\-forum|\-topic|\-group)/, "-" + lang_vi(document.title)));
//]]>
</script>
Bước 1: ACP >> Modules >> HTML & JAVASCRIPT >> Javascript Codes >> Create a new javascript:
Javascript Code *
- Code:
function lang_vi(a) {
a = a.toLowerCase();
a = a.replace(/\u00e0|\u00e1|\u1ea1|\u1ea3|\u00e3|\u00e2|\u1ea7|\u1ea5|\u1ead|\u1ea9|\u1eab|\u0103|\u1eb1|\u1eaf|\u1eb7|\u1eb3|\u1eb5/g, "a");
a = a.replace(/\u00e8|\u00e9|\u1eb9|\u1ebb|\u1ebd|\u00ea|\u1ec1|\u1ebf|\u1ec7|\u1ec3|\u1ec5/g, "e");
a = a.replace(/\u00ec|\u00ed|\u1ecb|\u1ec9|\u0129/g, "i");
a = a.replace(/\u00f2|\u00f3|\u1ecd|\u1ecf|\u00f5|\u00f4|\u1ed3|\u1ed1|\u1ed9|\u1ed5|\u1ed7|\u01a1|\u1edd|\u1edb|\u1ee3|\u1edf|\u1ee1/g, "o");
a = a.replace(/\u00f9|\u00fa|\u1ee5|\u1ee7|\u0169|\u01b0|\u1eeb|\u1ee9|\u1ef1|\u1eed|\u1eef/g,
"u");
a = a.replace(/\u1ef3|\u00fd|\u1ef5|\u1ef7|\u1ef9/g, "y");
a = a.replace(/\u0111/g, "d");
a = a.replace(/\W+/g, "-");
a = a.replace(/^\-+|\-+$/g, "");
a = a.replace(/(-group)$/, "");
return a.replace(/(-page-\d+)$/, "")
}
var path = location.pathname,
canonical = path + location.search + location.hash;
/(\-category|\-forum|\-topic|\-group)/.test(path) && history.replaceState(null, null, canonical.slice(1).replace(/(\-category|\-forum|\-topic|\-group)/, "-" + lang_vi(document.title)));
Tuy nhiên, mục đích của chúng ta là thay đổi URL càng nhanh càng tốt, nên bạn cần bỏ chọn trong mục Placement, lấy URL của file javascript vừa tạo, và làm tiếp bước 2.
Bước 2: ACP >> QLTT >> Forum promotion >> Search engines >> Other Meta Tags :
Metatags Administration >> Add type : Link javascript
Referencing : metatags >> "src" attribute : Dùng URL của file javascript đã tạo ở bước 1.
Với cách này code sửa URL sẽ được chạy sớm nhất, trước cả CSS và Javascript của diễn đàn, nếu để ý, bạn chỉ thấy URL trang web nháy nhẹ khi thay đổi. Có thể áp dụng cách này với PunBB + PhpBB2 nếu bạn không thích sửa Temp
Phần 2: Sửa URL liên kết
Tạo file javascript, đặt In all the pages.
- Code:
$(function () {
$("a[href^='/c'], a[href^='/f'], a[href^='/t']").attr({
href: function () {
var a = $.trim($(this).text());
if ("" != a) return this.href.replace(location.origin, "").replace(/(\-category|\-forum|\-topic)/, "-" + lang_vi(a.replace(/Re:\s/i, "")))
}
});
});
Ghi chú:
ligerv từng bàn về Việt hóa URL có tốt cho SEO không, vì ở đây là dùng javascript, mình cũng không chắc về vụ SEO nhưng xem trên Google analytics thì nó hiển thị URL Tiếng Việt, có vẻ là chỉ cần chạy trước mã theo dõi của Google là được.
Nguồn: devs
No Comment.