1、在include/taglib文件夹中新建文件diy.lib.php,其中diy也就是你标签的名字。function的名字也必须跟文件名对应,固定格式lib_标签名,如lib_diy,本例子以调取文章为例。 ?php function lib_diy($c
1、在include/taglib文件夹中新建文件diy.lib.php,其中diy也就是你标签的名字。function的名字也必须跟文件名对应,固定格式lib_标签名,如lib_diy,本例子以调取文章为例。
<?php
function lib_diy(&$ctag,&$refObj)
{
global $dsql,$envs;
/***
* &$ctag 获取标签信息类
* &$refObj 数据库信息类
* $dsql 数据库操作类
* $envs 栏目助手,记录着栏目的部分信息
* 前台标签
*/
/**默认属性定义*/
$attlist="row|12,titlelen|24";
/**给前台没有给出的属性变量值,前台有标明的不变*/
FillAttsDefault($ctag->CAttribute->Items,$attlist);
/**绑定默认参数$ctag->CAttribute->Items 是前台模板标签传来的值array (size=2)
'row' => string '2' (length=1)
'titlelen' => string '36' (length=2)
获取参数 row='2' titlelen='36'*/
extract($ctag->CAttribute->Items, EXTR_SKIP);
$revalue = ''; /** 定义空字符串用于返回数据*/
/**获取标签内的值 <span>[field:title/]</span>*/
$innertext = $ctag->GetInnerText();
$ctp = new DedeTagParse(); /** 声明Dede织梦模板类*/
$ctp->SetNameSpace('field', '[', ']'); /** 设置标记的命名空间,默认为dede*/
$sql = "SELECT * FROM `wmd_archives` WHERE 1=1 limit 0, $row"; /** 编写sql语句*/
$dsql->Execute('me',$sql); /** 执行一个带返回结果的函数*/
while($rs = $dsql->GetArray('me'))
{
/**根据属性处理查询变量*/
$rs['title'] = cn_substr($rs['title'], $titlelen);
/**获取底层模板,将模板设置到CTags变量中*/
$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;
}
?>
前台标签调用方法:
{dede:diy row='2' titlelen='36'}
<span>[field:title/]</span>
{/dede:diy}
版权声明:本站部分内容来源互联网,如果文章中所涉及的图片或者文字内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!
沃梦达建站
dedecms织梦怎么定义属于自己的自定义标签
最新VIP资源
猜你喜欢
- dedecms织梦怎么延迟广告加载显示 2021-04-07
- 织梦dedecms全局核心变量设置 2021-04-25
- 织梦后台发布文章编辑器不显示的解决办法 2021-03-02
- 织梦模板dedecms内怎么加入php代码? 2021-01-19
- 织梦dedecms文章列表页添加显示多个缩略图 2021-08-19
- 织梦tag标签字数长度限制的修改 2021-06-18
- 织梦channelartlist标签支持currentstyle属性 2021-05-11
- 织梦dedecms更新栏目html提示:没有该栏目数据 可能缓存的解决方法 2021-06-11
- 织梦channelartlist如何利用itemindex做判断 2023-07-11
- dedecms织梦任意页面调用栏目内容的办法 2020-10-26