import React from 'react'; import { Link } from 'react-router-dom'; /** * 页脚文案渲染:footer_copyright / footer_powered / footer_desc 为管理员字段, * 纯文本(不含 `<`)按原样文本渲染;含 `<` 时按 HTML+CSS 渲染(self-XSS 与音乐嵌入同级)。 * 仅用于这三个字段,不扩大到其他数据。 */ function HtmlOrText({ value, className }) { if (typeof value === 'string' && value.includes('<')) { return ; } return {value}; } /** * 前台页脚(按 settings.footer_style 渲染 3 种样式,视觉对齐 /tmp/footer-demo.html 的 02/03/04): * - classic 经典左右:左 Powered + 版权,右 站点名 v{version} 胶囊徽章 * - columns 分栏导航:品牌 + 固定导航栏 + 底部版权条 * - glass 玻璃卡片:磨砂玻璃卡片(backdrop-filter blur + 半透明底 + 细边框) * 所有样式都保留站点名 + v{version} 元素;footer_desc 为空时回退到 site_description。 */ export default function Footer({ settings = {}, version = '' }) { const siteName = settings.site_name || 'RainWeb'; const style = settings.footer_style || 'classic'; const copyright = settings.footer_copyright || '© 2026 Rainnya Blog. All rights reserved.'; const powered = settings.footer_powered || 'Powered by RainnyaWeb'; const desc = settings.footer_desc || settings.site_description || ''; if (style === 'columns') { // 导航栏目固定不可编辑(后台提示),首页/博客/论坛走 SPA,管理后台整页跳转 const navCols = [ { title: '导航', links: [ { to: '/', label: '首页' }, { to: '/blog.html', label: '博客' }, { to: '/forum.html', label: '论坛' }, ] }, { title: '其他', links: [ { to: '/admin', label: '管理后台', external: true }, { to: '/profile.html', label: '个人中心' }, ] }, ]; return ( ); } if (style === 'glass') { return (