From 0563f2478e8733f114306af42d905585f453db7f Mon Sep 17 00:00:00 2001 From: shinya Date: Mon, 30 Jun 2025 23:48:35 +0800 Subject: [PATCH] fix: dynamic site name --- src/app/layout.tsx | 14 +++++++++----- src/app/login/page.tsx | 9 ++++++--- src/components/MobileHeader.tsx | 5 ++++- src/components/Sidebar.tsx | 14 +++++++++++--- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 2c71200..a448f52 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -8,11 +8,15 @@ import { ThemeProvider } from '../components/ThemeProvider'; const inter = Inter({ subsets: ['latin'] }); -export const metadata: Metadata = { - title: process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV', - description: '影视聚合', - manifest: '/manifest.json', -}; +export const dynamic = 'force-dynamic'; + +export function generateMetadata(): Metadata { + return { + title: process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV', + description: '影视聚合', + manifest: '/manifest.json', + }; +} export const viewport: Viewport = { width: 'device-width', diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 0a9ab04..06f6f96 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -5,7 +5,9 @@ import { Suspense, useState } from 'react'; import { ThemeToggle } from '@/components/ThemeToggle'; -function LoginPageClient() { +export const dynamic = 'force-dynamic'; + +function LoginPageClient({ siteName }: { siteName: string }) { const router = useRouter(); const searchParams = useSearchParams(); const [password, setPassword] = useState(''); @@ -52,7 +54,7 @@ function LoginPageClient() {

- {process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'} + {siteName}

@@ -88,9 +90,10 @@ function LoginPageClient() { } export default function LoginPage() { + const siteName = process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'; return ( - + ); } diff --git a/src/components/MobileHeader.tsx b/src/components/MobileHeader.tsx index 6964a77..e55b3fa 100644 --- a/src/components/MobileHeader.tsx +++ b/src/components/MobileHeader.tsx @@ -4,7 +4,10 @@ import Link from 'next/link'; import { ThemeToggle } from './ThemeToggle'; +export const dynamic = 'force-dynamic'; + const MobileHeader = () => { + const siteName = process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'; return (
@@ -12,7 +15,7 @@ const MobileHeader = () => { href='/' className='text-2xl font-bold text-green-600 tracking-tight hover:opacity-80 transition-opacity' > - {process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'} + {siteName}
diff --git a/src/components/Sidebar.tsx b/src/components/Sidebar.tsx index ac21495..1ba72d5 100644 --- a/src/components/Sidebar.tsx +++ b/src/components/Sidebar.tsx @@ -33,13 +33,17 @@ const SidebarContext = createContext({ export const useSidebar = () => useContext(SidebarContext); // 可替换为你自己的 logo 图片 -const Logo = () => ( +interface LogoProps { + siteName: string; +} + +const Logo = ({ siteName }: LogoProps) => ( - {process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'} + {siteName} ); @@ -56,6 +60,8 @@ declare global { } } +export const dynamic = 'force-dynamic'; + const Sidebar = ({ onToggle, activePath = '/' }: SidebarProps) => { const router = useRouter(); const pathname = usePathname(); @@ -158,6 +164,8 @@ const Sidebar = ({ onToggle, activePath = '/' }: SidebarProps) => { { icon: VenetianMask, label: '日漫', href: '/douban?type=tv&tag=日本动画' }, ]; + const siteName = process.env.NEXT_PUBLIC_SITE_NAME || 'MoonTV'; + return ( {/* 在移动端隐藏侧边栏 */} @@ -181,7 +189,7 @@ const Sidebar = ({ onToggle, activePath = '/' }: SidebarProps) => { }`} >
- {!isCollapsed && } + {!isCollapsed && }