feat: 站点媒体库与移动端底部导航,服务测试补强
- 新增媒体库:media_library/media_thumbs 服务(WebP 缩略图)、管理端 media 页面 - 移动端底部导航 MobileTabBar 替换 MobilePostBar - 旧数据导入增强与测试、路由与登录会话/板块侧边栏测试补强 - site-doc 组件精简(移除 Breadcrumb),文档新增迁移公告说明
This commit is contained in:
@@ -22,7 +22,6 @@ import PostRow from "@/components/PostRow";
|
||||
import FeedTabs from "@/components/home/FeedTabs";
|
||||
import FeedNewTip from "@/components/home/FeedNewTip";
|
||||
import { WorkspaceNavMobile } from "@/components/home/WorkspaceNav";
|
||||
import { SiteDocBreadcrumb } from "@/components/site-doc";
|
||||
import { BoardMissingPanel } from "@/components/home/BoardPanels";
|
||||
import { requestCanonical } from "@/lib/canonicalMeta";
|
||||
import { defaultFeedSort, homeCanonicalQuery, normalizeFeedSort } from "@/lib/siteUrl";
|
||||
@@ -131,6 +130,13 @@ export default async function HomePage({ searchParams }: HomePageProps) {
|
||||
|
||||
// 侧栏布局:板块态右栏走 board 配置(左栏跟随首页),其余走 home 配置
|
||||
const scopeLists = sidebarScopeLists(sidebar.config, showBoardPanels ? "board" : "home");
|
||||
// 三栏竖向分隔线跟随左右栏显隐(空配置不画悬空线)
|
||||
const hasLeftRail = scopeLists.left.length > 0;
|
||||
const hasRightRail = showBoardPanels
|
||||
? boardSidebar
|
||||
? scopeLists.right.length > 0
|
||||
: boardPanelsMissing
|
||||
: !!(overview && scopeLists.right.length > 0);
|
||||
const sidebarProps: SidebarBlockProps = {
|
||||
allowComments,
|
||||
user,
|
||||
@@ -202,7 +208,7 @@ export default async function HomePage({ searchParams }: HomePageProps) {
|
||||
</h1>
|
||||
<p className="meta mt-2">共 {postsData.total} 篇结果 · 按相关度与时间排序</p>
|
||||
</div>
|
||||
<div className="panel overflow-hidden">
|
||||
<div className="panel overflow-hidden max-sm:-mx-4 max-sm:rounded-none max-sm:border-x-0 max-sm:shadow-none">
|
||||
{postsData.posts.length > 0 ? (
|
||||
postsData.posts.map((post, i) => (
|
||||
<PostRow key={post.id} post={post} showBoard index={i} showViews={false} showLike={false} />
|
||||
@@ -231,37 +237,30 @@ export default async function HomePage({ searchParams }: HomePageProps) {
|
||||
if (sort !== defaultFeedSort(allowComments)) pageQuery.sort = sort;
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div className="j13-fluid-home">
|
||||
<JsonLd data={listingLd} />
|
||||
<WorkspaceNavMobile boards={boards} user={user} />
|
||||
<WorkspaceNavMobile boards={boards} />
|
||||
|
||||
<div className={`flex items-start gap-6 xl:gap-7 ${activeBoard ? "" : "mt-5 lg:mt-0"}`}>
|
||||
<div className={`flex items-start gap-6 xl:gap-7 ${activeBoard ? "" : "lg:mt-0"}`}>
|
||||
{/* 左栏:按配置渲染(缺省 = 板块目录) */}
|
||||
{scopeLists.left.length > 0 && (
|
||||
<aside className="hidden lg:block w-56 xl:w-60 shrink-0 sticky top-[var(--rail-top)] max-h-[var(--rail-max-h)]">
|
||||
<aside className="j13-rail-left hidden lg:block w-56 xl:w-60 shrink-0 sticky top-[var(--rail-top)] max-h-[var(--rail-max-h)]">
|
||||
<SidebarRenderer blocks={scopeLists.left} widgets={sidebar.widgets} props={sidebarProps} />
|
||||
</aside>
|
||||
)}
|
||||
|
||||
{/* 中栏:tab 栏与帖子流为同一个整体卡片(左栏切板块只替换这一列) */}
|
||||
<div className="flex-1 min-w-0">
|
||||
{/* 中栏:tab 栏与帖子流为同一个整体(左栏切板块只替换这一列) */}
|
||||
<div
|
||||
className={`flex-1 min-w-0 ${hasLeftRail ? "j13-home-sep-l" : ""} ${
|
||||
hasRightRail ? "j13-home-sep-r" : ""
|
||||
}`}
|
||||
>
|
||||
<h1 className="sr-only">{pageName}</h1>
|
||||
|
||||
<div className="panel overflow-hidden">
|
||||
{activeBoard ? (
|
||||
<div className="px-3 sm:px-4 pt-3">
|
||||
<SiteDocBreadcrumb
|
||||
className="is-ruled !mb-0"
|
||||
items={[
|
||||
{ href: "/", label: "首页" },
|
||||
{ label: activeBoard.name },
|
||||
]}
|
||||
/>
|
||||
</div>
|
||||
) : null}
|
||||
<div className="flex items-center justify-between gap-2 px-3 sm:px-4 pt-3 pb-2.5">
|
||||
<div className="max-sm:-mx-4">
|
||||
<div className="j13-feed-head flex items-stretch justify-between gap-2 px-3 sm:px-4">
|
||||
<FeedTabs current={sort} boardId={boardId} />
|
||||
<span className="meta shrink-0 text-[12px] tabular-nums">
|
||||
<span className="meta self-center shrink-0 text-[12px] tabular-nums">
|
||||
共 {postsData.total} 篇
|
||||
</span>
|
||||
</div>
|
||||
@@ -329,12 +328,11 @@ export default async function HomePage({ searchParams }: HomePageProps) {
|
||||
|
||||
{/* 窄屏:面板下沉到帖子流之后(右栏列表 + 左栏列表,板块目录除外) */}
|
||||
{mobileBlocks.length > 0 && (
|
||||
<div className="mt-6 lg:hidden">
|
||||
<div className="j13-flat-rail mt-3 lg:hidden">
|
||||
<SidebarRenderer
|
||||
blocks={mobileBlocks}
|
||||
widgets={sidebar.widgets}
|
||||
props={sidebarProps}
|
||||
className="space-y-4"
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user