dede自定义模板标签的方法

2025-11-05 12:41:39

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}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢