在帝国 CMS 中,通过 PHP 判断字段值并添加相应样式是非常常见的需求,比如根据文章推荐状态、价格区间、评分等字段值显示不同样式。以下是具体实现方法和示例:

一、基础语法结构

核心思路是:先获取字段值,通过if...elseswitch判断条件,然后输出对应的样式类或内联样式。
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>