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}[var:内容]{/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}
  • [field:title/]
  • {/dede:arclist}

    其他常用示例:

    {dede:field name='description' function='html2text(@me)'/}
    {dede:list imgwidth='*' imgheight='*'}
    
    {/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 = "
    验证码:
    \\"看不清楚可点击这里更换!\\"
    ";
    }
    {/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();
    }

    通过以上方法,可以轻松实现评论验证码功能,并且支持开关控制。