- Header 改为异步 Server Component,接入 NavigationMenu(name=main), 接口不可用或未配置时回退静态导航项 - Footer 改为异步 Server Component,接入 SiteSettings, 公司名/ICP备案号/备案链接优先取后台配置,缺省回退硬编码值 - types/wagtail.ts 新增 TeamMember/Testimonial/Partner/NavigationMenu/SiteSettings 类型 - 新增 services: team/testimonial/partner/navigation/site-settings.service.ts - lint、build 均已验证通过
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
import { getSiteSettings } from "@/services/site-settings.service";
|
|
|
|
// 合规要求:中国大陆网站需展示 ICP 备案号并链接至工信部备案查询。
|
|
// 详见 documents/设计方案分析与完善版.md §2.15。
|
|
const FALLBACK_ICP_NUMBER = "冀ICP备2025130506号-1";
|
|
const FALLBACK_ICP_URL = "https://beian.miit.gov.cn/";
|
|
|
|
export default async function Footer() {
|
|
// 优先使用后台配置的站点设置(apps.core.SiteSettings),
|
|
// 接口不可用时回退到硬编码的备案信息,保证构建/渲染始终可用。
|
|
const siteSettings = await getSiteSettings();
|
|
const icpNumber = siteSettings?.icp_number || FALLBACK_ICP_NUMBER;
|
|
const icpUrl = siteSettings?.icp_url || FALLBACK_ICP_URL;
|
|
|
|
return (
|
|
<footer className="mt-auto border-t border-slate-100 bg-slate-950 py-10 text-slate-400">
|
|
<div className="mx-auto max-w-7xl px-6 text-center text-sm">
|
|
<p>
|
|
© {new Date().getFullYear()}{" "}
|
|
{siteSettings?.company_name || "企业官网"}. All rights reserved.
|
|
</p>
|
|
<p className="mt-2">
|
|
<a href="/privacy-policy" className="hover:text-white">
|
|
隐私政策
|
|
</a>
|
|
</p>
|
|
<p className="mt-2">
|
|
<a
|
|
href={icpUrl}
|
|
target="_blank"
|
|
rel="noreferrer"
|
|
className="hover:text-white"
|
|
>
|
|
{icpNumber}
|
|
</a>
|
|
</p>
|
|
</div>
|
|
</footer>
|
|
);
|
|
}
|
|
|