dede底层模板详细介绍标签.doc_第1页
dede底层模板详细介绍标签.doc_第2页
dede底层模板详细介绍标签.doc_第3页
dede底层模板详细介绍标签.doc_第4页
dede底层模板详细介绍标签.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

什么叫底层模板(Innertext),详细介绍 2010-04-06 16:49底层模板(Innertext),底层模板实 际上就是对于有多条记录的模板输出,用户手工去指定单个记录的样式。 因为这个概念很虚线,那么这个地方还是通过实践去说明吧。 大家在标签测试的地方输入: 这是使用默认底层模板的标签:dede:arclist row=10/dede:arclist 这是手工指定底层模板的标签:dede:arclist row=5 field:title / 点击:field:click/ /dede:arclist 有一点需注意的是,在没有指定底层模板(Innettext)的时候,系统一般调用 templets/system 里的相应该文件作为底层模板。例如: dede:arclist row=10/dede:arclist 它实际由系统默认调用了 templets/system/part_arclist.htm 这文件的东西作为底层模板。这文件的内容是 field:title /那么 dede:arclist row=10/dede:arclist就等同于dede:arclist row=10field:title /dede:arclist既能用短标记,也能直接定义样式,又不依赖数据库,这是dedecms模板和其它模板的最大区别。 在标记之间 field:/ 这些就是底层模板变量,这些标记一般也是属于 Dedecms 标签的模式,只是 符号改为了 ,因此底层模板中的标签也是具有DedeCms标签的特性的,例如,在底层模板中使用 field:global name=cfg_webname/ 同样可以表示全局变量 $cfg_webname。具体哪些标记可以用Innertext,那些不可以用,可以在 /archives/templethelp/help/index.htm这页面参考。 在此我简单介绍一下常用的 arclist 标记的底层模板字段及意义: arclist的底层模板字段实际上是对应相应该的主索引表的,在文档模板中则对应该主表和附加表,主表字段是一样的,我等会介绍一下,附加表的可以在模 型里找。arclist常用的字段有:ID(同 id),title(标题),color,typeid(栏目ID),description(摘要,同 info),writer(作者),shorttitle(短标题),memberid(会员ID),pubdate(发布时间),click,litpic(缩图图,同 picname),typename(栏目名称),arcurl(网址,同 filename),typeurl(栏目网址)stime(pubdate 的0000-00-00格式,等同于field:pubdate function=strftime(%y-%m-%d,me)/),textlink(等同field:title/),typelink(等同field:title/),imglink(等同),image(等同), 大家需注意的一个问题是:field:标记名称/这 种写法是仅在底层模板中才用的。在文档模板中,字段是用 dede:field name=title/这样形式表示的。不过在一 种特殊的情况下,Innertext是无效的,就是指定了 runphp=yes 属性,:A、function 扩展;B、在Innertext中直接编程。 一、那么首先说 A、function 扩展: 在标记中,可以使用 dede:标记名称 function=”函数名(me,其它参数)” /这样模式对标记的值进行处理,其中 me 就是表示标记当前的值,最终获得的结果是这个函数返回的值。 大家不妨测试一下下面这个标签:dede:global function=file_get_contents() / 下面再举个实用的例子(测试一下):dede:arclist row=5 field:title /field:pubdate function=strftime(%y-%m-%d %H:%M,me);/dede:arclist 从实例中大家可以注意到,dede:xx/和 field:xxx/都支持function扩展。实际上 field:xxx/ 这种模式也是dede标签解析器解析的,所以作用一样,它 只是把 dede 换成 field 换成 在这里,function 属性的 function 不仅是用PHP自带的,用自己定义的也行。不过要注意function的格式,自定义的function不 能用echo这样的输出,而是返回一个字符串,这样就行了。 写好的函数放入 include/inc_channel_unit_functions.php 文件,因为dede核心都会调用这个文件。 这里举个简单的函数:function testMyFunc($str)return $str. 增加了我的东西哦!; 在标签中使用:dede:global name=cfg_webname function=testMyFunc(me)/ 用function扩展的好处是既可以增强系统的功能,又保持标记的简洁。 二、下面介绍的是另一种扩展 B、在Innertext中直接编程 这种方式和function编程的不同之处是,你可以把PHP代码直接写入到标签的底层模板代码的地方,不过需要注意的是,在这里的PHP代码并非完全意 义上的PHP代码,它必须符合Dede限定的格式,即是最终返回值返回到 me 变量中,同样的是用 me 表示标记的最初的值。 使用格式: dede:标记名称 runphp=yes PHP代码/dede:标记名称 大家测试一下这个代码:dede:global name=cfg_webname runphp=yes$baidu = file_get_contents();preg_match_all(/(.*)/isU,$baidu,$baidus);me = $baidus10;/dede:global 这里的 cfg_webname 不再显示当前站点名了,因为 me = $baidus10; 改变了它的值。 在使用标记内编程或function扩展时,很多情况都可能会调用数据库。在V5版本中,DedeCms的数据库进行了改进,无论你新建多少个类的对像, 最终打开的链接是只有一个的,并且会生成一个 $dsql 的全局数据库类的变量。 以往有些懂dedecms数据库类的人在调用function扩展的时候,一般的做法是用 $dsql = new DedeSql(false); 这样新建一个类。实际上在V5中是不需要这样的。直接用 global $dsql;声明一下就能使用,并且在函数体中不要自行关闭(即执行 $dsql-Close())否则可能出错。 那么在这里举个简单的例子(测试代码):dede:global runphp=yesglobal $dsql;$restr = ;$dsql-SetQuery(Select * From dede_feedback where ischeck=1 order by ID desc limit 5);$dsql-Execute(feedback);while($row = $dsql-GetArray(feedback)$restr .= $rowarctitle - .cn_substr($rowmsg,200).;me = $restr;/dede:global 这代码是调用最新评论的。dede本身没有提供直接调用评论的标签,一般懂的人用loop标签调用,不过在本版中,新增的SQL标签会更简单。 在 DedeCms V5 中有一个标签dede:sql sql=SQL语句 limit 记录底层模板/dede:sql 我现在改一下刚才调用评论的地方(测试代码):dede:sql sql=Select * From dede_feedback where ischeck=1 order by ID desc limit 5field:arctitle/ - field:msg/dede:sql 这结果应该和上面的代码是一样的。 为了补允调用全站数据的不足,V5中新增了 arcfulllist 标记,它的作用与 arclist 标记有点类同,不示不同的是 arcfulllist 里的文件名有时候可能是动态的,这因为它是使用搜索时用的那个简单索引表。在专题文章、相关文章中默认都是使用 arcfulllist 调用指定的 id 的文档的。 由于这标记可能造成文件名不同步,我们系统后面增加了文档名批量修正功能,但为了防止忘记操作,建议建立栏目就设定好文档命名规则,以后不要经常更改。一就是常用的模型,二是新出的模块,三是插件。 大家进到Dede管理后台“频道管理-内容模型管理”的地方可以看到:分类信息专题普通文章图片集软件Flash产品 这些都是内置的模型。大家也可以自己新建一个模型,有不少人问:Dedecms的文存储在哪里呀?下面我一步一步的教大家建立一个用文本存储的文章模型。 首先“增加一个新模型”,建立好后“添加字段”,然后转向栏目管理的地方。建立好后转到栏目管理的地方新建一个顶级栏目,内容模型选刚才建好的那个。建立 好栏目后,随意在那个栏目增加一篇文章。预览文章,会发生新增的模型显示的文档。现在再回到频道模型管理的地方,在新建的频道点击“模板”。 对于类同的模型,最好是把类同的模板作为当前模型的模板。如刚才建立的模型,实际上模板和普通文章模板是一样的。 关于字段的问题,在文档模板中字段是用dede:field name=字段名/表示。例如在软件模型中文件类型 filetype 单行文本(varchar) 固化表单 修改 语言 language 单行文本(varchar) 固化表单 修改 软件类型 softtype 单行文本(varchar) 固化表单 修改 授权方式 accredit 单行文本(varchar) 固化表单 修改 操作系统 os 单行文本(varchar) 固化表单 修改 软件等级 softrank 整数类型 固化表单 修改 官方网址 officialurl 单行文本(varchar) 固化表单 修改 语言这字段就可以用 dede:field name=language/ 表示,此外,title , keywords,description 这些实际上主索引表的东西,刚才说模板时已经介绍过它的含义了。 有用户提过一个问题,就是关于自定义模型如何在表布表单中调整字段的顺序。Dedecms目前没有这选项,需要改的必须用 phpmyadmin 进入 it_channeltype 这个表。编辑 fieldset 这里的XML,调一下位置就行了。 此外大家要区别一下自动模型和系统模型的区别,系统模型是固化了的,要调整必须自己修改程序,对于普通人是无法改的。不过这版本允许自行增加一些字段在里 面。 因为这次讲座是个中级讲座,模型这块我就不太深入的讲解了,最后介绍一下插件和模块。插件和模块 DEDE增加新模型,必须一步到位,如果不用phpmyadmin,输入错误什么的,在后台修改不了。 插件在Dedecms中是就是一些小的实际的程序的集合,它可以简单的安装和删除,不过安装和删除仅去去掉数据库的索引记录,并非进行真正的安装。 官方网前自带的插件有:文件管理器站内新闻发布友情链接模块留言簿模块投票模块论坛扩展广告管理正则规则测试器随机模板防采集木马扫描检测数据转换与导入 实际上很多情况下单用插件是满足不了系统的需求的,实际上很多情况下单用插件是满足不了系统的需求的。因此Dedecms V5提出了模块的概念。 模块是对系统模型的一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论