在线客服与您一对一交流
当前位置: 主页 > 行业新闻 > IT技术 >

DEDE的扩展标签

DedeCMSV5.3开始就支持自己扩展标签,不过许多新人很少用那个东西,简单的介绍下如何编写自己的调用标签。
  我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/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/},显示如下的结果:
 ,我们会发现标签起作用了,输出了我们的内容。
 
  至此我们完成了标签的编写,这里面主要涉及到PHPMySQL的很多知识,需要有一定相关方面的基础才能够编写标签了,当然这里只是一个简单的标签开发例子,还有许多的东西可以去开发。

  这里我们知道,其实标签生成的内容其实是这个函数的一个返回值,这里返回的内容都是字符串,也就是函数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来确定查询的内容数目。
  当然我们可以获取更多的属性以便我们这个标签更强大,例如我们可以增加类似于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}

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

西安剑锋网站制作,你的网站一站式服务专家!

相关文章:

  • 从事网站优化的工作人员都知道,网站排名在百度优化中的变化比较大,也不稳定。那么,为什么会出现这种现象呢?其实,搜索引擎的不同,算法也不同,重点也不一样,比如百度更加重视...

  • 将代码放到模板中。 {php print_r(get_defined_vars());} 要查看这个地址的模版。http://www.wuzhicms.com/item-34-2-1.html 首先,我们的这个地址需要是动态的。而不是生成的静态地址。 打开文件: /www/configs...

  • 作为一名站长如果不知道友情链接对于网站的重要性,那有点说不过去。因为友情链接,只要运用好,能够提高网站在搜索引擎上的排名、能够提升网站的收录还是就是友情链接是网站...

  • 网络技术日益发达,互联网+活动进行得如火如荼。如果网站依旧没有革新,那么在信息时代就难以生存下去。网站优化是大势所趋。结合现代的网络发展特征,网站可以从以下几个方面...

  • 一、避免友链牵连赏罚。 友情链接作为较高质量外链的一种,在传递权重上的能力决然是要高于其他链接的。因为年夜部门友链交流城市选用链接锚文本的形式,所以对方针关头词排名...

  • 网站建设对于一个企业网站成功来说尤其重要,有许多地方都是值得我们要用心把握的,那么企业网站建设到底有哪些地方需要我们注意的呢?小编就为大家来介绍以下几点。 西安做网...

  • 1、长尾关键为非网站的目标关键词,但是却能为网站带来搜索量。长尾关键词比之目标关键词具有明显的特征,关键词比较长,往往由两个词语或者三个词语组成,甚至是一句短语。这...

  • 长尾关键词对优化网站排名的作用? 所谓长尾关键词是指那些搜索量少且不稳定但却能给网站带来流量的词。从某种水平上讲,只需一个词有可能会被搜,那就能够称之为长尾词。长尾...

  • 网络的飞速发展,也让大家都开始意识到网站建设他们的重要性了,现在在互联网市场里面的网站建设公司有非常多,所以企业以及公司在选择这些网站建设公司的时候同样也有了非常...

  • 对于网站建设来说,网站上线前谁都不能保证网站的稳定性和问题的存在,所以网站上线前的筹备工作非常之重要。只要准备好,保证帮你省去很多不必要的麻烦。下面看一下都有哪些...

  • 上一篇:没有了
  • 下一篇:没有了
  • 公司:西安蟠龙网络科技有限公司
  • 联系人:张经理
  • 手机/微信:
  • Q Q: 点击这里给我发消息
  • 地址:西安市雁塔区唐延南路11号逸翠园i都会