Twig custom bbcode for ego

44 bài đăng
25.03.2016 / 15:29
thaian2009
Bài đăng: 709
Member
saoko đã viết

<a href="<b>http://abc</b>"><b>http://abc</b></a>

thẻ b sao chèn vào url="" làm gì :S

25.03.2016 / 15:52
thaian2009
Bài đăng: 709
Member
saoko đã viết

<a href="<b>http://abc</b>"><b>http://abc</b></a>

[code]{%macro bbcode(content,tag,template,template2)%}{%if template2 is empty%}{%set template2=template|replace({'$1':'$2'})|raw%}{%endif%}{%set msg=content|split('[/'~tag~']')%}{%set msgx%}{%for i in 0..msg|length-1%}{%set sp1=msg[i]|split('['~tag~']')%}{%if sp1|length>1%}{%set sp2=sp1[sp1|length-1]%}{%set key=('['~tag~']'~sp2)%}{%set sp0=msg[i]|split(key)[0]%}

{{template|replace({'$0':(sp0),'$1':(sp2)})|raw}}{%else%}{%set sk1=msg[i]|split('['~tag~'="')%}{%if sk1|length>1 and '"]' in sk1[1]%}{%set sk2=sk1[sk1|length-1]%}{%set sk3=sk2|split('"]')%}{%set sk4=sk2|split(sk3[0]~'"]')[1]%}{%set skey=('['~tag~'="'~sk2)%}{%set sk0=msg[i]|split(skey)[0]%}{{template2|replace({'$0':(sk0),'$1':(sk3[0]|replace({'[':'bmsS',']':'amsS'})|raw),'$2':(sk4)})|raw}}{%else%}{{msg[i]|raw}}{%endif%}{%endif%}{%endfor%}{%endset%}{{msgx|raw}}{%endmacro%}{%import _self as thaian2009%}

{%set message='Linh thứ nhất [url]http://company.com[/url] Link thứ 2 [url]chỗ này không hợp lệ[url]link 2 hợp lệ có in đậm[/url] Văn bản [url="http://phonho.net"]Tên link[/url]Văn bản tiếp theo gạch dưới[url="http://google.com"]vào google[/url]Hộp văn bản[xcode]nội dung hộp văn bản[/xcode]hộp 2[xcode="blue"]Hộp văn bản có màu[/xcode]Văn bản[div]Topic cần dùng[/div]Văn bản cuối cùng[img]/files/1025588/34cM4a9TGzi.png[/img]hi [url="http://[xcode]phonho.net[/xcode]"]Tên link[/url]sfg'%}

{%set bbcode={

'url':['$0<a href="$1" style="color:#f00">$1</a>','$0<a href="$1" style="color:#00f">$2</a>'],

'xcode':['$0<textarea style="border:1px solid #f40">$1</textarea>','$0<textarea style="color:$1">$2</textarea>'],

'div':['$0<div class="title">$1</div>',''],

'b':['$0<b>$1</b>',''],

'u':['$0<u>$1</u>',''],

'img':['$0<img src="$1"/>','']

}%}{%for i in bbcode|keys%}{%set message=thaian2009.bbcode(message,i,bbcode[i][0],bbcode[i][1])%}{%endfor%}

{{message|replace({'bmsS':'[','amsS':']'})|raw}}[/code]

Demo: http://shoutboxgenerator.wap.m ... 64489

25.03.2016 / 17:11
saoko
Bài đăng: 1449
Member
MXH Vườn Cảm Xúc

vẫn lỗi y vậy mà

25.03.2016 / 17:16
saoko
Bài đăng: 1449
Member
MXH Vườn Cảm Xúc

bỏ cái xcode đi. textarea message để dễ xem lỗi

25.03.2016 / 17:20
thaian2009
Bài đăng: 709
Member
saoko đã viết

bỏ cái xcode đi. textarea message để dễ xem lỗi

Cái đó là xóa trong $1 thôi nên cái xcode nó lỗi là đúng :)

25.03.2016 / 17:22
thaian2009
Bài đăng: 709
Member
saoko đã viết

bỏ cái xcode đi. textarea message để dễ xem lỗi

Cái này là custom tùy chọn render bbcode bên trong

[code]{%macro bbcode(content,tag,template,template2,r1,r2)%}{%if template2 is empty%}{%set template2=template|replace({'$1':'$2'})|raw%}{%endif%}{%set msg=content|split('[/'~tag~']')%}{%set msgx%}{%for i in 0..msg|length-1%}{%set sp1=msg[i]|split('['~tag~']')%}{%if sp1|length>1%}{%set sp2=sp1[sp1|length-1]%}{%set key=('['~tag~']'~sp2)%}{%set sp0=msg[i]|split(key)[0]%}

{%set sp3=sp2|replace({'[':'bmsS',']':'amsS'})|raw%}{%if r1=='0' or r1 is empty%}{%set sp2=sp3%}{%endif%}{{template|replace({'$0':(sp0),'$1':(sp2),'$2':(sp3)})|raw}}{%else%}{%set sk1=msg[i]|split('['~tag~'="')%}{%if sk1|length>1 and '"]' in sk1[1]%}{%set sk2=sk1[sk1|length-1]%}{%set sk3=sk2|split('"]')%}{%set sk4=sk2|split(sk3[0]~'"]')[1]%}{%set skey=('['~tag~'="'~sk2)%}{%set sk0=msg[i]|split(skey)[0]%}{%set sk5=sk3[0]%}{%if r2=='1' or r2 is empty or r2=='0'%}{%set sk5=sk5|replace({'[':'bmsS',']':'amsS'})|raw%}{%endif%}{%if r2=='2' or r2 is empty or r2=='0'%}{%set sk4=sk4|replace({'[':'bmsS',']':'amsS'})|raw%}{%endif%}{{template2|replace({'$0':(sk0),'$1':(sk5),'$2':(sk4)})|raw}}{%else%}{{msg[i]|raw}}{%endif%}{%endif%}{%endfor%}{%endset%}{{msgx|raw}}{%endmacro%}{%import _self as thaian2009%}

{%set message='Linh thứ nhất [url]http://company.com[/url] Link thứ 2 [url]chỗ này không hợp lệ[url]link 2 hợp lệ có in đậm[/url] Văn bản [url="http://phonho.net"]Tên link[/url]Văn bản tiếp theo gạch dưới[url="http://google.com"]vào google[/url]Hộp văn bản[xcode]nội dung hộp văn bản[/xcode]hộp 2[xcode="blue"]Hộp văn bản có màu[/xcode]Văn bản[div]Topic cần dùng[/div]Văn bản cuối cùng[img]/files/1025588/34cM4a9TGzi.png[/img]hi [url="http://[xcode]phonho.net[/xcode]"]Tên link[/url]sfg'%}

{%set bbcode={

'url':['$0<a href="$2" style="color:#f00">$1</a>','$0<a href="$1" style="color:#00f">$2</a>','1','0'],

'xcode':['$0<textarea style="border:1px solid #f40">$1</textarea>','$0<textarea style="color:$1">$2</textarea>','0','0'],

'div':['$0<div class="title">$1</div>','','0','0'],

'b':['$0<b>$1</b>','','0','0'],

'u':['$0<u>$1</u>','','0','0'],

'img':['$0<img src="$1"/>','','0','0']

}%}{%for i in bbcode|keys%}{%set message=thaian2009.bbcode(message,i,bbcode[i][0],bbcode[i][1],bbcode[i][2],bbcode[i][3])%}{%endfor%}

{{message|replace({'bmsS':'[','amsS':']'})|raw}}[/code]

25.03.2016 / 17:26
thaian2009
Bài đăng: 709
Member

Cái này có chỉnh sửa chút là ở template1

[code]'url':['$0<a href="$2" style="color:#f00">$1</a>','$0<a href="$1" style="color:#00f">$2</a>','1','0'][/code]

Trong đó $2 = $1 nhưng $2 không bao giờ render

Không render là nội dung vẫn thành nội dung chứ hông thành <b>nội dung</b>.

Ví dụ:

[url="http://phonho.netnội dung xxxx"]nội dung[/url]

nó sẽ luôn thành

<a href="http://phonho.netnội dung xxxx">nội dung</a>

chứ không phải thành

<a href="http://phonho.net<b>nội dung xxxx</b>">nội dung</a>

25.03.2016 / 17:30
thaian2009
Bài đăng: 709
Member

[code]'xcode':['$0<textarea style="border:1px solid #f40">$1</textarea>','$0<textarea style="color:$1">$2</textarea>','0','0'],[/code]

Trong lần này có 2 số 0 phía sau, số đầu tiên là dành cho template1, số 0 thứ 2 là dành cho template2

2 thông số đó sử dụng như sau.

0 là không có render, luôn là nội dung khi lồng bbcode với nhau.

+ ở template1: 1 là render

+ ở template2: 1 là render $1, 2 là render $2

Hãy thử lồng thật nhiều và thay 2 thông số đó để hiểu rõ hơn, còn đây là demo

Demo: http://shoutboxgenerator.wap.m ... 64504

Đã chỉnh sửa. thaian2009 (25.03.2016 / 17:33)
25.03.2016 / 17:36
thaian2009
Bài đăng: 709
Member

Đây là custom bbcode user login.

Nghĩa là thành viên phải đăng nhập thì mới hiện bbcode, chưa đăng nhập thì hiện thông báo "Bạn phải đăng nhập để thấy cái này"

[code]{%macro bb(con,tg,tm,tm2,r1=0,r2=0,log=0)%}{%set logno='<div class="title">Đăng nhập để thấy cái này</div>'|raw%}{%if tm2 is empty%}{%set tm2=tm|replace({'$1':'$2'})|raw%}{%endif%}{%set msg=con|split('[/'~tg~']')%}{%set msgx%}{%for i in 0..msg|length-1%}{%set sp1=msg[i]|split('['~tg~']')%}{%if sp1|length>1%}{%set sp2=sp1[sp1|length-1]%}{%set key=('['~tg~']'~sp2)%}{%set sp0=msg[i]|split(key)[0]%}

{%set sp3=sp2|replace({'[':'bmsS',']':'amsS'})|raw%}{%if r1==0 or r1 is empty%}{%set sp2=sp3%}{%endif%}{%if (log==1 and api.user_id) or log==0%}{{tm|replace({'$0':(sp0),'$1':(sp2),'$2':(sp3)})|raw}}{%else%}{{sp0|raw}}{{logno|raw}}{%endif%}{%else%}{%set sk1=msg[i]|split('['~tg~'="')%}{%if sk1|length>1 and '"]' in sk1[1]%}{%set sk2=sk1[sk1|length-1]%}{%set sk3=sk2|split('"]')%}{%set sk4=sk2|split(sk3[0]~'"]')[1]%}{%set skey=('['~tg~'="'~sk2)%}{%set sk0=msg[i]|split(skey)[0]%}{%set sk5=sk3[0]%}{%if r2==1 or r2 is empty or r2==0%}{%set sk5=sk5|replace({'[':'bmsS',']':'amsS'})|raw%}{%endif%}{%if r2==2 or r2 is empty or r2==0%}{%set sk4=sk4|replace({'[':'bmsS',']':'amsS'})|raw%}{%endif%}{%if (log==1 and api.user_id) or log==0%}{{tm2|replace({'$0':(sk0),'$1':(sk5),'$2':(sk4)})|raw}}{%else%}{{sk0|raw}}{{logno|raw}}{%endif%}{%else%}{{msg[i]|raw}}{%endif%}{%endif%}{%endfor%}{%endset%}{{msgx|raw}}{%endmacro%}{%import _self as imp%}

{%set message='$1Linh thứ nhất [url]http://company.com[/url] Link thứ 2 $1 [url]chỗ này không hợp lệ[url]link 2 hợp lệ có in đậm[/url] Văn bản [url="http://phonho.net"]Tên link[/url]Văn bản tiếp theo gạch dưới[url="http://google.com"]vào google[/url]Hộp văn bản[xcode]nội dung hộp văn bản[/xcode]hộp 2[xcode="blue"]Hộp văn bản có màu[/xcode]Văn bản[div]Topic cần dùng[/div]Văn bản cuối cùng[img]/files/1025588/34cM4a9TGzi.png[/img]hi [url="http://[xcode]phonho.net[/xcode]"]Tên link[/url]sfg'%}

{%set bb={

'url':['$0<a href="$2" style="color:#f00">$1</a>','$0<a href="$1" style="color:#00f">$2</a>',1,0,1],

'xcode':['$0<textarea style="border:1px solid #f40">$1</textarea>','$0<textarea style="color:$1">$2</textarea>',0,0,0],

'div':['$0<div class="title">$1</div>','',0,0,0],

'b':['$0<b>$1</b>','',0,0,0],

'u':['$0<u>$1</u>','',0,0,0],

'img':['$0<img src="$1"/>','',0,0,0]

}%}{%for i in bb|keys%}{%set message=imp.bb(message,i,bb[i][0],bb[i][1],bb[i][2],bb[i][3],bb[i][4])%}{%endfor%}

{{message|replace({'bmsS':'[','amsS':']'})|raw}}[/code]

Bây giờ có 3 số 0

'img':['$0<img src="$1"/>','',0,0,0]

2 số 0 đầu là của render, số 0 cuối cùng là không kiểm duyệt login, nếu cài thành 1 thì nó sẽ ẩn khi chưa đăng nhập. Ví dụ

'img':['$0<img src="$1"/>','',0,0,1]

như thế mọi bbcode ảnh chỉ hiện khi thành viên đó đăng nhập.

Demo: http://shoutboxgenerator.wap.m ... 64519

25.03.2016 / 17:48
thaian2009
Bài đăng: 709
Member

Cách tạo bbcode mới.

Ví dụ thẻ ảnh.

'imgs':['$0<img src="$1"/>','$0<img alt="$1" src="$2"/>',0,1,2]

Trong đó:

imgs là tên tag cần tạo. nó như là [imgs]link ảnh[imgs]

$0<img src="$1"/> là mẫu template1 dạng [imgs]$1[imgs]

$0<img alt="$1" src="$2"/> là mẫu template2 dạng [imgs="$1"]$2[imgs]

0 là render cho template1 (0 là không render, 1 là render)

1 là render cho template2 (0 là không render, 1 là render cho $1, 2 là render cho $2)

2 là kiểm duyệt đăng nhập (0 là không kiểm tra, 1 là kiểm tra)

Chỉ đơn giản thế thôi, các bạn có thể tạo thêm các bbcode như: quote, youtube, red, flow, min, loop, list, ..

Đã chỉnh sửa. thaian2009 (25.03.2016 / 17:51)