在网站开发中,Dedecms(织梦)CMS模板支持嵌入PHP代码,尽管它无法完全像编写独立的PHP页面那样自由,但基本的功能需求还是可以满足的。以下将详细介绍如何在Dedecms模板中使用PHP代码。

一、模板页面内嵌入PHP

在Dedecms模板中可以直接嵌入PHP代码,例如:

{dede:name runphp='yes'}
    $str = "hello";
    @me = $str;
    @me .= "world"
{/dede:name}

最终输出结果为:hello world

    在上述代码中,“name”是任意定义的名字,“@me=”后面的值是最终用于输出的值。这里我们用“@me”来代替echo功能(如果直接使用echo,模板生成时可能会报错,这是Dedecms的一些限制)。


二、引用外部PHP文件

如果你希望在include的文件中使用PHP代码,可以在标签中添加 source='value' 参数。

{dede:include runphp='yes' source='value' file=''}

PHP编写的规范如下:

  • 一、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}

通过这种方式,我们可以灵活地在Dedecms模板中嵌入和调用PHP代码,以满足更复杂的功能需求。