Tạo Shoutbox thứ nhất:
ô 1:
TWIG
{{message_list}}
ô 2:
TWIG
{{_self.env.addGlobal('list_like',message|split(';')|slice(0,100)|join(';')|raw)}} {% macro like(id,a) %} {% set like=_self.env.getGlobals()['list_like']|split(id~',')[1]|split(';')[0] %} {% if like|length > 1 %} {% if a==0 %}{{like|split('+')|length}}{% elseif a==1 %}{% for i in 0..(like|split('+')|length-1) %}{% if api.u.get(like|split('+')[i]).uid %}{{api.u.get(like|split('+')[i]).nick}}{% if i < (like|split('+')|length-1) %}, {% endif %}{% endif %}{% endfor %}{% elseif a==2 %}{{like}}{% endif %} {% endif %} {% endmacro %} {% import _self as likes %} {{_self.env.addGlobal('like',likes)}}
Lưu ý tin nhắn 1
Tạo shoubox thứ 2 (dưới sb 1)
ô 1
TWIG
<script type="text/javascript"> function writef(ff,vl) { var md=ff.desc.value; ff.text.value=vl+"[-xcmt-]"+md; } function dang() { var ff=document.forms["formx"]; var nd=ff.desc.value; if(nd==null || nd=="") {window.location="{{api.r.getRequestUri()}}&error=null";}else{ ff.text.value=nd; ff.submit(); } } </script> {%if api.r.get("cmt")==true%}<div class="title">Bình luận - Chia sẻ</div>{%else%} <div class="title">SHOUTBOX HISTORY</div> <div class="menu"><form action="{{form_url}}" method="post" class="chungs" name="formx"> <textarea rows="3" cols="20" name="desc" class="khungnhap"></textarea><input type="hidden" name="text" value=""/><br> <input type="button" value="Chat" class="nutbam" onclick="dang()"> <div class="cll"></div> </form> </div> {%endif%} {%set xmsg=message_list|split("[-end-]")%}{%set sid=0%}{%set sdata={}%}{%set sotrang=7%}{%set hiencmt="true"%}{%set hienform="true"%} {%for i in 0..xmsg|length-1%} {%if "[-uid-]" in xmsg[i] and "[-xcmt-]" not in xmsg[i]%} {%set uid=xmsg[i]|split("[-uid-]")[1]|split("[-msg-]")[0]%} {%set msg=xmsg[i]|split("[-msg-]")[1]|split("[-url-]")[0]%} {%set date=xmsg[i]|split("[-date-]")[1]|split("[-lin-]")[0]%} {%set nicks=api.u.get(xmsg[i]|split("[-nick-]")[1]|split("[-date-]")[0])%} {%set socmt=0%}{%set comment=""%}{%set datecmt="-"%} {%if "[-hidden-]" in msg and api.u.get(api.user_id).uid!=nicks.uid%}{%set ghidden="true"%}{%else%}{%set ghidden=""%}{%endif%} {%set fuid%}{%if api.r.get("f")>=5%}main.php?f={{api.r.get("f")}}{%else%}main.php?{%endif%}{%endset%} {%for i in xmsg|length-1..0%} {%set amsg=xmsg[i]|split("[-msg-]")[1]|split("[-url-]")[0]%} {%set adate=xmsg[i]|split("[-date-]")[1]|split("[-lin-]")[0]%} {%set anicks=api.u.get(xmsg[i]|split("[-nick-]")[1]|split("[-date-]")[0])%} {%if amsg|split("[-xcmt-]")[0]==uid and "[-xcmt-]" in amsg%}{%set socmt=socmt+1%} {%set binhluan%} {%set lmsg=amsg|split("[-xcmt-]")[1]|split("@[")%}{%set sbody=""%}{%for y in 0..lmsg|length%}{%if api.u.get(lmsg[y]|split("]")[0]).uid>5%}{%set sbody=sbody~'<img src="/files/953350/quote1.png"><a href="user_info.php?uid='~api.u.get(lmsg[y]|slice(0,8)).uid~'" class="'~api.u.get(lmsg[y]|slice(0,8)).levelCSS~'">'~api.u.get(lmsg[y]|slice(0,8)).nick~'</a><img src="/files/953350/quote2.png">'~lmsg[y]|split("]")[1]%}{%else%}{%endif%} {%endfor%} {%if sbody|length < 3%}{%set sbody=message%}{%endif%} {%set sbody=sbody|default(amsg|split("[-xcmt-]")[1])%} <div class="menu cmt"><div class="binhluan"><table class="vtable" width="100%" cellpadding="0" cellspacing="1"> <tbody> <tr valign="top"> <td colspan="2" rowspan="2" scope="col" width="5%"><img src="{{anicks.profilephotourl(2,true)}}" class="xbogoc"/></td> <td width="94%" scope="col" align="left"><div class="ctime"><a href="user_info.php?uid={{anicks.uid}}">{{anicks.nick}}</a> {{sbody|raw}}</div></td> </tr> <tr> <td align="left">(<small>{%set ngay=adate|date("d-m-Y H:i:s")%}{%set b="now"|date("d-m-Y H:i:s")%}{% set c = date( b ).diff(date( ngay ))%}{%if c.h==0 and c.i==0 and c.s<=3%}Vừa xong.{%elseif c.h==0 and c.i==0%}{{c.s}} giây trước.{%elseif c.h==0 and c.i>=0%}{{c.i}} phút {{c.s}} giây trước.{%elseif c.h>=1%}{{c.h}} giờ {{c.i}} phút trước.{%elseif c.d>=1%}{{c.d}} ngày trước.{%endif%}</small>)</td> </tr> </tbody> </table></div></div>[-yota-] {%endset%} {%set comment=comment~binhluan%} {%set datecmt=xmsg[i]|split("[-uid-]")[1]|split("[-msg-]")[0]%} {%endif%} {%endfor%} {%if datecmt=="-"%}{%set datecmt=uid%}{%endif%} {%set status%} [-xtcmt-]{{datecmt}}[-page-] {% set id=date|date('disH')%} {%set like=_self.env.getGlobals()['like']%} {%set list_like=_self.env.getGlobals()['list_like']%} <div class="menu chat"> <div class="status"> <table width="100%" cellpadding="0" cellspacing="1"><tbody> <tr valign="top"> <td colspan="2" rowspan="2" scope="col" width="5%"><img src="{{nicks.profilephotourl(2,true)}}" class="ava_sb"/></td> <td width="90%" scope="col" align="left" class="user_sb"> <a href="user_info.php?uid={{nicks.uid}}">{{nicks.nick}}</a><br> <img src="http://nhanhnao.xyz/images/lke.png" style="width:14px;height:14px;margin-bottom:-2px;"> <b>{{nicks.frm_posts}}</b> <img src="http://nhanhnao.xyz/images/cmt.png" style="width:14px;height:14px;margin-bottom:-2px"> <b>{{nicks.frm_topics}}</b><br><img src="http://nhanhnao.xyz/images/star.png" style="width:18px;height:18px;margin-bottom:-3px"><span class="name">{%if nicks.name%}{{nicks.name}}{%else%}http://domain{%endif%}</span></td> </tr> </tbody> </table> <div class="text_sb">{{msg|raw}}<div class="ws">{% if api.user_id %}<i class="fa fa-heart"></i> {% if api.user_id in like.like(id,2)|escape %}<a onclick="alert('Chức Chức năng này chưa hoàn thiện! Vui lòng thử lại sau')">Bỏ thích</a>{% else %}<a onclick="$('#like_{{id}}').submit()">Thích</a>{% endif %}{% endif %} · <a href="/main.php?{%if api.r.get('f')%}f={{api.r.get('f')}}&{%endif%}comment_id={{uid}}">Bình luận{%if socmt>0%}({{socmt}}){%endif%}</a></div> {% if like.like(id,0) > 0 %}<div class="showlike"><a href="main.php?act=like&like_id={{id}}"><button class="button_like" type="button"><i class="fa fa-heart"></i> {{like.like(id,0)}}</button></a> {{like.like(id,1)}} thích điều này </div>{% endif %} </div></div></div>{%if socmt>5 and api.r.get("cmt")!="true"%}<div class="p8"><img src="/files/1020011/icons-new%20copy.png"><a href="/main.php?{%if api.r.get('f')%}f={{api.r.get('f')}}&{%endif%}cmt=true&suid={{uid}}">Xem thêm {{socmt-5}} bình luận</a></div>{%endif%} {% if api.user_id not in like.like(id,1)|escape and api.user_id %} {% if id in list_like|escape %} {% set list_like=list_like|replace({(id~','):(id~','~api.user_id~'+')})|raw %} {% else %} {% set list_like=id~','~api.user_id~';'~list_like %} {% endif %} <form id="like_{{id}}" style="display:none" action="main.php?id=ch_topic_h&uid=224916" method="post"><input type="hidden" name="text" value="{{list_like|raw}}"/></form> {% endif %} {%endset%} {%set form%}{%if api.r.get('comment_id')==uid%}<form action="{{form_url}}" method="post" class="menu cmt" onsubmit="writef(this,'{{uid}}')"><input class="nhaplieu" name="desc" type="text" value="{%if api.r.get("ten")>4%}@[{{api.r.get("ten")}}] {%endif%}"><input type="hidden" name="text" value=""><input type="hidden" name="suid" value="{{uid}}"/><input type="submit" value="Bình luận" class="nutnhan"></form>{%endif%}{%endset%} {%set zcmt=comment|split("[-yota-]")%} {%if api.r.get("cmt")=="true"%} {%if api.r.get("suid")==uid%} {%set messages=status~'<div class="complete">'~comment|split("[-yota-]")|join("")~'</div>'%} {%else%}{%set messages=""%}{%endif%} {%else%} {%set messages=hiencmt=="true"?status~'<div class="complete">'~form~zcmt[socmt-5]~zcmt[socmt-4]~zcmt[socmt-3]~zcmt[socmt-2]~zcmt[socmt-1]~'</div>':status%} {%endif%} {%if ghidden=="true"%}{%set messages=""%}{%endif%} {% set sdata = sdata|merge({ ("thaian"~sid): messages}) %} {% set sid=sid+1%} {%endif%} {%endfor%} {%for i in 0..sid%} {%for j in (i+1)..sid%} {%if (sdata["thaian"~i]|split("[-xtcmt-]")[1]|slice(0,14))*1 < (sdata["thaian"~j]|split("[-xtcmt-]")[1]|slice(0,14))*1 %} {%set temp=sdata["thaian"~j]%} {%set sdata=sdata|merge({("thaian"~j):sdata["thaian"~i]})%} {%set sdata=sdata|merge({("thaian"~i):temp})%} {%endif%} {%endfor%} {%endfor%} {%set spage=api.r.get("pusl")|default(0)%} {%if spage>0%}{%set dau=spage*sotrang%}{%set cuoi=((spage+1)*sotrang)-1%}{%else%}{%set dau=spage*sotrang%}{%set cuoi=((spage+1)*sotrang)-1%}{%endif%} <div style="background-color:#e9eaed;padding-bottom:5px">{%for i in dau..cuoi%}{{sdata["thaian"~i]|split("[-page-]")[1]|raw}}{%endfor%}</div> <center>{%if spage>0%}<a href="main.php?{%if api.r.get('f')>=5%}f={{api.r.get('f')}}{%endif%}&pusl={%if spage==null%}1{%else%}{{spage-1}}{%endif%}#chatne"><<Trang trước</a> | {%endif%}<a href="main.php?{%if api.r.get('f')>=5%}f={{api.r.get('f')}}{%endif%}&pusl={%if spage==null%}1{%else%}{{spage+1}}{%endif%}#chatne">Trang sau>></a></center>
lưu ý thay main.php?id=ch_topic_h&uid=224916 thanh uid topic 1
ô 2
TWIG
{%set dates=message_date%} {%if "[-xcmt-]" in message|slice(0,14)%}[-cmt-]{{message|split("[-xcmt-]")[0]}}{%endif%}[-uid-]{{dates|date("YmdHis")}}[-msg-]{{message}}[-url-]{{file_url}}[-nick-]{{nick|slice(27,8)}}[-date-]{{dates|date("d-m-Y H:i:s")}}[-lin-][-end-]
thêm Html này để có style
HTML5
<style> .title{ background-color: #009688; border: 1px solid; border-color: #009688; padding: 5px; color: #fff; margin-top: 4px; } .menu{ background: #fff; -moz-border: 1px solid; border: 1px solid; -moz-border-color: #DCDBDB #CACACA; border-color: #DCDBDB #CACACA; border-top: none; padding: 6px; color: #00796B; margin-top: 0; } .menu.chat{ margin-top: 5px; border-top: 1px solid; border-color: #DCDBDB #CACACA; } .menu.cmt{ background:#f6f7f8; } textarea{ border: 1px solid #ccc; } input[type="button"]{ background-color: #03A9F4; border: 1px solid #0288D1; color: #FFF; line-height: 14px; vertical-align: baseline; white-space: nowrap; margin-top: 4px; padding: 5px; } .showlike { background-color: #fff; border: 1px solid; border-color: #E2E0E0; padding: 5px; margin-top: 5px; line-height: 1.5; } .button_like { background-color: #E91E63; border: 1px solid #E91E63; color: #fff; white-space: nowrap; padding: 2px 6px; border-radius: 4px; } .ava_sb{ border: 1px solid #D7EDFC; width: 60px; height: 60px; padding: 2px; background: #fff; } .user_sb{ padding-left: 5px; } .name{ color: #cd853f; font-weight: bold; } .text_sb{ border-top: 1px solid #D7EDFC; color: #000; padding: 5px; background-color: #fff; margin-top: 5px; } </style>
lưu ý: tin nhắn 100
code dựa trên 2 code của Boy Hà Nội và Mr An An
Nhận Import code khi copy code không được
Like cho tinh thần chia sẻ không keo như ai đó đi nhóe
![[OFF]](/assets/images/off.gif)
![[IMAGE]](http://i.imgur.com/gtQ1LUrh.png)