- Làm theo hướng dẫn nha
- Code An vừa hoàn thành trong chiều nay nên có thể còn lỗi. Nếu có lỗi thì thông báo cho An sau.
- Chỉ làm like thôi, thêm unlike tốn tài nguyên nên An bỏ rồi..
- Có phần mã hóa idcmt và uid, bạn nào dùng có thể sửa đổi mã hóa đề phòng hack like.
+ Thêm Mã Twig
{%set sdata=''%}
{{_self.env.addGlobal('sdata',sdata)}}
+ Thêm shoutbox history, đây là data like
Ô 1:
{%set msg=message_list|split0%}
{%set sdata=_self.env.getGlobals()['sdata'">%}
{%set sdata=sdata~message_list%}{{_self.env.addGlobal('sdata',sdata)}}
{%set surl=_self.env.getGlobals()['surl'">%}
{%if msg|length>=99%}
{%if surl is empty%}
{%set url=''%}
{%else%}
{%set url=surl%}
{%endif%}
{%else%}
{%if surl is not empty%}
{%set url=surl%}
{%else%}
{%set url=form_url%}
{%endif%}
{%endif%}
{{_self.env.addGlobal('surl',url)}}
Ô 2:
{{message}}[-msS-">
+ Thêm Twig
{%macro mahoa(b)%}{%set k=".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"%}{%for i in 0..b|length-1%}{{k|slice(b|slice(i,1)*1,1)}}{%endfor%}{%endmacro%}
{%macro giaima(f)%}{%set k=".abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"%}{%for i in 0..f|length-1%}{{k|split(f|slice(i,1))[0">|length}}{%endfor%}{%endmacro%}
{%macro like(idcmt,type='button')%}
{%set uid=api.user_id%}{%set count=0%}{%set list=''%}{%set suid=like.mahoa(uid)%}{%set key=idcmt~'['~suid%}{%set sdata=_self.env.getGlobals0%}{%set surl=_self.env.getGlobals()['surl'">%}{%set form%}<form action="{{surl}}" method="post" style="display: inline-block;"><input type="hidden" name="text" value="{{key}}"/><input type="submit" value="Thích" style="background-color: transparent; border: none; color: #3b5998; padding: 0px;"/></form>{%endset%}
{%if type=='button'%}
{%if key not in '<msS>'~sdata|join('<)%}{{form}}{%else%}{%endif%}
{%endif%}
{%for i in 0..sdata|length%}
{%if sdata is not empty%}
{%if idcmt==sdata|split('[')[0">%}
{%set count=count+1%}
{%set nick=like.giaima(sdata|split('[')[1">)%}
{%if nick not in ('!'~list)%}
{%set list=list~nick~'[-like-">'%}
{%endif%}
{%endif%}
{%endif%}
{%endfor%}
{%if type=='count'%}
<span style="display:inline-block">{{count}}</span>
{%endif%}
{%if type=='list'%}{%set list=list|split0%}
<span style="display:inline-block">{%set user_like%}{%for i in 0..list|length-1%}{%if list is not empty%}{{api.u.get(list).nick}} {%endif%}{%endfor%}{%endset%}{{user_like}}</span>
{%endif%}
{%endmacro%}
{%macro like_all(idcmt)%}
{%set idcmt=like.mahoa((idcmt|date('YmdHis')))%}
<img src="/files/1049801/slike.png" style="display:inline-block"/> {{like.like(idcmt,'count')}}{%if api.user_id is not empty%}{{like.like(idcmt,'button')}}{%endif%} {{like.like(idcmt,'list')}}
{%endmacro%}
{%import _self as like%}
{{_self.env.addGlobal('like',like)}}
+ macro like_all như là Template like sửa lại cho phù hợp theo ý bạn
+ button là hiện nút thích
+ count là hiện số like
+ list là danh sách uid hay người like, nó xử lí ở phía trên có thể sửa theo ý bạn
+ Nếu muốn hiện Bạn và bao nhiêu người thích thì thêm điều kiện {%if api.user_id in ('~'~list|join(''))%} để kiểm tra
----------------------------------------------------------------------
Cuối cùng là Thêm shoutbox chat, nơi hiện like
Ô 1: mặc định
<div class="shoutbox">
{% if loged %}
<form action="{{form_url}}" method="post"> <textarea rows="3" cols="20" name="text" style="width:auto"></textarea>
<input type="submit" value="Thêm tin nhắn"/></form>
{% else %}
Bạn phải đăng nhập để đăng tin nhắn
{% endif %}
<div class="shoutbox_message">{{message_list}}</div>
{{paging_def}}
</div>
Ô 2:
<div style="border:1px solid#eee;padding:2px;text-align:left">
{{userphoto}} {{nick}}: {{message}}
{{like.like_all(message_date|date('U'))}}
</div>
Chúc các bạn thành cmn công