新增功能:
- 主题发现模块:扫描 templates/ 目录下含 theme.json 的目录
- 站点设置新增 site.theme 键,DB 持久化 + 内存缓存
- 运行时切换主题:保存后即时重载 Gin 模板 + 静态资源哈希
- 管理后台 '外观主题' 页面:列表展示、选择、一键切换
- 动态静态资源服务:根据当前主题目录提供 CSS/JS
修复:
- account.html 残留孤儿 {{end}} 模板语法错误
- 动态静态资源 handler 误判 Gin *filepath 路径前缀为绝对路径
变更文件(12 modified + 3 new):
- cmd/server/main.go: 动态主题加载 + 运行时重载 + 动态静态服务
- internal/theme/discovery.go: 新增主题扫描
- internal/config/site_settings.go: ThemeName()
- internal/service/site_setting_service.go: ThemeReloader + UpdateTheme
- internal/controller/admin/: ISP 扩展 + GetThemes/UpdateTheme/ThemePage
- internal/controller/auth_controller.go: 准则路径动态化
- internal/router/: InjectThemeReloader + 新路由
- templates/: 外观主题页面 + JS + CSS + 子导航
This commit is contained in:
@ -3,4 +3,5 @@
|
||||
<a href="/admin/settings/security" class="subnav-item {{if eq .ActiveSetting "security"}}active{{end}}">安全与维护</a>
|
||||
<a href="/admin/settings/registration" class="subnav-item {{if eq .ActiveSetting "registration"}}active{{end}}">注册策略</a>
|
||||
<a href="/admin/settings/content" class="subnav-item {{if eq .ActiveSetting "content"}}active{{end}}">审核与内容</a>
|
||||
<a href="/admin/settings/theme" class="subnav-item {{if eq .ActiveSetting "theme"}}active{{end}}">外观主题</a>
|
||||
</div>
|
||||
|
||||
44
templates/admin/html/site-settings/theme.html
Normal file
44
templates/admin/html/site-settings/theme.html
Normal file
@ -0,0 +1,44 @@
|
||||
{{template "admin/layout/base.html" .}}
|
||||
<div class="page-header">
|
||||
<h1>站点设置</h1>
|
||||
<p class="page-desc">管理与切换站点外观主题</p>
|
||||
</div>
|
||||
|
||||
{{template "admin/site-settings/_menu.html" .}}
|
||||
|
||||
<div class="settings-section">
|
||||
<div class="section-title">主题选择</div>
|
||||
<div class="section-body">
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">当前主题</span>
|
||||
<span class="setting-desc">切换主题后立即生效,无需重启服务</span>
|
||||
</div>
|
||||
<div class="setting-input-wrap">
|
||||
<select id="theme-selector" class="setting-select">
|
||||
<option value="">加载中...</option>
|
||||
</select>
|
||||
<button id="theme-save-btn" class="btn btn-sm btn-primary" disabled>保存</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="setting-item">
|
||||
<div class="setting-info">
|
||||
<span class="setting-label">主题信息</span>
|
||||
<span class="setting-desc">选中主题的详细描述</span>
|
||||
</div>
|
||||
<div class="setting-info-detail" id="theme-info">
|
||||
<span class="setting-value">—</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="theme-status" class="settings-section" style="display:none">
|
||||
<div class="section-body">
|
||||
<div class="setting-item">
|
||||
<span id="theme-status-msg"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{template "admin/layout/footer.html" .}}
|
||||
<script src="/admin/static/js/site-settings-theme.js?v={{assetV "/admin/static/js/site-settings-theme.js"}}" nonce="{{.CSPNonce}}"></script>
|
||||
Reference in New Issue
Block a user