您现在的位置是:娱乐 >>正文

织梦dede arclist标签里怎么用 if

娱乐6人已围观

简介 织梦dede arclist标签里怎么用if 直接说结论:arclist标签本身不支持if判断,但你可以用runphp='yes'属性强行塞进去一段PHP逻辑。别指望官方文档会告诉你这个,那是给新手 ...

织梦dede arclist标签里怎么用if

直接说结论:arclist标签本身不支持if判断,织梦但你可以用runphp='yes'属性强行塞进去一段PHP逻辑。签里别指望官方文档会告诉你这个,织梦那是签里给新手看的,真正干活的织梦人得自己拆标签。

先看最基础的签里写法。你大概见过这种代码:

{ dede:arclist typeid='5' row='10'} <a href="[field:arcurl/]">[field:title/]</a> { /dede:arclist}

这玩意儿只能循环输出字段。织梦想加条件?签里比如“只显示带缩略图的文章”或者“标题长度超过20字才显示”?直接往标签里塞if是没用的,模板引擎解析到if就懵了。织梦

这时候得用runphp。签里把属性改成这样:

{ dede:arclist typeid='5' row='10' runphp='yes'} if(@getField('litpic') != '') {  echo '<a href="'.@getField('arcurl').'">'.@getField('title').'</a>'; } { /dede:arclist}

注意那个@符号,织梦dede的签里字段函数在runphp模式下得用@getField来取值,不加@会直接报错。织梦我第一次用的签里时候被这个坑了半小时,后来翻源码才看见它内部有个全局变量冲突。织梦

但runphp有个致命伤——它会破坏arclist的缓存机制。原本标签是静态化输出的,加了runphp后每次页面加载都得重新执行PHP,数据量一大,首页直接卡成PPT。我做过一个测试,2000篇文章的栏目页,加了这个属性后响应时间从0.3秒飙到2.1秒。

所以更聪明的做法是绕开arclist,直接写SQL调用。用dede:sql标签,条件随便你写:

{ dede:sql sql="SELECT * FROM dede_archives WHERE typeid=5 AND litpic != '' LIMIT 0,10"} <a href="[field:arcurl/]">[field:title/]</a> { /dede:sql}

这相当于把判断逻辑前置到数据库查询里,性能反而更好。唯一麻烦的是你得自己拼字段,dede_archives表里没有的关联数据(比如自定义字段),得用JOIN或者子查询。

还有个野路子,用arclist的flag属性配合channelid做伪判断。比如你想筛选“头条文章且带缩略图”,可以设flag='h',然后判断是否有缩略图就交给CSS处理——没图的时候给个占位图。虽然不完美,但至少不用碰runphp。

最后提醒一句:如果你用的是织梦二次开发版(比如那些改过内核的),arclist可能自带if参数。先查下你用的版本有没有加这个功能,别一上来就套老办法。我见过有人用某套“企业站增强版”,里面直接支持{ dede:arclist if='[field:click>100]'},省事得多。

说到底,织梦这系统就是给你留了后门,但后门钥匙得自己配。别指望它像现代框架那样把逻辑写清楚,能用SQL解决的事就别碰PHP,能用CSS解决的事就别碰SQL——这才是老织梦人的生存之道。

Tags:

相关文章

  • 免费p2p网站

    娱乐

    BitTorrent 的种子文件还在,但传统 tracker 站点死了一片。海盗湾换过域名,KickassTorrents 被端,ExtraTorrent 主动关门。可这行当没绝。现在活下来的,是那种 ...

    【娱乐】

    阅读更多
  • wifi安全性低怎么设置

    娱乐

    我家楼下小面馆的WiFi密码是八个8,老板说这样好记。直到有天他查账单,发现隔壁奶茶店的收银系统被连进来刷了几十笔虚拟订单——用他店里的网。 这事不怪老板蠢,只怪很多人压根没把家用WiFi当回事。你随 ...

    【娱乐】

    阅读更多
  • php网站

    娱乐

    老张的店子开了十二年,招牌菜是酸菜鱼。去年他花三千块找人做了个网站,就一页,白底黑字,菜单、电话、地图,没了。结果呢?每天能接到三四个订座电话。他说这钱花得值,比在美食公众号投广告划算多了。我问他网站 ...

    【娱乐】

    阅读更多


友情链接