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_*)
151 lines
6.7 KiB
HTML
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>
|