Tạo trang chuyển hướng liên kết ngoài hay còn gọi là safelink. Safelink là một trang chuyển hướng trước khi người dùng chuyển đến trang đích để phát hiện xem url/liên kết dự định có an toàn hay không khỏi vi-rút và phần mềm độc hại.
Safelink blogspot. |
Ở bài viết này mình sẽ hướng dẫn các bạn tạo một Trang Safelink trên chính Blog của các bạn một cách chuẩn nhất, không bị lỗi như nhiều nơi đã hướng dẫn trước đây.
Hướng dẫn tạo Safelink cho Blogger
Bước 1: Tạo Trang Safelink
- Đăng nhập vào Trang tổng quang Blogger
- Chuyển đến phần Trang, tạo một trang mới
- Chuyển sang phần Chế độ xem HTML và dán đoạn code sau vào:
<style>#header-blog { display: none; } #sidebar-wrapper {display: none;} #main-wrapper {width: 100%;background: #fff;} #footer-wrapper {display: none;}</style>
<div class="ad-placement">
<!--[ Your_ad_code_here ]-->
<a class="ads-here" href="/">Responsive Advertisement</a>
</div>
<div class="safelink-button" id="safelink">
<div style="text-align: center;">
<div class="button outline" id="safelink-wait">Vui lòng đợi...</div>
<script>/*<![CDATA[*/ var currentURL = location.href; var str = currentURL; var res = str.replace('https://www.anhtrainang.com/p/redirect.html' + '?url=', " "); function changeLink(){ var decodedString = Base64.decode(res); window.open(decodedString, '_blank')}; document.write('<a href="#getLink" id="safelink-download" class="button">Nhấn vào đây để tiếp tục</a>'); var linkDL = document.getElementById("safelink-download"); var notif = document.getElementById("safelink-wait"); var time = 15; var textTime = document.createElement("span"); linkDL.parentNode.replaceChild(textTime, linkDL); var id; id = setInterval(function () { time--; if (time < 0) { textTime.parentNode.replaceChild(linkDL, textTime); clearInterval(id); notif.style.display = "none"; linkDL.style.display = "inline-block"; } else { textTime.innerHTML = "Liên kết sẽ xuất hiện sau " + time.toString() + " giây"; }}, 1000); /*]]>*/</script>
</div>
</div>
<div class="safelink-content">
<!--[ Write_your_content_here ]-->
<p>Blogger là dịch vụ miễn phí dành cho giao tiếp, thể hiện bản thân và tự do ngôn luận. Chúng tôi tin Blogger sẽ tăng khả năng cung cấp thông tin, khuyến khích tranh luận lành mạnh và tạo ra các kết nối mới khả thi giữa mọi người. Chúng tôi tin rằng việc kiểm duyệt nội dung này trái với dịch vụ dựa vào quyền tự do ngôn luận.</p><p>Tuy nhiên, để duy trì các giá trị này, chúng tôi cần hạn chế những lạm dụng đe doạ đến khả năng cung cấp dịch vụ này của chúng tôi và quyền tự do ngôn luận mà dịch vụ này khuyến khích. Do đó, có một số giới hạn về loại nội dung được Blogger lưu trữ. Những giới hạn mà chúng tôi đã xác định là những giới hạn tuân thủ cả yêu cầu pháp lý và nhằm mục đích cải thiện dịch vụ nói chung.</p><p>Nếu bạn gặp một blog mà bạn cho là vi phạm chính sách của chúng tôi, hãy báo cáo blog này cho chúng tôi sử dụng liên kết 'Báo cáo lạm dụng' ở đầu mỗi blog trong phần 'Khác' thả xuống. Nếu chủ sở hữu blog đã ẩn liên kết này, bạn vẫn có thể báo cáo lạm dụng trong Trung tâm trợ giúp Blogger.</p><h2 style="text-align: left;">Ranh giới nội dung</h2><p>Chính sách nội dung của chúng tôi đóng một vai trò quan trọng trong việc duy trì trải nghiệm tích cực cho các bạn, những người dùng. Vui lòng tôn trọng các nguyên tắc này. Đôi khi, chúng tôi có thể thay đổi chính sách nội dung của chúng tôi do đó vui lòng kiểm tra lại ở đây. Ngoài ra, xin lưu ý rằng khi áp dụng chính sách dưới đây, chúng tôi có thể có các ngoại lệ dựa trên sự cân nhắc về tính nghệ thuật, giáo dục, tài liệu hay khoa học hoặc nếu có những lợi ích đáng kể khác cho công chúng từ việc không xử lý nội dung.</p><p>Nội dung người lớn: Chúng tôi cho phép nội dung người lớn trên Blogger, bao gồm hình ảnh hoặc video chứa ảnh khỏa thân hoặc hoạt động tình dục. Nếu blog của bạn có chứa nội dung người lớn, vui lòng đánh dấu là 'người lớn' trong cài đặt Blogger của bạn. Chúng tôi cũng có thể đánh dấu blog có nội dung người lớn nếu chủ sở hữu chưa đánh dấu. Mọi blog được đánh dấu là 'người lớn' sẽ được đặt phía sau quảng cáo chuyển tiếp cảnh báo 'nội dung người lớn'. Nếu blog của bạn có quảng cáo chuyển tiếp cảnh báo nội dung người lớn, xin đừng cố gắng bỏ qua hoặc tắt quảng cáo chuyển tiếp - quảng cáo chuyển tiếp là để bảo vệ mọi người.</p><p><b><span style="color: #c27ba0;">Có một số ngoại lệ đối với chính sách nội dung người lớn của chúng tôi:</span></b></p><p>Không sử dụng Blogger làm công cụ để kiếm tiền nhờ nội dung người lớn. Ví dụ: không tạo blog chứa quảng cáo hoặc liên kết đến các trang web khiêu dâm thương mại.</p><p>Chúng tôi không cho phép nội dung khiêu dâm bất hợp pháp, bao gồm hình ảnh, video hoặc nội dung bằng văn bản mô tả hoặc khuyến khích hiếp dâm, loạn luân, giao cấu với động vật hoặc quan hệ tình dục với xác chết.</p><p>Không đăng tải hoặc phân phối hình ảnh hoặc video khiêu dâm hoặc khỏa thân riêng tư khi chưa được sự đồng ý của chủ thể. Nếu ai đó đã đăng hình ảnh hoặc video khiêu dâm hoặc khỏa thân riêng tư của bạn, xin hãy báo cáo với chúng tôi tại đây.</p><p>An toàn cho trẻ em: Chúng tôi có chính sách không khoan nhượng đối với nội dung bóc lột trẻ em. Một số ví dụ về điều này bao gồm:</p><p>Hình ảnh lạm dụng tình dục trẻ em: Chúng tôi sẽ chấm dứt các tài khoản của bất kỳ người dùng nào chúng tôi phát hiện thấy tài khoản đó xuất bản hoặc phân phối hình ảnh lạm dụng tình dục trẻ em. Chúng tôi cũng sẽ báo cáo người dùng đó với cơ quan thi hành luật.</p><p>Quan hệ tình dục với trẻ em: Chúng tôi không cho phép nội dung khuyến khích hoặc kích động hấp dẫn tình dục với trẻ em. Ví dụ: không tạo blog có thư viện hình ảnh về trẻ em trong đó bộ sưu tập hình ảnh hoặc văn bản đi kèm hình ảnh có tính gợi dục và không xuất bản nội dung có bản chất tình dục liên quan đến đối tượng tham gia vị thành niên.</p><p>Lời nói căm thù: Các sản phẩm của chúng tôi là nền tảng cho tự do ngôn luận, tuy nhiên chúng tôi không cho phép sử dụng lời nói căm thù. Lời nói căm thù là một dạng nội dung khuyến khích hoặc dung túng cho bạo lực hoặc có mục đích chính là kích động thù địch nhằm chống lại cá nhân hoặc nhóm dựa trên chủng tộc hoặc nguồn gốc dân tộc, tôn giáo, tình trạng khuyết tật, tuổi tác, quốc tịch, tình trạng cựu chiến binh, xu hướng tình dục, giới tính, bản dạng giới hoặc bất kỳ đặc điểm nào khác gắn liền với hành vi phân biệt đối xử hay khinh miệt có hệ thống.</p><p>Nội dung thô tục: Không đăng nội dung chỉ để gây sốc hay đồ họa. Ví dụ: các bộ sưu tập hình ảnh cận cảnh của những vết thương do súng đạn hoặc cảnh tai nạn mà không có ngữ cảnh hoặc nhận xét bổ sung sẽ vi phạm chính sách này.</p><p>Bạo lực: Không được đăng các nội dung bạo lực hoặc đẫm máu có chủ định gây sốc, giật gân hoặc bạo lực vô cớ. Nếu đăng nội dung hình ảnh trong ngữ cảnh tin tức, tài liệu, khoa học hoặc nghệ thuật, xin lưu ý cung cấp đủ thông tin để giúp mọi người hiểu điều gì đang diễn ra. Trong một số trường hợp, nếu nội dung quá bạo lực hoặc gây sốc thì nội dung đó sẽ không được chấp nhận trong bất kỳ ngữ cảnh nào trên nền tảng của chúng tôi. Cuối cùng, không được khuyến khích người khác thực hiện các hành vi bạo lực cụ thể.</p><p>Nội dung khủng bố: Chúng tôi không cho phép các tổ chức khủng bố sử dụng Blogger vì bất kỳ mục đích gì, kể cả tuyển mộ. Blogger cũng nghiêm cấm nội dung liên quan đến khủng bố, chẳng hạn như nội dung quảng bá hành động khủng bố, kích động bạo lực hoặc ca ngợi các cuộc tấn công khủng bố.</p><p>Nếu đăng nội dung liên quan đến khủng bố vì mục đích giáo dục, khoa học, nghệ thuật hoặc làm tư liệu, hãy nhớ cung cấp đủ thông tin để người xem hiểu được ngữ cảnh. Tuy nhiên, cảnh quay có hình ảnh phản cảm hoặc gây tranh cãi có thể phải giới hạn độ tuổi người xem hoặc phải có màn hình cảnh báo.</p><p>Quấy rối và đe dọa: Không quấy rối hoặc bắt nạt người khác. Bất cứ ai sử dụng Blogger để quấy rối hay bắt nạt có thể bị xóa nội dung vi phạm hoặc bị cấm vĩnh viễn khỏi trang web. Quấy rối trực tuyến cũng là hành động bất hợp pháp ở nhiều nơi và có thể gây ra những hậu quả nghiêm trọng ở ngoài đời. Không đe dọa người khác trên blog của bạn. Ví dụ: không đăng các nội dung đe dọa đến tính mạng của người khác hoặc một nhóm người và không đăng nội dung khuyến khích người đọc thực hiện hành vi bạo lực chống lại người khác hay một nhóm người.</p><p>Bản quyền: Chính sách của chúng tôi là phản hồi các thông báo rõ ràng về vi phạm bản quyền. Bạn có thể tìm thấy thông tin khác về các quy trình liên quan đến bản quyền của chúng tôi tại đây. Ngoài ra, xin vui lòng không cung cấp các liên kết đến các trang web mà người đọc có thể tải xuống trái phép nội dung của người khác.</p><p>Thông tin cá nhân và thông tin bí mật: Không được phép đăng thông tin cá nhân và thông tin bí mật của người khác. Ví dụ: không đăng số thẻ tín dụng, số An sinh xã hội, số điện thoại không công khai và số giấy phép lái xe của người khác. Ngoài ra, không được đăng hay phát tán các hình ảnh hoặc video về trẻ vị thành niên khi không có sự cho phép cần thiết từ các đại điện hợp pháp của họ. Nếu một ai đó đăng hình ảnh hoặc video về trẻ vị thành niên mà không có được sự đồng ý cần thiết, hãy báo cáo cho chúng tôi tại đây. Đồng thời, xin lưu ý rằng trong hầu hết các trường hợp, thông tin đã có sẵn ở một nơi nào đó trên Internet hoặc trong các hồ sơ công khai không được coi là thông tin bí mật hoặc thông tin cá nhân theo chính sách của chúng tôi.</p><p>Mạo danh và xuyên tạc: Không sử dụng Blogger để lừa dối, lừa đảo hoặc gây nhầm lẫn cho người dùng nào bằng cách mạo danh bất kỳ cá nhân hay tổ chức nào mà bạn không đại diện hoặc che giấu quyền sở hữu hay mục đích chính của bạn. Điều này bao gồm hành vi hướng các nội dung về chính trị, vấn đề xã hội hoặc vấn đề được dư luận quan tâm đến người dùng ở quốc gia không phải nước sở tại của bạn, nếu bạn xuyên tạc hoặc cố ý che giấu quốc gia xuất xứ của mình hoặc thông tin chi tiết quan trọng khác về bản thân. Chúng tôi không nói rằng bạn không thể xuất bản nội dung chế nhạo hay châm biếm hoặc sử dụng bút danh hoặc tên hiệu - mà chỉ là bạn nên tránh nội dung có thể khiến người đọc nhầm lẫn về danh tính thật sự của mình.</p><p>Các hoạt động bất hợp pháp: Không sử dụng Blogger để tham gia vào các hoạt động bất hợp pháp hoặc để thúc đẩy các hoạt động nguy hiểm và bất hợp pháp. Ví dụ: không viết blog khuyến khích mọi người uống rượu và lái xe. Xin cũng đừng sử dụng Blogger để bán hoặc quảng cáo ma túy. Nếu không, chúng tôi có thể xóa nội dung của bạn. Ngoài ra, trong các trường hợp nghiêm trọng chẳng hạn như những trường hợp liên quan đến lạm dụng trẻ em, chúng tôi có thể báo cáo bạn với cơ quan chức năng.</p><p>Hàng hóa và dịch vụ được quản lý: Không sử dụng Blogger để bán hoặc tạo điều kiện cho việc bán hàng hóa và dịch vụ được quản lý như rượu, cờ bạc, dược phẩm và các thực phẩm chức năng chưa được phê duyệt, thuốc lá, pháo hoa, vũ khí hoặc các thiết bị y tế/sức khỏe.</p><p>Spam: Spam có nhiều hình thức trong Blogger, tất cả mọi hình thức đều có thể dẫn đến việc xóa tài khoản hoặc blog của bạn. Một số ví dụ bao gồm việc tạo các blog được thiết kế để hướng lưu lượng truy cập đến trang web của bạn hoặc để thăng hạng trang web trong danh sách tìm kiếm, đăng nhận xét lên blog của người khác chỉ để quảng bá trang web hoặc sản phẩm của bạn và xóa bỏ nội dung hiện có khỏi các nguồn khác vì mục đích chính là mang lại doanh thu hay lợi ích cá nhân khác.</p><p>Phần mềm độc hại và vi rút: Không tạo các blog lan truyền vi rút, khiến cửa sổ bật lên, cố gắng cài đặt phần mềm khi chưa nhận được sự đồng ý của người đọc hoặc làm ảnh hưởng đến người đọc với mã độc hại. Điều này bị nghiêm cấm trên Blogger.</p><h2 style="text-align: left;">Thi hành Chính sách nội dung của Blogger</h2><p>Vui lòng báo cáo các vi phạm chính sách đáng ngờ cho chúng tôi bằng cách sử dụng liên kết 'Báo cáo lạm dụng' ở đầu mỗi blog trong phần 'Khác' thả xuống hoặc bằng cách nhấp vào đây.</p><p>Nhóm của chúng tôi xem xét cờ của người dùng để tìm vi phạm chính sách. Nếu blog không vi phạm chính sách của chúng tôi, chúng tôi sẽ không thực hiện bất kỳ hành động nào đối với blog hoặc chủ sở hữu blog. Nếu chúng tôi phát hiện thấy rằng blog vi phạm chính sách nội dung của chúng tôi, chúng tôi sẽ thực hiện một hoặc nhiều hành động sau dựa vào mức độ nghiêm trọng của vi phạm:</p><p>Đặt blog sau quảng cáo chuyển tiếp về 'nội dung người lớn'</p><p>Đặt blog sau quảng cáo chuyển tiếp nơi chỉ tác giả của blog mới có thể truy cập nội dung</p><p>Xóa blog, bài đăng trên blog hoặc nội dung xúc phạm</p><p>Vô hiệu hóa quyền truy cập của tác giả vào tài khoản Blogger của họ</p><p>Vô hiệu hóa quyền truy cập của tác giả vào tài khoản Google của họ</p><p>Báo cáo người dùng cho cơ quan thi hành luật</p><p>Chúng tôi cũng có thể thực hiện bất kỳ hành động nào nêu trên nếu chúng tôi thấy rằng một người dùng đã tạo nhiều blog có hành vi lạm dụng lặp đi lặp lại. Nếu bạn đã có một blog bị vô hiệu hóa, không tạo blog thay thế tham gia vào hoạt động tương tự.</p>
</div>
<div class="safelink-create" style="text-align: center;">
<div class="ad-placement">
<!--[ Your_ad_code_here ]-->
<a class="ads-here" href="/">Responsive Advertisement</a>
</div>
<div id="getLink">
<a class="button" href="javascript:;" onclick="changeLink();" rel="noreferrer noopener">Tiếp tục</a>
</div>
<div class="ad-placement">
<!--[ Your_ad_code_here ]-->
<a class="ads-here" href="/">Responsive Advertisement</a>
</div>
</div>
Chú ý: Thay link mà mình tô đỏ trong đoạn code thành Link Trang mà bạn vừa tạo (chính là Trang đặt đoạn code trên). Các bạn có thể đặt tên là redirect hoặc chuyen-huong gì tùy các bạn cũng được
Bước 2: Thêm CSS và Javascript xóa ?m=1
Sử dụng đoạn code Css dưới đây dán trên thẻ ]]></b:skin>
/* Safelink */
:root {--link-outline-color:#48525c;--link-bg-color:#204ecf;}
.button{display: inline-flex;align-items: center;margin: 15px 15px;padding: 10px 20px;outline: 0;border: 0;border-radius: 2px;color: #fefefe;background-color: var(--link-bg-color);font-size: 14px;white-space: nowrap;overflow: hidden;max-width: 100%;line-height: 2em}
.button.outline{color: var(--link-outline-color);background-color: transparent;border: 1px solid #ebeced}
.button.outline:hover{border-color: var(--link-bg-color)}
.safelink-button, .safelink-create > *{margin: 1.8em 0}
.safelink-button span{display: block;font-size: 12px}
#getLink{margin: 5px 0}
#getLink .button{display: none}
#getLink:target .button{display: inline-flex}
Tiếp đến, để xóa ?m=1 các bạn sử dụng đoạn Js dưới đây dán trên thẻ </head>
:
<script>
//<![CDATA[
var uri = window.location.toString();
if (uri.indexOf("?m=1", "?m=1") > 0) {
var clean_uri = uri.substring(0, uri.indexOf("?m=1"));
window.history.replaceState({}, document.title, clean_uri);
}//]]>
</script>
Bước 3: Thêm Javascript chuyển hướng và mã hóa URL
Các bạn sử dụng đoạn code dưới đây dán lên thẻ </body>
<b:if cond='data:view.isSingleItem'>
<script>
/*<![CDATA[*/
var Base64 = {
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
encode: function(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
decode:function(input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;
},
_utf8_encode:function(string) {
string = string.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
_utf8_decode:function(utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
} else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
};
var protected_links = "";
var a_to_va = 0;
var a_to_vb = 0;
var a_to_vc = "";
function auto_safelink() {
auto_safeconvert();
};
function auto_safeconvert() {
var a_to_vd = window.location.hostname;
if (protected_links != "" && !protected_links.match(a_to_vd)) {
protected_links += ", " + a_to_vd;
} else if (protected_links == "") {
protected_links = a_to_vd;
}
var a_to_ve = "";
var a_to_vf = new Array();
var a_to_vg = 0;
a_to_ve = document.getElementsByTagName("a");
a_to_va = a_to_ve.length;
a_to_vf = a_to_fa();
a_to_vg = a_to_vf.length;
var a_to_vh = false;
var j = 0;
var daftarPostingan = ["https://www.anhtrainang.com/p/redirect.html"];
var randomPostingan = daftarPostingan[Math.floor(Math.random() * daftarPostingan.length)];
var a_to_vi = "";
for (var i = 0; i < a_to_va; i++) {
a_to_vh = false;
j = 0;
while (a_to_vh == false && j < a_to_vg) {
a_to_vi = a_to_ve[i].href;
if (a_to_vi.match(a_to_vf[j]) || !a_to_vi || !a_to_vi.match("https")) {
a_to_vh = true;
}
j++;
}
if (a_to_vh == false) {
var encryptedUrl = Base64.encode(a_to_vi);
a_to_ve[i].href = randomPostingan + "?url=" + encryptedUrl;
a_to_ve[i].rel = "noopener noreferrer";
a_to_vb++;
a_to_vc += i + ":::" + a_to_ve[i].href + "\n";
}
}
var a_to_vj = "";
var a_to_vk = "";
if (a_to_vj) {
a_to_vj.innerHTML += a_to_vb;
}
if (a_to_vk) {
a_to_vk.innerHTML += a_to_va;
}
};
function a_to_fa() {
var a_to_vf = new Array();
protected_links = protected_links.replaceAll(" ", "");
a_to_vf = protected_links.split(",");
return a_to_vf;
};
/*]]>*/
</script>
<!--[Protect link from encode]-->
<script>
protected_links = "facebook.com, instagram.com, twitter.com";
auto_safelink();
</script>
</b:if>
Thay link mà mình tô đỏ trong đoạn code thành link Trang mà bạn tạo lúc nãy ở Bước 1.
Loại trừ các trang web như facebook, intagram, twitter không cần safelink bằng cách thêm url vào protected_links, mỗi web cách nhau bằng dấu phẩy.
Lời kết
Trên đây là cách tạo trang chuyển hướng liên kết ngoài chuẩn nhất cho blogspot. Mình cũng đã từng sử dụng cách này trên chính theme cũ của mình. Nếu các bạn còn vướng mắt chỗ nào chưa làm được cứ bình luận phía dưới mình giúp cho nhé!
Chúc các bạn thành công!