首先,我们来看一个简单的例子:当某个字段为空时,如何显示默认值“无”。这可以通过以下代码实现:
{dede:field.zufang_tel php=yes}
if(@me==""||empty(@me))
@me="无
";
{/dede:field.zufang_tel}
接下来,我们介绍一种更复杂的条件判断方法——通过 `runphp='yes'` 属性来执行自定义PHP代码。例如,我们可以判断某个字段是否有值,并根据结果输出不同的HTML内容:
{dede:field.audio runphp='yes'}
if(@me<>"")@me="如果audio字段里有东西就输出这个,支持html代码,并且可以在代码中使用@me来调用audio字段值,但是不要有双引号.";
else
@me="如果audio字段里没有东西就输出这个,也是支持html代码,并且也是可以在代码中使用@me来调用audio字段值,也是不要有双引号.";
{/dede:field.audio}
此外,为了进一步增强模板功能,还可以引入 `iif` 和 `elserun` 标签。这些标签允许我们在模板中直接进行条件判断,而无需编写额外的PHP代码。例如:
{dede:arclist orderby='click' titlelen='30' row='10' iif="$str_count>1" elserun="$str=暂时没有内容"}
[field:textlink/]
{/dede:arclist}
最后,为了让以上功能生效,需要修改织梦系统的核心文件 `/dede/include/pub_dedetag.php`。具体步骤如下:
1. 搜索 `foreach($GLOBALS[$arr] as $k=>$v){`,并将其改为:
$GLOBALS['autoindex']=0;
foreach($GLOBALS[$arr] as $k=>$v){
$GLOBALS['autoindex']++;
$str = $this->CTags[$i]->TagValue;
$str_count = $GLOBALS['autoindex'];
if( $this->CTags[$i]->GetAtt("iif")!="" ){
if(! eval("return {$this->CTags[$i]->GetAtt('iif')} ;" )){
if($this->CTags[$i]->GetAtt("elserun")) {
$this->CTags[$i]->TagValue=eval("return {$this->CTags[$i]->GetAtt('elserun')} ;" );
}else{
$this->CTags[$i]->TagValue='';
}
}
}