dedecms 模板里写 PHP 代码
模板里写: {dede:php} PHP 代码 {/dede:php} 这里的 PHP 代码不用写 直接写代码就可以用了 -----------------------------------------------------------一、模板页面内嵌入 php 例如:{dede:name runphp='yes'} $str = "hello"; @me = $str; @me .= "world" {/dede:name}最终输出结果为 hello world 其实 "name"为任意定义的名字,"="后面的值是最终用于输出的值,我就拿它代替 echo 来用(如果直接用 echo,模板生成的时候报错,这就是有所限制的地方, 唉)。 二、引用 php 文件 如果你想在 include 的文件中使用 PHP,则加上 source='value' {dede:include runphp='yes' source='value' file=''/} PHP 编写的规范为: 一、PHP 编码中不需要再加?>符号; 二、如果想处理当前标记的值(上面第一种情况),使用 @me 表示当前的值; 三、 如果直接引入
PHP 并要获得运行后的值,必须用 $DedeMeValue 表示运行这 个 PHP 后最终返回的值(因此不能用
HTML 混合的写法)。 例如: {dede:field runphp='yes'} $aaa=200; $DedeMeValue=100; $DedeMeValue += $aaa; {/dede:field} 等同于: {dede:field runphp='yes'} $aaa = 200; @me=100; @me += $aaa;; {/dede:field} 最终返回结果是: 300 如:{dede:list perpage='10'} [field:id runphp="yes"] $dsql = new DedeSql(false); $a="select a.address FROM xudaoshan_addonarticle as a where a.aid=@me"; $arcRow = $dsql->GetOne($a); @me=''.$arcRow[address].'';
[/field:id] {/dede:list} {dede:sql}标签的用法 sql 标签可以称得上是个万能标签了,查询数据库将其输出,这里介绍一些 关于这个标签的用法: 1.用来输出统计内容,这个是不错的,举个例子,我们来统计下总共发了多 少的文章,思路就是输出 dede_addonarticle 这个文章附加表内容总数就可以 了。 {dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"} [field:name = "nums"/] {/dede:sql} 2.使用~field~来进行特殊的查询,比如之前论坛上面很多会员需要做一个 输出当前发布文章
会员的相关内容, 之前用
sql 或者 arclist 标签是没办法实现 的,因为每篇内容是不同的,这里我们来用 5.5 的 sql 语句来做个示范。 我们首先在文章模板中相应的位置加上下面的标签 {dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"} [field:id/], {/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 查询输出单条内容
{dede:php} $row = $dsql->GetOne('select id,typename from dede_arctype where id=2'); print_r($row); {/dede:php} 这个输出的内容是 Array ( [id] => 2 [typename] => 问答 ) 3.获取当前页面的变量 比如我们这里进入
系统后台的[模板]-[全局标记测试],我们在代码中填入 下面的内容: {dede:php} print_r($refObj->Fields); {/dede:php} 在 PHP 中想要获取 dede 某个字段值 可以使用 $refObj->Fields 对象来获取 列 入获取 title => $refObj->Fields['title']
如果环境变量保持默认,即“不使用环境 ID”,我们会看到以下的结果: Array ( [typeid]