Giới thiệu
- Không cần sửa lại template mỗi sự kiện.
- Thêm nhanh qua widget HTML.
- Tự động ẩn khi hết event.
Code
Dán code bên dưới trong template<style id="evt-icon-base">
[data-event-slot]{display:none!important;}
@keyframes lanternSwing{0%{transform:rotate(-6deg)}50%{transform:rotate(6deg);filter:drop-shadow(0 0 10px rgba(255,235,59,.6))}100%{transform:rotate(-6deg)}}
.logotop {position: relative;display: inline-block;}
</style>
<script>
//<\[\/event\]/i);
var d=txt.match(/\[end\](.*?)\[\/end\]/i);
return e?{svg:e[1].trim(),end:d?d[1].trim():null}:null;
}
function validDate(dateStr){
if(!dateStr)return true;
var now=new Date();
var end=new Date(dateStr.replace(/(\d{2})\/(\d{2})\/(\d{4})/,"$2/$1/$3"));
return now<=end;
}
function init(){
var w=document.querySelector("[data-event-slot]");
if(!w)return;
var t=parseShortcode(w.innerHTML);
if(!t)return;
if(!validDate(t.end))return;
var logo=document.querySelector(LOGO_WRAP_SEL);
if(!logo)return;
w.style.display="none";
var h=document.createElement("span");
h.setAttribute("aria-hidden","true");
applyStyle(h);
h.innerHTML=t.svg;
logo.appendChild(h);
}
if(document.readyState!=="loading")init();
else document.addEventListener("DOMContentLoaded",init);
})();
/*]]>*/
</script>
⚠️ Lưu ý về phần tử .logotop
Nếu template của bạn dùng selector khác (ví dụ .header-logo hoặc #logo-wrap), hãy cập nhật dòng:
var LOGO_WRAP_SEL = ".logotop";
trong đoạn script cho phù hợp với cấu trúc trang của bạn.
Tạo widget HTML
Vào Bố cục → Thêm tiện ích → HTML/Javascript, dán nội dung sau:<div data-event-slot> [event] <svg viewBox="0 0 100 100"> <circle cx="50" cy="50" r="40" fill="#ff6b88"></circle> </svg> [/event] [end]31/10/2025[/end] </div>
- Bạn có thể thay phần <svg>...</svg> bằng bất kỳ biểu tượng nào cho sự kiện, ví dụ trái tim, hoa, pháo hoa, đèn lồng,…
- Và 31/10/2025 thành thời gian kết thúc event
Hoạt động tự động
- Tự động hiển thị biểu tượng cạnh logo.
- Biểu tượng lắc nhẹ nhờ animation
lanternSwing. - Hết hạn (
[end]) → tự ẩn, không cần xóa thủ công.
