diff --git a/src/app/admin/page.tsx b/src/app/admin/page.tsx index 43e202c..2490a27 100644 --- a/src/app/admin/page.tsx +++ b/src/app/admin/page.tsx @@ -24,6 +24,7 @@ import { CSS } from '@dnd-kit/utilities'; import { AlertCircle, AlertTriangle, + BarChart3, BookMarked, BookOpen, Bot, @@ -406,6 +407,11 @@ interface SiteConfig { OIDCClientId?: string; OIDCClientSecret?: string; OIDCButtonText?: string; + AnalyticsEnabled?: boolean; + AnalyticsProvider?: 'umami' | 'google' | 'custom'; + AnalyticsScriptUrl?: string; + AnalyticsWebsiteId?: string; + AnalyticsCustomScript?: string; } // 视频源数据类型 @@ -10198,6 +10204,11 @@ const SiteConfigComponent = ({ OIDCClientId: '', OIDCClientSecret: '', OIDCButtonText: '', + AnalyticsEnabled: false, + AnalyticsProvider: 'umami', + AnalyticsScriptUrl: '', + AnalyticsWebsiteId: '', + AnalyticsCustomScript: '', }); // 豆瓣数据源相关状态 @@ -11528,6 +11539,170 @@ const SiteConfigComponent = ({ + {/* 流量统计配置 */} +
+ + + + 流量统计 + + + +
+ {/* 启用开关 */} +
+
+ +

+ 开启后将在页面中注入统计脚本,支持 Umami、Google Analytics 和自定义代码 +

+
+ +
+ + {siteSettings.AnalyticsEnabled && ( + <> + {/* 统计服务提供商 */} +
+ + +
+ + {siteSettings.AnalyticsProvider === 'umami' && ( + <> +
+ + + setSiteSettings((prev) => ({ + ...prev, + AnalyticsScriptUrl: e.target.value, + })) + } + placeholder='https://your-umami-server.com/script.js' + className='mt-1 block w-full rounded-md border border-gray-300 px-3 py-2 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200' + /> +

+ Umami 实例的 script.js 完整 URL +

+
+
+ + + setSiteSettings((prev) => ({ + ...prev, + AnalyticsWebsiteId: e.target.value, + })) + } + placeholder='e.g. 12345678-abcd-efgh-ijkl-1234567890ab' + className='mt-1 block w-full rounded-md border border-gray-300 px-3 py-2 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200' + /> +

+ 在 Umami 后台添加网站后获取的 Website ID +

+
+ + )} + + {siteSettings.AnalyticsProvider === 'google' && ( +
+ + + setSiteSettings((prev) => ({ + ...prev, + AnalyticsWebsiteId: e.target.value, + })) + } + placeholder='G-XXXXXXXXXX' + className='mt-1 block w-full rounded-md border border-gray-300 px-3 py-2 text-sm dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200' + /> +

+ Google Analytics 4 的 Measurement ID,在 GA 后台「数据流」中获取 +

+
+ )} + + {siteSettings.AnalyticsProvider === 'custom' && ( +
+ +