POST TIME:2021-05-24 03:11
我们在使用织梦CMS制作网站时,对于某个字段,无论是默认字段还是自定义字段,偶尔会使用一些判断语句来实现我们的需求。下边列出了几种常见的需求。以及字段的判断输出实例。
{dede:field name='ziduan' runphp='yes'} if(@me=='') { @me = '' ;} else { @me = "<div class='red'><a href='/.@me'>此处是自定义的内容</a></div>"; } {/dede:field} |
方法1,适用于内容页
{dede:field name='array' runphp='yes'} if (@me['shorttitle']=='') @me=@me['title']; else @me=@me['shorttitle']; {/dede:field} |
方法2,适用于列表页
[field:array runphp='yes'] if (@me['shorttitle']=='') @me=@me['title']; else @me=@me['shorttitle']; [/field:array] |
[field:array runphp='yes'] if(@me['risklevel']=="HR")@me="HR.png"; else if(@me['risklevel']=="D")@me="D.png"; else if(@me['risklevel']=="AA")@me="AA.png"; [/field:array] |
以上意思就是说如果查询得到的风险等级字段的取值是HR,那么将输出HR.png, 如果查询得到的风险等级字段的取值是D,那么将输出D.png,如果查询得到的风险等级字段的取值是AA,那么将输出AA.png, 这里的HR.png,只是一个字符串,代表图片文件所在的位置,你可以设置成任意的图片路径,上面的代码是一种分支条件输出语句,@me代表的就是输出变量,刚进入标签field:array时,@me代表数据库的一条记录,其数据类型是数组,我们根据其中risklevle的取值来判断,从而将@me设置成不同的值,当退出标签field:array时,@me的值就会被显示在原位置。
以上分享结束,如有疑问可以在下边加群留言跟进,织梦58小编会第一时间回复。
需要在模板里做一个小判断,如果文章的价格为0时直接输出其下载地址,否则直接输出购买链接,那么这个时候肯定是需要运行runphp='yes'这个功能了,下面我们来看下代码: 经过搜索发现两个方法基本上可以实现 1、首先把需要调用其它字段的值放在公共变量里,然后再直接调用公共变量的值,看代码
{dede:php}$GLOBALS['title']=$arc->Fields['title']{/dede:php} {dede:php}$GLOBALS['baidupan']=$arc->Fields['baidupan']{/dede:php} {dede:field.price runphp="yes"} if(@me="0") @me = "下载地址:".$GLOBALS['baidupan']; else @me = "商品(".$GLOBALS['title'].")购买链接为:XXX"; {/dede:field.xxxx} |
2、直接使用name='array'将其它字段的值赋值到数组里,然后使用,看代码
{dede:field name='array' runphp='yes'} if(@me['price']=='0' ) @me = ' <li><a class="demo" href="'.@me['baidupan'].'" target="_blank">下载:'.@me['baidupwd'].'</a></li> '; else @me = ' <div id="pdBuy" class="PDB2C_moban_warp" dataP="'.@me['title'].'" dataR="'.@me['price'].'"><img src="/uploads/allimg/170702/155R26021-0.gif"></div> '; {/dede:field} |
上述多处需要注意符号,单引号,双引号。
(此图片来源于网络,如有侵权,请联系删除! )
看到图片就应该很熟悉了,日常做Dedecms模版的时候,首页肯定会有这样或那样的文章标题列表,用{dede:arclist}调用列表出来是件很easy的事情这里就不过多叙述了,不太熟悉的童鞋可以去参考Dedecms官方文档。这里我主要想说的是有点时候我们想在这个文章标题列表上做点小文章,比如取出的标题是当天发布的内容,则在标题后面加上new图标;又比如头条推荐的文章标题后面加上上图里的top图标等等,而单纯透过{dede:arclist}里面的'flag'属性是无法单独判断的,这就需要我们单独做点什么了。既然需要判断,自然而然的会令我们想到用'if',在Dedecms里面如果使用'if'判断的内容还跟文章有关,那不得不提的就是[field:array]这个东西很强大啊,基本上你想要的东西都在这里面,下面来看代码,先来两个热热身: 1、循环判断{dede:arclist}取出的标题是否为头条
{dede:arclist row=4 orderby=pubdate typeid=2} [field:flag runphp='yes'] if(@me == 'h'){ @me='这篇文章是头条推荐'; }else{ @me='这篇文章不是头条推荐'; } [/field:flag] {/dede:arclist} |
{dede:arclist row=4 orderby=pubdate typeid=2} [field:senddate runphp='yes'] $now = time(); $oneday = 3600 * 24; if(($now - @me) < $oneday){ @me='这篇文章是今天新发布的'; }else{ @me='这篇文章不是今天新发布的'; } [/field:senddate] {/dede:arclist} |
{dede:arclist row=4 orderby=pubdate typeid=2 titlelen='54'} [field:array runphp='yes'] if(@me['flag'] == 'h'){ @me="<li class='list '><a href='".@me['arcurl']."' title=' ".@me['title']."' target='_self'> ".@me['title']."</a><img class='listtop' src='".@me['templeturl']."/demo/images/top.gif' /></li>"; }else{ $now = time(); $oneday = 3600 * 24; if(($now - @me['senddate']) < $oneday ){ @me="<li class='list '><a href='".@me['arcurl']."' title=' ".@me['title']."' target='_self'> ".@me['title']."</a><img class='listtop' src='".@me['templeturl']."/demo/images/news.gif' /></li>"; }else{ @me="<li class='list '><a href='".@me['arcurl']."' title=' ".@me['title']."' target='_self'> ".@me['title']."</a></li>"; } } [/field:array] {/dede:arclist} |
ID(同id),typeid,sortrank,flag,ismake,channel,arcrank,click,money,title,shorttitle,color, writer,source,litpic(同picname),pubdate,senddate,mid, lastpost,scores,goodpost, badpost,notpost,description(同infos)filename, image, imglink, fulltitle, textlink, typelink,plusurl, memberurl, templeturl stime(pubdate 的"0000-00-00"格式) |