Google云者 = Google Cloud Platform 学习者
现在注册
已注册用户请 登入
Google云者  ›  V2EX

添加了BBCODE的[IMG],支持 [IMG] [/IMG] 方式显示图片

By life at 4 years, 2 months ago, 1760 hits
添加了BBCODE的[IMG],支持 [IMG] [/IMG] 方式显示图片
# By zern


1 在 v2ex\templatetags\filters.py 文件中添加如下内容:

# auto convert BBCODE [IMG] by zern
def bbcode_content(value):
pat = re.compile(r'<([^>]*?)>', re.DOTALL | re.M)
value = re.sub(pat, '&lt;\\1&gt;', value)
bbdata = [
(r'\[url\](.+?)\[/url\]', r'<a href="\1">\1</a>'),
(r'\[url=(.+?)\](.+?)\[/url\]', r'<a class="link-segment" href="\1">\2</a>'),
(r'\[email\](.+?)\[/email\]', r'<a href="mailto:\1">\1</a>'),
(r'\[email=(.+?)\](.+?)\[/email\]', r'<a href="mailto:\1">\2</a>'),
(r'\[img\](.+?)\[/img\]', r'<img src="\1">'),
(r'\[img=(.+?)\](.+?)\[/img\]', r'<img src="\1" alt="\2">'),
(r'\[b\](.+?)\[/b\]', r'<b>\1</b>'),
(r'\[i\](.+?)\[/i\]', r'<i>\1</i>'),
(r'\[u\](.+?)\[/u\]', r'<u>\1</u>'),
(r'\[quote\](.+?)\[/quote\]', r'<blockquote class="content-quote">\1</blockquote>'),
(r'\[center\](.+?)\[/center\]', r'<div align="center">\1</div>'),
(r'\[code\]\s?(.+?)\[/code\]', r'<blockquote class="code-segment"><code><pre>\1</pre></code></blockquote>'),
(r'\[big\](.+?)\[/big\]', r'<big>\1</big>'),
(r'\[small\](.+?)\[/small\]', r'<small>\1</small>'),
]
for bbset in bbdata:
p = re.compile(bbset[0], re.DOTALL)
value = p.sub(bbset[1], value)
return value
register.filter(bbcode_content)


2 在 tpl\portion\topic_content.html 加入 |bbcode_content|

{{ topic.content|escape|bbcode_content|youtube|youku|tudou|sinaimg|imgly|clly|mentions|gist|autolink|linebreaksbr }}


3 在 tpl\portion\topic_replies.html 加入 |bbcode_content|

<div class="content reply_content">{{ reply.content|escape|bbcode_content|youku|sinaimg|imgly|clly|mentions|gist|autolink|linebreaksbr }}</div>


4 在 tpl\feed\index.xml 及 在 tpl\feed\read.xml 加入 |bbcode_content|

<content type="html" xml:base="http://{{ site_domain }}/" xml:lang="en"><![CDATA[
{{ topic.content|escape|bbcode_content|youtube|youku|sinaimg|imgly|mentions|urlize|linebreaksbr }}
]]></content>
目前尚无回复

CC BY-NC 4.0 - Google云者:Google Cloud Platform Leaner