织梦CMS常用的几种字段判断输出实例

2021-07-28 0 5,644

我们在使用织梦CMS制作网站时,对于某个字段,无论是默认字段还是自定义字段,偶尔会使用一些判断语句来实现我们的需求。下边列出了几种常见的需求。以及字段的判断输出实例。 

第一种:织梦自定义字段,如果没有值的时候要显示指定的默认内容,

{dede:field name='ziduan' runphp='yes'}
if(@me=='') { @me = '' ;}
else { @me = "<div class='red'><a href='/.@me'>此处是自定义的内容</a></div>"; }
{/dede:field}

 

第二种:DedeCMS判断简略标题为空时则显示完整标题

方法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}

 

上述多处需要注意符号,单引号,双引号。

第五种 案例-标题列表判断是否为当日新发布以及是否为头条推荐等原创代码

织梦CMS常用的几种字段判断输出实例

看到图片就应该很熟悉了,日常做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}

代码不长,比较好理解,因为这里我们只是要对文章里的'flag'属性做判断,所以如果使用[field:array]虽然也能达到效果,但是会取出很多多余的内容难免影响效率,而直接使用[field:flag]既简洁又方便,其中"@me = 'h'"是判断文章是否属于头条,聪明的童鞋看到这里一定会衍生出很多种判断了,因为flag的值除了'h'外还可以是"头条[h]推荐[c]幻灯[f]特荐[a]滚动[s]加粗[b]图片[p]跳转[j]"。 另外说一下'@me',刚接触Dedecms模版的童鞋可能对这个@me使用起来比较晕,不要紧。Dedecms里面虽然可以执行php语句,但是不支持用'echo'进行输出,所以'@me'最简单的一个功能就是代替'echo'进行输出。比如本段代码中的"@me='这篇文章是头条推荐';",如果用php写法就应该是"echo '这篇文章是头条推荐';"这样看是否直观明白了呢。但是'@me'更高级的是它是配合在[field:xxx]等标签中使用的,'@me'不仅负责输出,其本身也会保存着上层标签查询数据库后所得的内容,比如本段代码'@me'保存的就是取出的文章信息里'flag'的值,因此"@me = 'h'"这个判断才成立。 2、循环判断{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}取出的文章标题做判断,如果是头条推荐则在标题后面显示top图标,如果是当天新发布的则在标题后面显示new图标,二者都不属于的则只显示文章标题,见代码:

{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}

代码虽然长点,但是有前两段代码的基础看懂这个还是没什么难度的,代码中包涵的html内容不影响整个功能,仅是用来是布局相对美观使用,阅读程序代码时可以忽略掉。这里就可以体现出[field:array]的好处了,之前我们用[field:flag]也好,用[field:senddate]也好,都只是单一的判断,如果想做多条件判断,那就非[field:array]莫属了,这里取出之后的'@me'不仅包涵了'flag'和'senddate'信息,还包含有其他底层字段很多信息,下面所列出的都有:

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"格式)
收藏 (0) 打赏

您的支持是我们前进最大的动力!

打开微信扫一扫,即可进行扫码打赏哦
点赞 (0)

本站声明: 根据2013年1月30日《计算机软件保护条例》2次修订第17条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬,鉴于此,也希望大家遵守相关法律法规使用、研究软件。 1、本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解。 2、下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。 3、站内资源均来源于网络公开发表文件或网友投稿发布,如侵犯您的权益,请联系管理员处理。 4、本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用,如有链接无法下载、失效或广告,请联系客服处理。 5、所有资源均收集于互联网仅供学习、参考和研究,请理解这个概念,所以不能保证每个细节都符合你的需求,也可能存在未知的BUG与瑕疵,因本站资源均为可复制品,所 以不支持任何理由的退款兑现,请熟知后再下载。

彤彤模板团 织梦CMS教程 织梦CMS常用的几种字段判断输出实例 https://www.xiaoyuerqingfen.cn/4030.html

一家有态度的精品资源分享平台

常见问题
  • 模板团承诺演示效果图均和网站95%一样,并且我们的模板和数据都没有留后门,请放心使用。
查看详情
  • 因为模板具有可复制性和可传播性,模板一旦发货,非质量问题,不支持退换;所以务必请您一定看清楚后再购买。
查看详情

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 0 +

    访问总数

  • 0 +

    会员总数

  • 0 +

    资源总数

  • 0 +

    今日发布

  • 0 +

    本周发布

  • 0 +

    运行天数

开通会员,尊享海量资源下载特权