网站首页 美食营养 游戏数码 手工爱好 生活家居 健康养生 运动户外 职场理财 情感交际 母婴教育 生活知识 知识问答

dede自定义模板标签的方法

时间:2026-03-01 11:41:00

1、第一种:单条结果类似自定义函数 新建一个名为wnbq2.lib.php的文件保存在include/taglib/文件夹下

代码如下:

<?php

if(!defined('DEDEINC')) exit('Request Error!');

/*

---------------------------

    万能调用数据标签

    此文件另存为wnbq2.lib.php存放根目录下的include/taglib/文件夹下面

---------------------------

DEMO-----------------------

{dede:wnbq2 tbname="dede_admin" where="userid='admin'" field='pwd'/}

---------------------------

*/

function lib_wnbq2(&$ctag,&$refObj){

    global $dsql,$envs;

     //属性处理

    $attlist="tbname|,where|,field|";

    

    $revlaue = '';

    FillAttsDefault($ctag->CAttribute->Items,$attlist);

    extract($ctag->CAttribute->Items, EXTR_SKIP);

    

    $sql = "select * from $tbname where $where";

    $rs = $dsql->GetOne($sql);

    $revalue = $rs[$field];

    return $revalue;

}

?>

2、在任何模板文件均可调用调用代码如下:

{dede:wnbq2 tbname='dede_admin' where="userid='admin'" field='pwd'/}

即可通过这个自定义标签来进行sql单条记录查询针对对应字段输出,这里我输出的dede_admin表中固定条件的pwd字段值

3、第二种:多条结果自定义标签循环输出底层模板属性处理新建一个名为wnbq2.lib.php的文件保存在include/taglib/文件夹下  代码如下: 

<?php

if(!defined('DEDEINC')){exit("Request Error!");}

/*

---------------------------

    万能调用数据标签

    此文件另存为wnbq.lib.php存放根目录下的include/taglib/文件夹下面

---------------------------

DEMO-----------------------

{dede:wnbq tbname="dede_admin" row='10' titlelen='6'}

[field:field/]

[field:field/]

[field:field/]

    ..............

{/dede:wnbq}

---------------------------

*/

function lib_wnbq(&$ctag,&$refObj){

    global $dsql,$envs;

    //属性处理

    $attlist="tbname|,where|,ofield|id,px|desc,row|10,titlelen|24";

    FillAttsDefault($ctag->CAttribute->Items,$attlist);

    extract($ctag->CAttribute->Items, EXTR_SKIP);

    $revalue = '';

    $innertext = $ctag->GetInnerText();

    $ctp = new DedeTagParse();

    $ctp->SetNameSpace('field','[',']');

    if(!empty($tbname) && !empty($where)){//这两个条件不能为空

        $sql = "select * from $tbname where $where order by $ofield $px limit 0,$row";

    } else if(empty($where) && !empty($tbname)) {

        $sql = "select * from $tbname order by $ofield $px limit 0,$row";

    } else {

        return "未指定table_name 请指定table_name再次生成标签!";

        exit();

    }

    $dsql->Execute('me',$sql);

    while($rs = $dsql->GetArray('me'))

    {

        //根据属性处理查询变量

        /*截取标题字符长度

        $rs['title'] = cn_substr($rs['title'], $titlelen);

        */

        //获取底层模板

        $ctp->LoadSource($innertext);

        foreach($ctp->CTags as $tagid=>$ctag) {

            if(!empty($rs[strtolower($ctag->GetName())])) {

                $ctp->Assign($tagid,$rs[$ctag->GetName()]);

            }

        }

        //根据底层模板及查询变量得到处理结果

        $revalue .= $ctp->GetResult();

    }

    return $revalue;

}

?>

4、 在任何模板文件均可调用调用代码如下:

{dede:wnbq tbname="dede_admin" row='10' titlelen='6'}

    [field:userid/]

{/dede:wnbq}

© 2026 智德知识库
信息来自网络 所有数据仅供参考
有疑问请联系站长 site.kefu@gmail.com