dede自定义模板标签的方法

2024-10-12 19:23:39

1、第一种:单条结果类似自定义函数新建一个名为wnbq2.lib.php的文件保存在inclu蟠校盯昂de/tagli芟鲠阻缒b/文件夹下代码如下:<?phpif(!defined('DEDEINC'))exit('RequestError!');/*---------------------------万能调用数据标签此文件另存为wnbq2.lib.php存放根目录下的include/taglib/文件夹下面---------------------------DEMO-----------------------{dede:wnbq2tbname="dede_admin"where="userid='admin'"field='pwd'/}---------------------------*/functionlib_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$tbnamewhere$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/文件夹下代码如下:<?phpif(!defined('DEDEINC')){exit("RequestError!");}/*---------------------------万能调用数据标签此文件另存为wnbq.lib.php存放根目录下的include/taglib/文件夹下面---------------------------DEMO-----------------------{dede:wnbqtbname="dede_admin"row='10'titlelen='6'}[field:field/][field:field/][field:field/]..............{/dede:wnbq}---------------------------*/functionlib_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=newDedeTagParse();$ctp->SetNameSpace('field','[',']');if(!empty($tbname)&&!empty($where)){//这两个条件不能为空$sql="select*from$tbnamewhere$whereorderby$ofield$pxlimit0,$row";}elseif(empty($where)&&!empty($tbname)){$sql="select*from$tbnameorderby$ofield$pxlimit0,$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->CTagsas$tagid=>$ctag){if(!empty($rs[strtolower($ctag->GetName())])){$ctp->Assign($tagid,$rs[$ctag->GetName()]);}}//根据底层模板及查询变量得到处理结果$revalue.=$ctp->GetResult();}return$revalue;}?>

4、在任何模板文件均可调用调用代码如下:{dede:wnbqtbname="dede_admin"row='10'titlelen='6'}[field:userid/]{/dede:wnbq}

猜你喜欢