设为首页收藏本站

模板库

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8389|回复: 0
打印 上一主题 下一主题

[教程] 模板标签语法简介

[复制链接]
  • TA的每日心情
    无聊
    2013-6-9 09:06
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    跳转到指定楼层
    楼主
    发表于 2011-7-28 10:26:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},“*”代表模板标记名称。
    一般情况下{dede:*}和{/dede:*}是成对出现的,例如:
    例1-1:
    1. {dede:arclist flag='h' limit='0,1'}
    2. <h2><a href="[field:arcurl/]">[field:title/]</a></h2>
    3. <p>[field:description/]...<a href="[field:arcurl/]">[查看全文]</a></p>
    4. {/dede:arclist}
    复制代码

    上面的{dede:arclist}和{/dede:arclist}成对出现在模板文件中,并且在两个标签当中包含了底层模板(innertext)。
    底层模板(Innertext),底层模板实际上就是对于有多条记录的模板输出,用户手工去指定单个记录的样式。
    标签还有一类出现形式是{dede:*/},通常以这种形式出现都是输出变量、或者不含底层模板的内容。
    例如:1-2
    1. {dede:global.cfg_webname/}
    2. {dede:arclist flag='h' limit='0,1'/}
    复制代码

    如果用户没有指定单个记录的样式,系统部分标签都含有默认的底层模板,具体可以查看{cmapath}/templets/system/文件夹下面的文件,这里面都是系统的底层模板文件。

    注释
    织梦标签的模板注释非常灵活,可以通过标签后面的commet属性进行赋值。
    例1-3:
    1. {dede:arclist flag='h' limit='0,1' commet='调用头条的第一篇内容'}
    2. <h2><a href="[field:arcurl commet="这是文章链接标签"/]">[field:titlecommet="这是文章标题标签"/]</a></h2>
    3. <p>[field:description commet="这是摘要标签"/]...<a href="[field:arcurl commet="这是文章链接标签"/]">[查看全文]</a></p>
    4. {/dede:arclist}
    复制代码

    在模板引擎将上述标签解析为html的时候,commet的内容是被忽略掉不去解析的,用户在阅读模板标记的时候可以更好的理解标签的意义。
    函数
    每一个织梦的标签都可以使用自定义函数对其进行扩展,自定义函数内容主要用于对当前标签输出内容进行处理。
    例1-4:
    1. {dede:标记名称function='youfunction("参数一","参数二","@me")'/}
    复制代码
    1. {dede:field.pubdate function='strftime("%Y-%m-%d %H:%M:%S","@me")'/}
    复制代码


    其中 @me 用于表示当前标记的值,其它参数由你的函数决定是否存在,例如:

    属性
    模板标签的属性,决定了模板标记输出的形式,例如arclist标签主要功能是列出文档列表,但列出什么内容、按照什么方式进行排序等取决于模板标签的属性。
    在织梦的模板标签说明中含有各个模板的标签属性可以详细查阅。
    可以查看例1-1中的flag='h' limit='0,1',这里flag和limit是标签的相关属性,通过手册可以查阅属性的介绍。
    如果模板标签如果没有列出属性,系统有默认属性值,用户可以参考模板标签说明查看默认属性。

    编程
    织梦模板很方便的一个地方就是支持简单的模板编程。
    格式为:
    1. {dede:tagname runphp='yes'}
    2. $aaa = @me;
    3. @me = "123456";
    4. {/dede:tagname}
    复制代码

    @me 表示这个标记本身的值,因此标记内编程是不能使用echo之类的语句的,只能把所有返回值传递给@me。
    此外由于程序代码占用了底层模板InnerText的内容,因此需编程的标记只能使用默认的InnerText。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|申请友链|小黑屋|手机版|Archiver|星雨网络工作室    

    GMT+8, 2026-6-10 13:34 , Processed in 0.151025 second(s), 19 queries .

    Powered by Discuz! X3.1

    © 2001-2013 站长论坛

    快速回复 返回顶部 返回列表