
然后在 管理列表模板中 勾选:

列表内容模板(list.var) (*) 的框中将以下代码复制进去:
if($r[titlepic]){ <!-- 更严谨的写法(推荐),CMS中同样能正常运行 if($r['titlepic']) //这里换成if(!empty($r['titlepic'])){ 也行-->
$str = '<li class="article-item">
<div class="article-img">
<a href="[!--titleurl--]" target="_blank">
<img width="163" height="149" src="[!--titlepic--]" alt="[!--oldtitle--]" />
</a>
</div>
<div class="article-content">
<h3><a href="[!--titleurl--]" title="[!--oldtitle--]">[!--title--]</a></h3>
<div class="article-meta">
<span><i class="fa-solid fa-calendar"></i> [!--newstime--]</span>
<span><i class="fa-solid fa-user"></i> why80</span>
<span><i class="fa-solid fa-eye"></i> [!--onclick--]</span>
</div>
<div class="article-brief">
[!--smalltext--]…
</div>
<div class="article-more">
<a href="[!--titleurl--]" target="_blank">阅读全文 <i class="fa-solid fa-arrow-right"></i></a>
</div>
</div>
</li>';
}else{
$str = '<li class="article-item">
<div class="article-content no-img">
<h3><a href="[!--titleurl--]" title="[!--oldtitle--]">[!--title--]</a></h3>
<div class="article-meta">
<span><i class="fa-solid fa-calendar"></i> [!--newstime--]</span>
<span><i class="fa-solid fa-user"></i> why80.com</span>
<span><i class="fa-solid fa-eye"></i> [!--onclick--]</span>
</div>
<div class="article-brief">
[!--smalltext--]…
</div>
<div class="article-more">
<a href="[!--titleurl--]" target="_blank">阅读全文 <i class="fa-solid fa-arrow-right"></i></a>
</div>
</div>
</li>';
}
$listtemp = $str;
---演示效果请看这里
为什么 CMS 里用 if($r[titlepic]) 就够了?对此,AI给出的解释是:
CMS 提前做了 “兜底”
CMS 在渲染列表时,会先把$r[titlepic]初始化:
有图片 → $r[titlepic] = "图片URL"(非空字符串,if判断为true);
无图片 → $r[titlepic] = ""(空字符串,if判断为false);
也就是说,$r[titlepic] 要么是有效 URL,要么是空字符串,不会出现 “变量未定义”“值为 0/null” 等特殊情况,用简单的if($r[titlepic])完全能准确判断,没必要加!empty()。
!empty() 在 CMS 中是 “冗余判断”
!empty() 的作用是同时判断:
变量是否存在(isset);
变量是否非空 / 非 0 / 非 false。
但 CMS 已经保证$r[titlepic]一定存在,所以!empty($r['titlepic']) 和 $r[titlepic] 的判断结果完全一致,加了反而多此一举(不会报错,但没必要---why80注,实际刷新列表页时有不正常的提示,尽管列表页看似正常)。
CMS 对数组键引号的 “宽容性”
你代码里$r[titlepic]少了引号,在纯 PHP 中!empty($r[titlepic])会报 “常量未定义” 警告,但 CMS 底层会自动把$r[titlepic]解析为$r['titlepic'](把未定义的 “常量” 当作字符串键),所以即使不加引号、不用!empty(),逻辑也不会出错。
三、补充:什么时候才需要加 !empty()?
只有在纯 PHP 环境(没有 CMS 兜底)时,!empty() 才有意义,比如:
自己写 PHP 脚本,$r 可能是从数据库查询的,有可能不存在titlepic字段;
$r[titlepic] 可能是0/null/false等 “假值”,需要严格区分 “无图片” 和 “值为 0”;
而你的场景是 CMS 模板,这些情况都被 CMS 屏蔽了,所以if($r[titlepic])就是最优写法。
![[!--sitename--]二维码](/skin/why80/images/WHY80_ewm.png)