dede模板标签以及dedetag.class.php模板类

dedecms里面有两个标签还是比较灵活的,一个是{dede:PHP} {/dede:PHP}另外一个是{dede:sql}标签,{dede:PHP}标签注释要用来在模板中写PHP代码的,{dede:sql}主要是用 来调用sql用的,下面就来介绍下这两个标签到底该如何使用。该文章是转自百度空间的一篇文章。
{dede:sql}标签的用法
sql标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些关于这个标签的用法:
1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多少的文章,思路就是输出dede_addonarticle这个文章附加表内容总数就可以了。

1 {dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"}
2 [field:name = "nums"/]
3 {/dede:sql}

2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个输出当前发布文章会员的相关内容,之前用sql或者arclist标签是没办法实现的,因为每篇内容是不同的,这里我们来用5.5的sql语句来做个示范。
我们首先在文章模板中相应的位置加上下面的标签

1 {dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"}
2 [field:id/],
3 {/dede:sql}

这个放到article_article.htm页面,将会检索出当前会员发布的相关文章,这里的~ writer~会根据当前内容的环境变量进行替换后再执行查询。
这里出现在SQL语句中条件查询的~ writer~,也就是$refObj->Fields[$value]这个里面的相关内容
模板中使用PHP
许多人希望织梦的模板标签能够更加灵活,加入可以运行PHP的功能,这里在DedeCMS V5.5中就加入了一个可以执行php的特殊标签{dede:php}{/dede:php},这个标签可以执行PHP语句了。
我这里举几个常用的例子:
1.最简单的输出内容:

{dede:php}
$numA = 1;
$numB = 2;
echo $numA + $numB; 

{/dede:php}

在 {dede:php}里想要输出信息 可以直接使用print , echo 之类的打印出来 赋值给@me 无效

这个输出的内容是计算结果:
3
2.结合SQL查询输出单条内容

1 {dede:php}
2 $row = $dsql->GetOne(‘select id,typename from dede_arctype where id=2‘);
3 print_r($row);
4 {/dede:php}

这个输出的内容是
Array
(
[id] => 2
[typename] => 问答
)
3.获取当前页面的变量
比如我们这里进入系统后台的[模板]-[全局标记测试],我们在代码中填入下面的内容:

1 {dede:php}
2 print_r($refObj->Fields);
3
4 {/dede:php}

在PHP中想要获取dede某个字段值 可以使用 $refObj->Fields 对象来获取 列入获取 title => $refObj->Fields[‘title‘]

如果环境变量保持默认,即"不使用环境ID",我们会看到以下的结果:

 1 Array
 2 (
 3 [typeid] => 0
 4 [phpurl] => /plus
 5 [indexurl] => /
 6 [templeturl] => /templets
 7 [memberurl] => /member
 8 [specurl] => /special
 9 [indexname] => 主页
10 [templetdef] => /templets/default
11 )

那我们再换个环境变量测试看看,这里以我本地的栏目为测试了:

 1 Array
 2 (
 3 [id] => 3
 4 [reid] => 0
 5 [topid] => 0
 6 [sortrank] => 1
 7 [typename] => 产品
 8 [typedir] => {cmspath}/product
 9 … …
10 [indexname] => 主页
11 [templetdef] => /templets/default
12 [position] => 主页 > 产品 >
13 [title] => 产品
14 )

这样一来就检索出当前页面的局部变量了,接下来我们可以来结合前面的SQL语句来实现根据不同环境ID调用内容不同栏目内容。
例如:

1 {dede:php}
2 $thisid = $refObj->Fields[‘id‘];
3 $row = $dsql->GetOne(‘select id,typename from dede_arctype where id=‘.$thisid);
4 print_r($row);
5 {/dede:php}

这样是来调用当前栏目的标题,这个标签功能类似于{dede:field.typename/}

时间: 2024-10-25 07:10:40

dede模板标签以及dedetag.class.php模板类的相关文章

(转)DEDECMS模板原理、模板标签学习 - .Little Hann

本文,小瀚想和大家一起来学习一下DEDECMS中目前所使用的模板技术的原理: 什么是编译式模板.解释式模板,它们的区别是什么? 模板标签有哪些种类,它们的区别是什么,都应用在哪些场景? 学习模板的机制原理对我们修复目前CMS中常出现的模板类代码执行的漏洞能起到怎样的帮助? 带着这些问题,我们进入今天的代码研究,just hacking for fun!! 文章主要分为以下几个部分 1. 模板基本知识介绍 2. 怎么使用模板机制.模板标签的使用方法 3. DEDE模板原理学习 1) 编译式模板 2

dedecms模板标签语法简介

dedecms二次开发目录点这个:dedecms二次开发教程目录 织梦的模板标签类似于XML格式,所有的模板都含有定界符,默认情况下是{dede:*}和{/dede:*},"*"代表模板标记名称. 一般情况下{dede:*}和{/dede:*}是成对出现的,例如: 例1-1: {dede:arclist flag='h' limit='0,1'}<br /> <h2><a href="[field:arcurl/]">[field

django自定义过滤器及模板标签

创建一个模板库 不管是写自定义标签还是过滤器,第一件要做的事是创建模板库(Django能够导入的基本结构). 创建一个模板库分两步走: 第一,决定模板库应该放在哪个Django应用下. 如果你通过 manage.py startapp 创建了一个应用,你可以把它放在那里,或者你可以为模板库单独创建一个应用. 我们更推荐使用后者,因为你的filter可能在后来的工程中有用. 无论你采用何种方式,请确保把你的应用添加到 INSTALLED_APPS 中. 我们稍后会解释这一点. 第二,在适当的Dja

DedeCMS织梦模板标签调用大全

本文转载:http://www.mubanzhijia.com/jishujiaocheng/1.html 关键描述调用标签: <meta name="keywords" content="{dede:field name='keywords'/}"><meta name="description" content="{dede:field name='description' function='html2text(

Wordpress模板标签大全

Wordpress模板基本文件 style.css 样式表文件 index.php 主页文件 single.php 日志单页文件 page.php 页面文件 archvie.php 分类和日期存档页文件 searchform.php 搜索表单文件 search.php 搜索页面文件 comments.php 留言区域文件(包括留言列表和留言框) 404.php 404错误页面 header.php 网页头部文件 sidebar.php 网页侧边栏文件 footer.php 网页底部文件 Word

Django 自定义模板标签和过滤器

1.创建一个模板库 使用模板过滤器的时候,直接把过滤器写在app里,例如:在app里新建一个templatetags的文件夹,这个目录应当和 models.py . views.py 等处于同一层次.例如: books/     __init__.py     models.py     templatetags/     views.py 在 templatetags 中创建两个空文件:一个 __init__.py (告诉Python这是一个包含了Python代码的包)和一个用来存放你自定义的

五、Python Django模板标签

Python Django模板标签 一.if.for标签 # cat blog/views.py from django.shortcuts import render_to_response def index(req): user = {'name':'loyu','age':23,'sex':'male'} book_list = ['python','java','php','web'] return render_to_response('index.html',{'title':'L

Django 模板标签[转]

Django 模板标签if/else 标签 基本语法格式如下: {% if condition %}     ... display{% endif %} 或者: {% if condition1 %}   ... display 1{% elif condiiton2 %}   ... display 2{% else %}   ... display 3{% endif %} 根据条件判断是否输出.if/else 支持嵌套. {% if %} 标签接受 and , or 或者 not 关键字

Discuz!X/模板标签说明

Discuz 模板标签说明 Discuz! 的模板采用近似 PHP 表达式的语法,基本都是可识别的HTML,但涉及到变量和动态内容时,基本形式下: <!-{ 代码内容 }-> 逻辑元素包围符,该符号用于包含条件和循环元素 目录 [隐藏] 1 条件判断 2 不带下标变量的数组循环 3 带下标变量的数组循环 4 信息元素包围符 5 插入子模板 6 插入钩子 7 插入模块 8 插入广告 9 常量 条件判断 <!-{if expr1}-> statement1 <!-{elseif