帝国CMS模版中通过 PHP 判断字段值并添加相应样式
2025-10-06
在帝国 CMS 中,通过 PHP 判断字段值并添加相应样式是非常常见的需求,比如根据文章推荐状态、价格区间、评分等字段值显示不同样式。以下是具体实现方法和示例:
php
php
php
php
php
一、基础语法结构
核心思路是:先获取字段值,通过if...else
或switch
判断条件,然后输出对应的样式类或内联样式。php
<?php
// 获取字段值
$fieldValue = $navinfor['字段名']; // 内容页
// $fieldValue = $bqr['字段名']; // 灵动标签列表中
// 判断并定义样式
if(条件1) {
$style = "style1"; // 样式类1
} elseif(条件2) {
$style = "style2"; // 样式类2
} else {
$style = "default"; // 默认样式
}
?>
<!-- 应用样式 -->
<div class="item <?=$style?>">内容</div>
二、常用场景示例
1. 根据文章推荐状态添加样式(内容页)
假设isgood
字段为推荐状态(1 = 推荐,0 = 不推荐):php
<?php
// 获取推荐状态字段(isgood)
$isgood = $navinfor['isgood'];
// 判断并设置样式
if($isgood == 1) {
$goodStyle = 'recommended';
$badge = '<span class="badge">推荐</span>';
} else {
$goodStyle = '';
$badge = '';
}
?>
<!-- 应用到标题 -->
<h1 class="title <?=$goodStyle?>">
<?=$navinfor['title']?>
<?=$badge?>
</h1>
<style>
.recommended { color: #f00; }
.badge {
display: inline-block;
padding: 2px 5px;
background: #f00;
color: #fff;
font-size: 12px;
margin-left: 10px;
}
</style>
2. 根据价格区间显示不同样式(列表页灵动标签)
假设产品模型中有price
字段,根据价格范围显示不同颜色:php
[e:loop={"SELECT id,title,price FROM phome_ecms_product WHERE checked=1",10,24,0}]
<?php
$price = $bqr['price'];
// 判断价格区间
if($price > 1000) {
$priceStyle = 'high-price';
} elseif($price > 500) {
$priceStyle = 'mid-price';
} else {
$priceStyle = 'low-price';
}
?>
<div class="product-item">
<a href="<?=$bqr['titleurl']?>"><?=$bqr['title']?></a>
<span class="price <?=$priceStyle?>">¥<?=$price?></span>
</div>
[/e:loop]
<style>
.high-price { color: #f00; font-weight: bold; }
.mid-price { color: #ff9900; }
.low-price { color: #008000; }
</style>
3. 根据字段是否为空显示不同样式
判断titlepic
(标题图)是否存在,没有则显示默认图片:php
[e:loop={"SELECT id,title,titlepic FROM phome_ecms_news",8,24,0}]
<?php
// 判断是否有标题图
if(!empty($bqr['titlepic'])) {
$imgSrc = $bqr['titlepic'];
$imgClass = 'has-img';
} else {
$imgSrc = '/images/default.jpg'; // 默认图片
$imgClass = 'no-img';
}
?>
<div class="news-img <?=$imgClass?>">
<img src="<?=$imgSrc?>" alt="<?=$bqr['title']?>">
</div>
[/e:loop]
<style>
.has-img { border: 2px solid #eee; }
.no-img { border: 2px dashed #ccc; }
</style>
4. 多值字段判断(使用 switch)
假设type
字段有多个值(1 = 新闻,2 = 活动,3 = 公告):php
<?php
$type = $navinfor['type'];
switch($type) {
case 1:
$typeName = "新闻";
$typeStyle = "news-type";
break;
case 2:
$typeName = "活动";
$typeStyle = "active-type";
break;
case 3:
$typeName = "公告";
$typeStyle = "notice-type";
break;
default:
$typeName = "其他";
$typeStyle = "other-type";
}
?>
<div class="type-tag <?=$typeStyle?>"><?=$typeName?></div>
<style>
.news-type { background: #e3f2fd; }
.active-type { background: #e8f5e9; }
.notice-type { background: #fff3e0; }
</style>
声明:本文来自用户分享和网络收集,仅供学习与参考,测试请备份。