在Discuz!的模板中使用PHP代码

标签:Discuz!, PHP

Discuz!的模板都是htm文件,本来是不能使用PHP代码的,但因为在被include时,Discuz!会有个解析过程,执行其中的PHP代码,所以可以同样可以使用。

注意,以下内容仅在Discuz!6.1下测试过,其余版本未测试。有些版本可能会要稍作修改。

首先说基本格式。
html的注释都放在<!---->这2组符号之间,浏览器会忽略这部分代码。
而模板中的PHP代码则必须放在<!--{}-->这2组符号之间,discuz会执行其中的PHP代码。
但是,JavaScript和CSS里的注释是无效的,浏览器照样会执行。所以不要在这2者之中,用这种形式插入PHP代码。实在想输出,可以见本文最后。
此外,如果你不熟悉PHP,而懂JavaScript之类的语言,我只说2点:1是变量名以$符号开头;2是字符串分为'字符串1'和"字符串2"两种,后者会解析并替换其中的PHP变量(假设$a为1,那么'$a'的内容是$a,"$a"的内容是1)。

再说控制流程。
<!--{if $变量名=='值1'}-->
只输出这段html代码1
<!--{elseif $变量名=='值2'}-->
只输出这段html代码2
<!--{else}-->
只输出这段html代码3
<!--{/if}-->
应该很好懂吧,也支持嵌套。
如果要判断是否为假,则改为<!--{if !$变量名=='值'}-->,或者<!--{if $变量名!='值'}-->。
值你可以换成变量,不过要改成双引号。同样也可用函数。
注:当判断为假时,将不会输出那段html代码,这既能减少页面大小,又能避免越权访问(例如用<!--{if $discuz_uid}-->判断是不是游客)。

然后是赋值。
<!--{eval $变量名='值';}-->
同样也可将变量或函数值赋值给另一个变量。
那个eval并不是声明,PHP的变量是无需声明的,不像JavaScript要写个var。

最后是输出。
<!--{echo '想输出的内容';}-->
例如生成JavaScript代码:
<!--{echo "<script type='text/javascript'>你的JavaScript代码放这里,注意引号要用转义字符</script>";}-->
你也许会说,为什么不直接写个JavaScript,而要用PHP生成呢。
因为这样生成的JavaScript代码,可以直接使用PHP变量。

基本上所要用到的就这么多了,你也可以翻翻PHP手册,试试其他的可不可用。
更复杂的你还是别在模板里面写了,直接用PHP吧。

1条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?