网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 dedecms 扩展标签和dede自定义标签实现方法
内容
    我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/include/taglib这个目录,名称都是以“标签名.lib.php”格式,例如{dede:channel/}标签对应的是channel.lib.php文件。
    我们可以看一个示例标签:demotag.lib.php
    代码如下:
    if(!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的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。
    这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数return $revalue;中的$revalue需要是经过处理后生成的字符串。
    $attlist=row|12,titlelen|24;这个是属性列表,这个经过函数处理后会直接生成变量并复制,我们可以测试下,做如下的修改:
    代码如下:
    $revalue = 'hello word!';
    $revalue .=
    row:.$row.;titlelen:.$titlelen;
    这样我们可以看到,这个属性已经被创建变量并且赋值了。
    接下来我们可以再进一步去修改这个标签。
    比如说我们需要写一个标签专门来查询文章内容页的那个相关文章,功能类似于上面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来确定查询的内容数目。
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/15 7:50:51