去掉软件标签的描边;修「全部问题」列表分类标签渲染成空
两个问题:
一、两个标签中间那道「线」
不是 CSS 分隔符 —— 是 .badge.sw(软件徽章)带 border:1px solid var(--swc-line),
而 .badge.cat / .badge.st 都没有边框。并排显示时那道描边看起来
就像凭空插了一条分隔线。去掉边框,三个标签统一为无边框胶囊。
二、反馈类型(Bug / 功能建议)在后台「全部问题」列表里不显示
🔴 根因:fb_category_label() 参数是**数字 id**,内部会 (int) 化。
而全部问题列表传的是 $t["category"](老 slug 字段,值为 bug),
(int)bug === 0 → 函数返回空串 → 渲染出一个**空的** badge:
标签框在、里面什么都没有,看起来就像「类型没了」。
修法:
- 新增 fb_category_label_by_slug($softwareId, $slug) 给老数据兜底
(slug 在不同软件下可能重名,必须带 software_id)
- 全部问题列表改用 category_id 优先、slug 兜底
- 前台列表同样处理,并且**取不到名字就不渲染这个标签**,
绝不再输出空胶囊
- 在 fb_category_label() 的注释里写明「必须传数字 id」,
避免下次再踩
验证:
函数对照跑通:#4 category_id=6 → Bug;#5 category_id=7 → 功能建议;
旧写法 fb_category_label("bug") → (空),确认这就是根因。
浏览器实测详情页三个标签 border-top-width 全部 0px / style none,
圆角都是 999px,描边已消除。
前台列表两个条目分类标签分别渲染出 Bug / 功能建议,不再是空。
7 个路由全 200。
This commit is contained in:
@@ -766,7 +766,17 @@ fb_layout_head('管理后台', ['robots' => 'noindex,nofollow']);
|
||||
</div>
|
||||
<div class="item-tags">
|
||||
<?php if ($aSw): ?><?php echo fb_software_chip($aSw); ?><?php endif; ?>
|
||||
<span class="badge cat"><?php echo e(fb_category_label($t['category'])); ?></span>
|
||||
<?php
|
||||
/* 🔴 这里必须用 category_id(数字),不能用 $t['category'](老 slug 字段)。
|
||||
* fb_category_label() 内部会把参数 (int) 化,传 'bug' 会变成 0 → 返回空串,
|
||||
* 结果就是渲染出一个**空的** <span class="badge cat"></span>。
|
||||
* 用户 2026-11-03 看到的就是「反馈类型没了」。
|
||||
* 优先 category_id,没有才回退 slug(老数据兼容)。 */
|
||||
$aCat = !empty($t['category_id'])
|
||||
? fb_category_label((int)$t['category_id'])
|
||||
: fb_category_label_by_slug((int)$t['software_id'], (string)$t['category']);
|
||||
?>
|
||||
<?php if ($aCat !== ''): ?><span class="badge cat"><?php echo e($aCat); ?></span><?php endif; ?>
|
||||
<span class="badge st st-<?php echo e($t['status']); ?>"><?php echo e(fb_status_label($t['status'])); ?></span>
|
||||
<?php if ((int)$t['visible'] !== 1): ?><span class="badge st st-closed">未公开</span><?php endif; ?>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user