织梦DedeCMS详解模板标签runphp=’yes’

 

1:runphp=’yes’在循环中的应用。

 

    {dede:arclist row=14 titlelen=32 noflag='h'}
   
[field:title/]
    [field:id runphp='yes']
    if(@me==5){
    @me='选中';
    }else{
    @me='没选中';
    }
    [/field:id]
    {/dede:arclist}

 

这个思路很简单,filed:id的值给了@me。然后用@me这个方式来进行判断,可以进行逻辑运算,也可以进行逻辑判断。@me其实是代表当前这个变量的值,如果你想随意的修改@me的值,其实就相当于修改了这个变量的值。

 

2:runphp=’yes’和数据库相互结合使用

 

    global $dsql;
    $a="SELECT game.assprice,game.msg,game.bigpic,game.model,game.sptype,gameetime,game.brand
    FROM dede_addongame_tg as game where game.aid=@me";
    $dsql->Execute()

织梦如何使用if判断某个字段是否为空呢?我们以文章页调用文章摘要为例:

使用if语句判断摘要是否为空,如果有摘要就显示摘要模块,如果没有就不显示

{dede:field.description runphp='yes'} 
if (@me <> '') {
  @me = ''.@me.''; 
} else {
  @me = '';
}
{/dede:field.audio}

 

再比如调用某一栏目文章列表时,使用if判断是文章是否有简略标题,如果有就调用简略标题

{dede:arclist row='10'}
    [field:array runphp='yes']
        if (@me['shorttitle'] == '') {
            @me = @me['title'];
        } else {
            @me = @me['shorttitle'];
        }
    [/field:array]
{/dede:arclist}

有时候织梦自定义字段,如果没有值的时候要显示指定的默认内容,该如何操作那

{dede:field name='fujian' runphp='yes'} 
     if(@me=='')
    { @me = '' ;}  
     else
    { @me = "红色是自定义的内容"; }
 {/dede:field}

 

 

但是如果想在上边的代码中调用其他变量,怎么调用呢?今天下午烈火小编就遇到这个问题,在织梦官方论坛查找了一下,现在将方法公布如下,我们将变量写为通用:array,代码如下:

 

{dede:field name='array' runphp='yes'}
if(@me['source'] == "") @me = "@me['其它变量']";else @me = "来源:".@me['source'];
{/dede:field}

 

还有一种办法如下:用全局变量来解决这个问题:

 

{dede:php}$GLOBALS['xxoo']=$arc->Fields['fieldname']{/dede:php} 
{dede:field.xxxx runphp="yes"}@me="test".@me."-test".$GLOBALS['xxoo'];{/dede:field.xxxx}

即,先开一个PHP的标签,把想赋的值替换给global变量。然后在另外的运行中将field值赋值给他。

 

更详细讲解

//DedeCms在dede:arclist标签 如何调用附加表内容
//在dede:arclist 中调用附加表内容
{dede:arclist   titlelen='26' row='20' orderby='id'}
title=[field:title/]
typeid="[field:typeid/]
[field:id runphp="yes"]
$dsql = new DedeSql(false);
$a="SELECT game.assprice,game.msg,game.bigpic,game.model,game.sptype,gameetime,game.brand
FROM dede_addongame_tg as game where game.aid=@me";
$arcRow = $dsql->GetOne($a);
@me='url="'.$arcRow[sptype].'" leixing="'.$arcRow[model].'" pingfen="'.$arcRow[assprice].'" lurl="'.$arcRow[cometime].'" regurl="'.$arcRow[brand].'"';
[/field:id]
info="[field:description /]
post="[field:id/]"
click="[field:click /]"
href="[field:arcurl/]"
img="<img src='[field:litpic/]' border='0' width='110' height='80' alt='>"
/>{/dede:arclist}   
[field:id runphp="yes"]
$dsql = new DedeSql(false);
$a="SELECT game.assprice,game.msg,game.bigpic,game.model,game.sptype,gameetime,game.brand
FROM dede_addongame_tg as game where game.aid=@me";
$arcRow = $dsql->GetOne($a);
@me='url="'.$arcRow[sptype].'" leixing="'.$arcRow[model].'" pingfen="'.$arcRow[assprice].'" lurl="'.$arcRow[cometime].'" regurl="'.$arcRow[brand].'"';
[/field:id]
//绿颜色所标地方,即是
//通过ID,找到AID=ID所对应的附加表
//附加表内容调用$arcRow[列名]
//详细解释
//以下内容只给不懂 PHP和MYSQL的人观看
[field:id runphp="yes"]
//runphp="yes" 表示 [field:id /] 里要运行 PHP程序
$dsql = new DedeSql(false);
//创建一个对象
$a="SELECT game.assprice,game.msg,game.bigpic,game.model,game.sptype,gameetime,game.brand
FROM dede_addongame_tg as game where game.aid=@me";
// 创建数据库语句,并付值给$a,
// dede_addongame_tg as game 定义表的别名为GAME
// where game.aid=@me";查询条件 game.aid=@me 其中 @ME=ID,即文章ID
$arcRow = $dsql->GetOne($a);
// 运行数据库语句并把结果放到数组$arcRow   中
@me='url="'.$arcRow[sptype].'" leixing="'.$arcRow[model].'" pingfen="'.$arcRow[assprice].'" lurl="'.$arcRow[cometime].'" regurl="'.$arcRow[brand].'"';
//付值给@ME返回,这里,要想输出的值,必须付值给@me ,为了减少读取数据库的次数,这里一次把所有的结果都输出了. 从数组中读取数据为$arcRow[字段名] 字段名即数据库列名
[/field:id]

 

赞 (0)