如何在 DedeCMS 标记中运行 PHP 代码?以下是详细的操作步骤,帮助您更好地理解和实现这一功能。

首先,打开 pub_dedetag.php 文件。接着找到名为 function AssignSysTag() 的函数。

for 循环结束的位置,也就是以下代码片段:


}
//
// 把分析模板输出到一个字符串中,并返回
//
function GetResult()
    

将上述代码替换为以下内容:


// 运行PHP接口
if( $CTag->GetAtt("runphp") == "yes" )
{
    $DedeMeValue = "";
    if($CTag->GetAtt("source")=='value')
    { 
        $runphp = $this->CTags[$i]->TagValue; 
    }
    else
    {
        $DedeMeValue = $this->CTags[$i]->TagValue;
        $runphp = $CTag->GetInnerText();
    }
    $runphp = str_replace('@@me', '$DedeMeValue', $runphp);
    eval($runphp);
    $this->CTags[$i]->IsReplace = TRUE;
    $this->CTags[$i]->TagValue = $DedeMeValue;
}

// 把分析模板输出到一个字符串中,并返回
function GetResult()

完成上述修改后,只要在 DedeCMS 的标记中添加属性 runphp='yes',即可运行 PHP 代码。

需要注意的是:
- 使用 @me 表示当前标记的值。
- 使用 $DedeMeValue 表示最终返回值。
- 编写时不能使用 <? ?> 或 HTML 混合代码。

PHP 代码放置方式一:
您可以按照以下格式编写:


{dede:name runphp='yes'}
这里写PHP代码
{/dede:name}

PHP 代码放置方式二:
如果需要在包含文件中运行 PHP,则可以添加 source='value' 属性:


{dede:include runphp='yes' source='value' file='/example.php'}

PHP 编写规范:
1. 在 PHP 编码中无需再加 <?php ?> 符号。
2. 如果想处理当前标记的值(如第一种情况),可使用 @me 表示当前值。
3. 如果直接引入 PHP 并获取其运行结果,必须用 $DedeMeValue 表示运行后的返回值。

例如:


{dede:field runphp='yes'}
$aaa=200;
$DedeMeValue=100;
$DedeMeValue = $aaa;

通过以上方法,您可以轻松地在 DedeCMS 中嵌入和运行自定义 PHP 代码,从而实现更多个性化功能。希望本文对您有所帮助!