feat(portal): 门户左侧栏目导航+首页视觉升级+主题正名批次-PortalSideNav模型+attachCategoryNavigation注入doCategory/doArticle三件套categoryPath/navTopId/sideNav(站点快照树推导零新增查询,home/search不注入);7主题侧栏两栏markup+窄屏横滚+顶导航祖先高亮+二级下拉当前项高亮+面包屑全路径;cms_category.home_style全链路(news_grid 16条8x2日期前缀/media_focus形态)+PortalListData.Item补source来源徽标四处装配;Banner机制gallery展示位→galleryBanners四列大图轮播(自由字符串零DDL);页脚config 12新键(footer_addresses多校区/qr_*/social_*含URL校验,footerAddressLines由PortalSiteSnapshot.of拆行派生);新增展示型皮肤包campus-glow;fresh-mint2正名fresh-mint(theme.json/头注释同步);AttachmentService scene白名单加category(单页富文本贴图免清孤儿);新增PortalSideNavIT 8+PortalHomeBlocksIT 3,CategoryServiceIT/SiteServiceIT/PortalSsrIT/ThemeContractIT等单类独跑全绿;附sql/clear_cms_data.sql全量清库脚本(清cms_*六表留平台账号/主题包/上传文件,测试数据重走用)
build / build-push (push) Successful in 1m47s

This commit is contained in:
chenxing
2026-09-10 11:10:48 +08:00
parent f4b1749377
commit 98d640faba
77 changed files with 2564 additions and 175 deletions
@@ -946,3 +946,51 @@ time, .item-meta { color: var(--text-muted); font-size: var(--fs-sm); }
margin-right: 4px;
border-radius: 2px;
}
/* ===== 左侧栏目导航(docs/11):有二级节点的模块,栏目页/详情页左侧展示兄弟目录 ===== */
.page-cols { display: flex; align-items: flex-start; gap: var(--sp-6); }
.page-cols .page-card { flex: 1; min-width: 0; }
.side-nav {
flex: none;
width: 220px;
background: var(--card-bg);
border: 1px solid var(--border);
border-radius: var(--r-md);
box-shadow: var(--shadow-sm);
overflow: hidden;
}
.side-nav-head {
background: var(--primary);
color: var(--on-dark, #fff);
font-size: var(--fs-lg);
font-weight: 700;
text-align: center;
padding: var(--sp-5) var(--sp-3);
letter-spacing: 2px;
}
.side-nav-list { list-style: none; margin: 0; padding: 0; }
.side-nav-item + .side-nav-item { border-top: 1px dashed var(--border); }
.side-nav-item a {
display: block;
padding: var(--sp-4, 12px) var(--sp-5, 20px);
color: var(--text);
text-decoration: none;
font-size: var(--fs-md);
transition: background .15s ease, color .15s ease;
}
.side-nav-item a:hover { color: var(--primary); background: var(--surface-variant, transparent); }
.side-nav-item.active a { background: var(--primary); color: var(--on-dark, #fff); font-weight: 600; text-decoration: none; }
/* 顶导航二级下拉当前项高亮(docs/11 顺带) */
.site-nav ul.sub-nav li.active a { color: var(--primary); }
@media (max-width: 768px) {
.page-cols { flex-direction: column; gap: var(--sp-3); }
.side-nav { width: 100%; }
.side-nav-list { display: flex; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.side-nav-item { flex: none; }
.side-nav-item + .side-nav-item { border-top: none; border-left: 1px dashed var(--border); }
.side-nav-item a { white-space: nowrap; padding: var(--sp-3) var(--sp-4); }
}
@media print {
.side-nav { display: none; }
.page-cols { display: block; }
}