我的编程空间,编程开发者的网络收藏夹
学习永远不晚
位置:首页-资讯-开源

DEDECMS 扩展标签和dede自定义标签实现方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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来确定查询的内容数目。

  当然我们可以获取更多的属性以便我们这个标签更强大,例如我们可以增加类似于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}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

DEDECMS 扩展标签和dede自定义标签实现方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

DEDECMS 扩展标签和dede自定义标签实现方法

我们需要知道下扩展标签的存放目录及文件名构成,首先,扩展的标签都是存放在/include/taglib这个目录,名称都是以“标签名.lib.php”格式,例如{dede:channel/}标签对应的是channel.
2022-06-12

dedeCMS使用arclist标签调用自定义字段的方法

本文实例讲述了dedecms使用arclist标签调用自定义字段的方法。分享给大家供大家参考。具体分析如下: 其实方法非常的简单我们只要使用addfields就可以实现增加自定自段了,不过有一点需要注意的是如果你在在后面加的我们需要把底层给
2022-06-12

java怎么自定义标签实现类

要自定义一个标签实现类,需要按照以下步骤进行操作:创建一个类,该类需要实现javax.servlet.jsp.tagext.Tag接口或其子接口,如javax.servlet.jsp.tagext.SimpleTag或javax.servl
java怎么自定义标签实现类
2023-10-28

javaWeb自定义标签用法实例详解

本文实例讲述了javaWeb自定义标签用法。分享给大家供大家参考,具体如下:自定义标签创建自定义标签主要用于移除Jsp页面中的Java代码。移除jsp页面中的java代码,只需要完成两个步骤:- 编写一个继承TagSupport的Java类
2023-05-31

DEDECMS系统分页标签自定义二次开发实例

本文实例讲述了DEDEcms系统分页标签自定义二次开发的方法。分享给大家供大家参考。具体实现方法如下: 自定搜索结果页面文章分页,在/plus文件夹中新建一个search.php文件,代码如下:复制代码代码如下:
2022-06-12

Android自定义ViewGroup实现标签流容器FlowLayout

本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout,但不影响我对其的学习。和往常一样,主要
2022-06-06

Spring开发中如何实现自定义标签

今天就跟大家聊聊有关Spring开发中如何实现自定义标签,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Spring框架是现在Java最流行的开源框架之一,并且Spring下的各种子项
2023-05-31

Android自定义控件ViewGroup实现标签云(四)

前言:前面几篇讲了自定义控件绘制原理Android自定义控件基本原理详解(一) ,Android自定义控件之自定义属性(二) ,Android自定义控件之自定义组合控件(三) ,常言道:“好记性不如烂笔头,光说不练假把式!!!”,作为一名学
2022-06-06

Android自定义ViewGroup实现标签浮动效果

前面在学习鸿洋大神的一些自定义的View文章,看到了自定义ViewGroup实现浮动标签,初步看了下他的思路以及结合自己的思路完成了自己的浮动标签的自定义ViewGroup。目前实现的可以动态添加标签、可点击。效果图如下:1、思路 首先在
2022-06-06

IE 8 分组标签颜色自定义设置方法

Windows Internet Explorer 8 浏览器(以下简称为 IE 8)新增的一大特色功能就是标签(选项卡)的颜色分组。在同一个 IE 窗口中,如果某个(或多个)标签是在另一标签中点击链接、以“在新标签中打开&rd
2023-05-24

Android中怎么自定义View实现标签流效果

本篇内容主要讲解“Android中怎么自定义View实现标签流效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android中怎么自定义View实现标签流效果”吧!一、概述Android自定义
2023-06-29

DEDECMS实现在标签中嵌套调用SQL的方法

本文以实例讲述了DEDEcms实现在标签中嵌套调用SQL的方法,对于dedecms的二次开发来说非常简单实用,实例代码如下所示: 复制代码代码如下:{dede:field.id runphp='yes'} $tsql = new De
2022-06-12

解析在Android中为TextView增加自定义HTML标签的实现方法

Android中的TextView,本身就支持部分的Html格式标签。这其中包括常用的字体大小颜色设置,文本链接等。使用起来也比较方便,只需要使用Html类转换一下即可。比如: textView.setText(Html.fromHtml(
2022-06-06

织梦DedeCms上flash彩色标签云(tag)的实现方法

适用版本: dede5.1\5.3\5.5http://www.cppcns.com5.6 使用说明: 1、下载附件,解压后,把目录(tagcloud)上传到您的Dede网站根目录,假设你的网站名称为localhost 2、DEDE5.1版
2022-06-12

drupal 自定义表单调用autocomplete主标签实现代码

复制代码代码如下: t('City'), '#type' =>
2022-06-12

用帝国自定义标签实现当前栏目高亮

一番测试下来,雪①找到了自己觉得方便的方法, 特记录在此。 1、因为要用到自定义标签,所以首先要在\e\class\userfun.php 加入一个自定义函数, 即 复制代码代码如下: //取得顶级栏目ID函数 function user_
2022-06-12

DedeCMS的TAG标签无法保存和自动删除的解决方法

几个www.cppcns.com月前,我的升级5.5,不幸的是TAG出现了故障,具体问题是:在后台发布文章,TAG无法保存,自动删除。今天再仔细研究一下,是不保存新的 TAG编程客栈,之前填写过的TAG可以保存。例如我填写了“电
2022-06-12

dedecms自定义内容模型在首页、列表页及内容调用标签的方法

本文讲述了dedecms关于自定义模型(独立模型)的首页、列表页、内容调用方法,在后台自定义模型(独立模型)的建立及自定义字段的添加比较简单,这里需要注意两点: 一.如果某个字段需要在前台列表页显示,则在前台参数中勾选“使字段可
2022-06-12

编程热搜

  • wordpress错位如何解决
    这篇文章主要介绍“wordpress错位如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“wordpress错位如何解决”文章能帮助大家解决问题。wordpress
    wordpress错位如何解决
  • 帝国cms调用栏目别名的修改步骤
    请留意下面的修改方法 修改后栏目别名使用 !--bname--] 调用 打开e/class/t_functions.php搜索定位到带模板的栏目导航标签修改1复制代码代码如下://替换变量$bclassname=$class_r[$clas
    帝国cms调用栏目别名的修改步骤
  • 动易Cms MAC验证视图失败的解决方法
    “/”应用程序中的服务器错误。 -------------------------------------------------------------------------------- 验证视图状态 MAC
    动易Cms  MAC验证视图失败的解决方法
  • DEDECMS如何支持中文水印
    DEDECMS如何支持中文水印?修改/include/inc_photograph.php,在165行处加这行代码:$w_text = iconv("GB2312","UTF-8",$w_text);OK,现在可以用中文做水印了,但默认的字体大小是5,中文字体
    DEDECMS如何支持中文水印
  • 快速了解Discuz!程序文件功能
    相信有不少人热衷于基于修改原有系统文件所做的插件,当然了解程序文件功能是最重要的,下面我把Discuz! X2.0主要的程序文件功能说一下。Tips:Q:针对说明的文件是?A:我只基于原版文件对upload目录中基本的程序文件(php,ht
    快速了解Discuz!程序文件功能
  • DedeCMS编辑器fck更换成eWebEditor编辑器具体步骤
    将eWebEditor编辑器插入DEDE后台的效果: 完全Word在线编辑的功能,让你从此摆脱发可编辑器卡得死,进入流畅干净编辑界面新时代。 下面是具体步骤: 首先,你要知道eWebEditor是一个什么工具。 eWebEditor是由国
    DedeCMS编辑器fck更换成eWebEditor编辑器具体步骤
  • 允许 WordPress 上传任意文件的方法
    此时如果上传一个不在预定义编程客栈的安全扩展名列表,如.lrc,会报kAtKhHRl错: F编程客栈ile type does not meet security guidelines. Try another. 解决此问题有两方法: 在
    允许 WordPress 上传任意文件的方法
  • dedecms 软件下载模块中添加下载方式为迅雷下载联盟代码
    修改 /plus/download.php 文件 www.cppcns.com查找
    dedecms 软件下载模块中添加下载方式为迅雷下载联盟代码
  • dedecms网站tag标签全部静态化的解决方法
    更改tags.php文件在根目录 找到$tag = FilterSearch(urldecode($tag)); 替换为:$tag = urldecode($tag); 更改文件arc.taglist.class.php文件文件所在的路径是
    dedecms网站tag标签全部静态化的解决方法
  • 帝国CMS远程保存图片的方法
    本文实例讲述了帝国cms远程保存图片的方法。分享给大家供大家参考。 具体实现方法如下:复制代码代码如下:
    帝国CMS远程保存图片的方法

目录