DedeCMS 是一款功能强大的内容管理系统,它支持通过模板插入 PHP 或类似 PHP 的代码来实现特殊调用效果。这种功能扩展不仅增强了系统的灵活性,还允许用户在不修改核心代码的情况下实现个性化需求。
以下是关于 DedeCMS 模板标记和采集配置字段的详细说明:
1、模板标记:
例如:{dede:field name='pubdate' function=GetDateTimeMk('@me')/}
此标记返回的结果是执行了 GetDateTimeMk 函数后的结果。
自定义扩展函数通常放置在以下文件中:
include/inc_functions.php
或
include/inc_channel_unit_functions.php
2、采集配置字段:
例如:{dede:note field='title' value='[var:内容]' function=test('@me')}
{dede:match}<title>[var:内容]</title>{/dede:match}
{/dede:note}
此采集节点返回的结果是执行了 test 函数后的结果。
采集扩展的自定义函数通常放在:
include/pub_collection_functions.php
在上述例子中,@me 表示标记本身的原始值。如果为整数或浮点型,可以不加引号;如果是字符串,则必须加引号。
灵活使用扩展函数,可以实现许多复杂功能,同时无需改动系统源码。对于采集扩展,这种方式更加灵活地处理采集到的内容。
DedeCMS 标记允许有限的编程扩展。例如,获取当前系统时间:
{dede:tagname runphp='yes'}@me = date("Y");{/dede:tagname}
格式为:
{dede:tagname runphp='yes'}
$aaa = @me;
@me = "123456";
{/dede:tagname}
@me 表示标记本身的值,因此不能使用 echo 等语句输出内容,只能将所有返回值赋给 @me。
过滤 HTML 代码:
{dede:arclist sort='hot' titlelen=40 row=8}
<LI><A title="[field:title function='html2text(@me)'/]" href="[field:arcurl/]">[field:title/]</A></LI>
{/dede:arclist}
其他常用示例:
{dede:field name='description' function='html2text(@me)'/}
{dede:list imgwidth='*' imgheight='*'}
<img src='{dede:field name='litpic' /}' width="*" height="*"></img>
{/dede:list}
修改缩略图尺寸时,可以编辑 include/inc_channel_unit_functions.php 文件中的相关代码。
在产品列表中,一个值经过函数处理后,通常如下所示:
[field:typeid function='get_linkshangpin(@me,3)'/]
[field:pubdate function='strftime("%m-%d",@me)'/]
[field:litpic function="CkLitImageView(@me,80)"/]
截取字符串时,可以使用 cn_substr 函数从左侧截取,而从右侧截取则可以使用 substr 函数:
function='substr("@me",-2)'
利用 DedeCMS 的 runphp 功能为评论添加验证码:
{dede:php runphp='yes'}
if($feedback_validate) {
@me = "<tr>
<td>验证码:</td>
<td><input name=\"validate\" type=\"text\" id=\"validate\"><img src=\"/include/validateimg.php\" alt=\"看不清楚可点击这里更换!\" border=\"0\" align=\"absmiddle\" onclick=\"this.src=this.src;\"/></td>
</tr>";
}
{/dede:php}
最后,在 plus/feedback.php 中加入验证码验证逻辑:
session_start();
if( empty($_SESSION["s_validate"]) ) $svali = "";
else $svali = $_SESSION["s_validate"];
if($feedback_validate && strtolower($vdcode)!=$svali && $svali!=""){
ShowMsg("验证码错误!", "-1");
exit();
}
通过以上方法,可以轻松实现评论验证码功能,并且支持开关控制。