dede 扩展标签

作者 :
免费
  • 正文
  • DedeCMS从V5.3开始就支持自己扩展标签,不过许多新人很少用那个东西,简单的介绍下如何编写自己的调用标签。
    我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/include/taglib这个目录,名称都是以“标签名.lib.php”格式,例如{dede:channel/}标签对应的是channel.lib.php文件。
    我们可以看一个示例标签:demotag.lib.phpif(!defined(‘DEDEINC’))
    {
    exit(“Request Error!”);
    }
    function lib_demotag(&$ctag,&$refObj)
    {
    global $dsql,$envs;
    //属性处理
    $attlist=”row|12,titlelen|24″;
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = ”;
    //你需编写的代码,不能用echo之类语法,把最终返回值传给$revalue
    //——————————————————
    $revalue = ‘Hello Word!’;
    //——————————————————
    return $revalue;
    }
    ?>
    我们登录系统后台的[模板]-[全局标签测试]中运行{dede:demotag/},显示如下的结果:
    ,我们会发现标签起作用了,输出了我们的内容。

    至此我们完成了标签的编写,这里面主要涉及到PHP、MySQL的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。

    dede 扩展标签-完美源码
    这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数return $revalue;中的$revalue需要是经过处理后生成的字符串。
    $attlist=”row|12,titlelen|24″;这个是属性列表,这个经过函数处理后会直接生成变量并复制,我们可以测试下,做如下的修改:
    $revalue = ‘Hello Word!’;
    $revalue .=”
    Row:”.$row.”;TitleLen:”.$titlelen;
    dede 扩展标签-完美源码这样我们可以看到,这个属性已经被创建变量并且赋值了。
    接下来我们可以再进一步去修改这个标签。
    比如说我们需要写一个标签专门来查询文章内容页的那个相关文章,功能类似于上面sql标签中的那个sql,只是这里我们将其分装为一个标签。
    我们可以新建一个标签,例如叫writerarc,那我们就需要创建一个writerarc.lib.php,然后模仿demotag编写函数,注意需要修改为
    function lib_writerarc(&$ctag,&$refObj)
    接下来我们就可以编写查询语句及对底层模板处理的相关函数了
    $revalue = ”;
    $innertext = $ctag->GetInnerText();
    $ctp = new DedeTagParse();
    $ctp->SetNameSpace(‘field’, ‘[‘, ‘]’);
    $sql = “SELECT * FROM dede_archives WHERE writer='{$refObj->Fields[‘writer’]}’ limit 0, $row”;
    $innertext这个是用来获取标签的底层模板的,$ctp创建用于处理底层模板中的变量,并处理进行替换。我们根据获取的属性编写我们的sql语句,这里我们使用limit 0, $row,这样就可以根据$row来确定查询的内容数目。
    当然我们可以获取更多的属性以便我们这个标签更强大,例如我们可以增加类似于arclist中的相关属性,并在函数中进行处理,不过这个需要有一定的PHP基础。
    接下来我们通过执行查询对sql及输出变量进行处理:
    $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();
    }
    这样我们就将查询出来的结果同底层模板中出现的相关变量进行替换,然后生成输出字符串,将所有的字符串信息存储到$revalue中。
    最后返回这个值return $revalue;
    整个文件内容如下:

    if(!defined(‘DEDEINC’))
    {
    exit(“Request Error!”);
    }
    function lib_writerarc(&$ctag,&$refObj)
    {
    global $dsql,$envs;
    //属性处理
    $attlist=”row|12,titlelen|24″;
    FillAttsDefault($ctag->CAttribute->Items,$attlist);
    extract($ctag->CAttribute->Items, EXTR_SKIP);
    $revalue = ”;
    $innertext = $ctag->GetInnerText();
    $ctp = new DedeTagParse();
    $ctp->SetNameSpace(‘field’, ‘[‘, ‘]’);
    $sql = “SELECT * FROM dede_archives WHERE writer='{$refObj->Fields[‘writer’]}’ limit 0, $row”;
    $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;
    }
    ?>
    接下来我们来测试我们这个标签,我们修改article_article.htm模板,在里面加入以下的标签代码:
    {dede:writerarc row=’10’ titlelen=’6′}
    [field:title/]

    {/dede:writerarc}
    通过动态浏览页面进行查看调试http://www.dedecms.com/plus/view.php?aid=3

    dede 扩展标签-完美源码  至此我们完成了标签的编写,这里面主要涉及到PHP、MySQL的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。

    END
    如本资源侵犯了您的权益,请联系投诉邮箱admin@wmphp.com进行举报!我们将在收到邮件的1个小时内处理完毕。 本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用! Wmphp.com(完美源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售! Wmphp.com(完美源码)客服QQ:136882447 Wmphp.com(完美源码)商务电话(仅对企业客户/个人用户):15120086569 (微信同步) 请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
    完美源码 » dede 扩展标签
    2492+

    本站勉强运行

    302+

    用户总数

    519+

    资源总数

    0+

    今日更新

    2021-7-27

    最后更新时间