Files
pear-admin-flask/plugins/aboutManager/templates/system/about/main.html
T
bwstudio 0ffc103e46 feat(plugins): 4 个业务插件代码 + 前台公开页面改造
plugins/navManager:导航 CRUD + 导航分类 CRUD(独立 blueprint)
plugins/friendManager:友情链接 CRUD
plugins/aboutManager:关于本站 CRUD
plugins/siteStats:访问统计主页 + JSON 接口 + /site/* GET 埋点 + nav 卡片点击埋点

applications/view/public/nav.py:导航聚合页 / 分类详情 / JSON 接口,支持 visit_count 注入
applications/view/public/about.py:关于本站公开页
applications/view/public/friend.py:友情链接公开页

templates/public/base.html:响应式首页(搜索框 / 分类抽屉 / 5 主题切换 / footer 隐私小字)
templates/public/index.html / category.html:卡片右下角访问次数
templates/public/about.html / friend.html:关于 + 友链前台页

docs/plugins-development.md:插件开发完整指南(生命周期 + 4 个示例 + FAQ + framework 迁移)

scripts/:探针与端到端验证脚本(probe_*/verify_*/test_*)
2026-09-06 18:18:06 +08:00

151 lines
6.7 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>关于本站</title>
{% include 'system/common/header.html' %}
</head>
<body class="pear-container">
<div class="layui-card">
<div class="layui-card-header">
<span class="layui-icon layui-icon-about"></span> 关于本站
<span style="float:right;font-size:12px;color:#999;margin-top:5px;">
共 1 条记录(站点全局唯一,修改即时生效)
</span>
</div>
<div class="layui-card-body">
<form class="layui-form" lay-filter="about-form" style="padding-right: 20px;">
{{ csrf_input()|safe }}
<div class="layui-form-item">
<label class="layui-form-label">站点名</label>
<div class="layui-input-block">
<input type="text" name="siteName" value="{{ about.site_name or '' }}"
placeholder="公开页显示的标题" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">自我介绍</label>
<div class="layui-input-block">
<textarea name="contentMd" placeholder="支持 Markdown 语法(# 标题、- 列表、** 加粗**、` 代码、> 引用……)"
class="layui-textarea" rows="10"
style="font-family: Consolas, 'Microsoft YaHei', monospace;">{{ about.content_md or '' }}</textarea>
</div>
<div class="layui-form-mid layui-word-aux">
前台 /site/about 会用 Markdown 渲染,提交空内容则显示默认占位文字
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">ICP 备案</label>
<div class="layui-input-block">
<input type="text" name="icp" value="{{ about.icp or '' }}"
placeholder="如 京ICP备12345678号" autocomplete="off" class="layui-input">
</div>
</div>
<fieldset class="layui-elem-field" style="margin: 20px 0; padding: 0 20px;">
<legend>联系方式</legend>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">邮箱</label>
<div class="layui-input-inline">
<input type="email" name="contactEmail" value="{{ about.contact_email or '' }}"
placeholder="hi@example.com" autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">QQ</label>
<div class="layui-input-inline">
<input type="text" name="contactQq" value="{{ about.contact_qq or '' }}"
placeholder="12345678" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">微信</label>
<div class="layui-input-inline">
<input type="text" name="contactWechat" value="{{ about.contact_wechat or '' }}"
autocomplete="off" class="layui-input">
</div>
</div>
<div class="layui-inline">
<label class="layui-form-label">Telegram</label>
<div class="layui-input-inline">
<input type="text" name="contactTelegram" value="{{ about.contact_telegram or '' }}"
placeholder="@your_id 或 https://t.me/xxx" autocomplete="off" class="layui-input">
</div>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">GitHub</label>
<div class="layui-input-block">
<input type="url" name="contactGithub" value="{{ about.contact_github or '' }}"
placeholder="https://github.com/yourname" autocomplete="off" class="layui-input">
</div>
</div>
</fieldset>
<div class="layui-form-item">
<label class="layui-form-label">打赏/捐赠</label>
<div class="layui-input-block">
<input type="text" name="donateUrl" value="{{ about.donate_url or '' }}"
placeholder="可填二维码图片地址 或 PayPal/支付宝收款链接" autocomplete="off" class="layui-input">
</div>
<div class="layui-form-mid layui-word-aux">
前台 /site/about 会在底部显示
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button type="button" class="layui-btn" lay-submit lay-filter="about-submit">
<i class="layui-icon layui-icon-ok"></i> 保存
</button>
<button type="reset" class="layui-btn layui-btn-primary">重置</button>
<a href="/site/about" target="_blank" class="layui-btn layui-btn-warm" style="margin-left: 16px;">
<i class="layui-icon layui-icon-link"></i> 查看前台效果
</a>
</div>
</div>
</form>
</div>
</div>
</body>
{% include 'system/common/footer.html' %}
<script>
layui.use(['form', 'layer'], function(){
var form = layui.form;
var layer = layui.layer;
var $ = layui.$;
// 隐藏字段随 Layui form 一起序列化
form.on('submit(about-submit)', function(data){
// data.field 已经包含 csrf_token(隐藏域)+ 所有可见字段
$.ajax({
url: '/system/about/save',
type: 'POST',
contentType: 'application/json',
data: JSON.stringify(data.field),
success: function(res){
if (res.success) {
layer.msg(res.msg, {icon: 1});
} else {
layer.msg(res.msg, {icon: 2});
}
},
error: function(){
layer.msg('保存失败,请稍后再试', {icon: 2});
}
});
return false;
});
});
</script>
</body>
</html>