增加配置文件
This commit is contained in:
@@ -25,7 +25,12 @@
|
||||
</header>
|
||||
|
||||
<main class="main container">
|
||||
{{template "content" .}}
|
||||
<div class="content-wrapper">
|
||||
<div class="main-content">
|
||||
{{template "content" .}}
|
||||
</div>
|
||||
{{template "sidebar" .}}
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{{define "content"}}
|
||||
<div class="post-list">
|
||||
{{if .Posts}}
|
||||
{{range .Posts}}
|
||||
<article class="post-item">
|
||||
{{if .Cover}}
|
||||
@@ -32,8 +33,12 @@
|
||||
<a href="/post/{{.Slug}}" class="read-more">阅读全文 →</a>
|
||||
</div>
|
||||
</article>
|
||||
{{end}}
|
||||
{{else}}
|
||||
<div class="empty">暂无文章</div>
|
||||
<div class="empty">
|
||||
<p>暂无文章</p>
|
||||
<p style="margin-top: 10px; font-size: 14px; color: #999;">文章总数: {{.PostCount}}</p>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
{{ define "sidebar" }}
|
||||
<aside class="sidebar">
|
||||
<!-- 博客信息 -->
|
||||
<div class="sidebar-widget blog-info">
|
||||
<img src="/static/images/avatar.png" alt="头像" class="blog-avatar" onerror="this.src='data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 width=%2280%22 height=%2280%22><rect fill=%22%231890ff%22 width=%2280%22 height=%2280%22/><text x=%2250%%22 y=%2250%%22 fill=%22white%22 text-anchor=%22middle%22 dy=%22.3em%22 font-size=%2232%22>B</text></svg>'">
|
||||
<div class="blog-name">{{.SiteName}}</div>
|
||||
<div class="blog-description">{{.SiteDesc}}</div>
|
||||
<div class="blog-stats">
|
||||
<div class="stat-item">
|
||||
<div class="stat-number">{{.PostCount}}</div>
|
||||
<div class="stat-label">文章</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="stat-number">{{.CategoryCount}}</div>
|
||||
<div class="stat-label">分类</div>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<div class="stat-number">{{.TagCount}}</div>
|
||||
<div class="stat-label">标签</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 搜索框 -->
|
||||
<div class="sidebar-widget">
|
||||
<h3 class="widget-title">🔍 搜索</h3>
|
||||
<form class="search-form" action="/search" method="get">
|
||||
<input type="text" name="keyword" class="search-input" placeholder="输入关键字搜索..." required>
|
||||
<button type="submit" class="search-btn">搜索</button>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<!-- 分类 -->
|
||||
{{if .Categories}}
|
||||
<div class="sidebar-widget">
|
||||
<h3 class="widget-title">📂 分类</h3>
|
||||
<ul class="category-list">
|
||||
{{range .Categories}}
|
||||
<li class="category-item">
|
||||
<a href="/?category={{.ID}}" class="category-link">
|
||||
<span>{{.Name}}</span>
|
||||
<span class="category-count">{{.PostCount}}</span>
|
||||
</a>
|
||||
</li>
|
||||
{{end}}
|
||||
</ul>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<!-- 标签云 -->
|
||||
{{if .Tags}}
|
||||
<div class="sidebar-widget">
|
||||
<h3 class="widget-title">🏷️ 标签云</h3>
|
||||
<div class="tag-cloud">
|
||||
{{range .Tags}}
|
||||
<a href="/?tag={{.ID}}" class="tag-item" title="{{.Name}} ({{.PostCount}}篇文章)">
|
||||
{{.Name}}
|
||||
</a>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<!-- 系统菜单 -->
|
||||
<div class="sidebar-widget">
|
||||
<h3 class="widget-title">⚙️ 系统</h3>
|
||||
<ul class="system-menu">
|
||||
<li class="system-menu-item">
|
||||
<a href="/admin" class="system-menu-link">🔐 进入后台</a>
|
||||
</li>
|
||||
<li class="system-menu-item">
|
||||
<a href="/admin/login" class="system-menu-link">👤 用户登录</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</aside>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{.Title}} - {{.SiteName}}</title>
|
||||
<meta name="description" content="{{.Description}}">
|
||||
<link rel="icon" href="/static/images/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/static/css/minimal.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="wrapper">
|
||||
<header class="header">
|
||||
<div class="container">
|
||||
<h1 class="site-title">
|
||||
<a href="/">{{.SiteName}}</a>
|
||||
</h1>
|
||||
<p class="site-desc">{{.SiteDesc}}</p>
|
||||
<nav class="main-nav">
|
||||
<a href="/">首页</a>
|
||||
{{range .Pages}}
|
||||
<a href="/page/{{.Slug}}">{{.Title}}</a>
|
||||
{{end}}
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="main container">
|
||||
{{template "content" .}}
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p>© {{.Year}} {{.SiteName}}. Powered by GoBlog.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,42 @@
|
||||
{{define "content"}}
|
||||
<div class="post-list">
|
||||
{{range .Posts}}
|
||||
<article class="post-item">
|
||||
<h2 class="post-title">
|
||||
<a href="/post/{{.Slug}}">{{.Title}}</a>
|
||||
{{if .IsTop}}<span class="top-badge">置顶</span>{{end}}
|
||||
</h2>
|
||||
<div class="post-meta">
|
||||
<span class="post-date">{{if .PublishedAt}}{{.PublishedAt.Format "2006-01-02"}}{{else}}未发布{{end}}</span>
|
||||
<span class="post-category">
|
||||
{{if .Category}}<a href="/?category={{.CategoryID}}">{{.Category.Name}}</a>{{else}}未分类{{end}}
|
||||
</span>
|
||||
{{if .Tags}}
|
||||
<span class="post-tags">
|
||||
{{range .Tags}}
|
||||
<a href="/?tag={{.ID}}" class="tag">{{.Name}}</a>
|
||||
{{end}}
|
||||
</span>
|
||||
{{end}}
|
||||
<span class="post-views">{{.Views}} 阅读</span>
|
||||
</div>
|
||||
<p class="post-summary">{{.Summary}}</p>
|
||||
<a href="/post/{{.Slug}}" class="read-more">阅读全文 →</a>
|
||||
</article>
|
||||
{{else}}
|
||||
<div class="empty">暂无文章</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
{{if gt .TotalPages 1}}
|
||||
<div class="pagination">
|
||||
{{if gt .CurrentPage 1}}
|
||||
<a href="/?page={{sub .CurrentPage 1}}" class="prev">← 上一页</a>
|
||||
{{end}}
|
||||
<span class="page-info">{{.CurrentPage}} / {{.TotalPages}}</span>
|
||||
{{if lt .CurrentPage .TotalPages}}
|
||||
<a href="/?page={{add .CurrentPage 1}}" class="next">下一页 →</a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{define "content"}}
|
||||
<article class="page-detail">
|
||||
<header class="page-header">
|
||||
<h1 class="page-title">{{.Page.Title}}</h1>
|
||||
</header>
|
||||
|
||||
<div class="page-body">
|
||||
{{.Page.Content | html}}
|
||||
</div>
|
||||
</article>
|
||||
{{end}}
|
||||
@@ -0,0 +1,110 @@
|
||||
{{define "content"}}
|
||||
<article class="post-detail">
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">{{.Post.Title}}</h1>
|
||||
<div class="post-meta">
|
||||
<span class="post-date">{{.Post.PublishedAt.Format "2006-01-02 15:04"}}</span>
|
||||
<span class="post-author">{{.Post.Author.Nickname}}</span>
|
||||
<span class="post-category">
|
||||
<a href="/?category={{.Post.CategoryID}}">{{.Post.Category.Name}}</a>
|
||||
</span>
|
||||
{{if .Post.Tags}}
|
||||
<span class="post-tags">
|
||||
{{range .Post.Tags}}
|
||||
<a href="/?tag={{.ID}}" class="tag">{{.Name}}</a>
|
||||
{{end}}
|
||||
</span>
|
||||
{{end}}
|
||||
<span class="post-views">{{.Post.Views}} 阅读</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="post-body">
|
||||
{{.Post.Content | html}}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<nav class="post-navigation">
|
||||
<div class="nav-prev">
|
||||
{{if .PrevPost}}
|
||||
<a href="/post/{{.PrevPost.Slug}}" class="nav-link">
|
||||
<span class="nav-label">← 上一篇</span>
|
||||
<span class="nav-title">{{.PrevPost.Title}}</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<span class="nav-link disabled">
|
||||
<span class="nav-label">← 上一篇</span>
|
||||
<span class="nav-title">没有了</span>
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="nav-next">
|
||||
{{if .NextPost}}
|
||||
<a href="/post/{{.NextPost.Slug}}" class="nav-link">
|
||||
<span class="nav-label">下一篇 →</span>
|
||||
<span class="nav-title">{{.NextPost.Title}}</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<span class="nav-link disabled">
|
||||
<span class="nav-label">下一篇 →</span>
|
||||
<span class="nav-title">没有了</span>
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section class="comments-section">
|
||||
<h3>评论 ({{.CommentCount}})</h3>
|
||||
|
||||
<form class="comment-form" action="/comment" method="POST">
|
||||
<input type="hidden" name="post_id" value="{{.Post.ID}}">
|
||||
<div class="form-group">
|
||||
<input type="text" name="author" placeholder="昵称" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="email" name="email" placeholder="邮箱" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="url" name="website" placeholder="网站(可选)">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea name="content" placeholder="写下你的评论..." required></textarea>
|
||||
</div>
|
||||
<button type="submit">发表评论</button>
|
||||
</form>
|
||||
|
||||
<div class="comments-list">
|
||||
{{range .Comments}}
|
||||
<div class="comment-item" id="comment-{{.ID}}">
|
||||
<div class="comment-header">
|
||||
<span class="comment-author">
|
||||
{{if .Website}}
|
||||
<a href="{{.Website}}" target="_blank">{{.Author}}</a>
|
||||
{{else}}
|
||||
{{.Author}}
|
||||
{{end}}
|
||||
</span>
|
||||
<span class="comment-date">{{.CreatedAt.Format "2006-01-02 15:04"}}</span>
|
||||
</div>
|
||||
<div class="comment-content">{{.Content}}</div>
|
||||
|
||||
{{if .Children}}
|
||||
<div class="comment-children">
|
||||
{{range .Children}}
|
||||
<div class="comment-item child" id="comment-{{.ID}}">
|
||||
<div class="comment-header">
|
||||
<span class="comment-author">{{.Author}}</span>
|
||||
<span class="comment-date">{{.CreatedAt.Format "2006-01-02 15:04"}}</span>
|
||||
</div>
|
||||
<div class="comment-content">{{.Content}}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else}}
|
||||
<p class="no-comments">暂无评论,来发表第一条评论吧!</p>
|
||||
{{end}}
|
||||
</div>
|
||||
</section>
|
||||
{{end}}
|
||||
@@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>{{.Title}} - {{.SiteName}}</title>
|
||||
<meta name="description" content="{{.Description}}">
|
||||
<link rel="icon" href="/static/images/favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="/static/css/style.css">
|
||||
</head>
|
||||
<body>
|
||||
<header class="header">
|
||||
<div class="container">
|
||||
<h1 class="site-title">
|
||||
<a href="/">{{.SiteName}}</a>
|
||||
</h1>
|
||||
<p class="site-desc">{{.SiteDesc}}</p>
|
||||
<nav class="main-nav">
|
||||
<a href="/">首页</a>
|
||||
{{range .Pages}}
|
||||
<a href="/page/{{.Slug}}">{{.Title}}</a>
|
||||
{{end}}
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main class="main container">
|
||||
{{template "content" .}}
|
||||
</main>
|
||||
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<p>© {{.Year}} {{.SiteName}}. Powered by GoBlog.</p>
|
||||
</div>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,51 @@
|
||||
{{define "content"}}
|
||||
<div class="post-list">
|
||||
{{range .Posts}}
|
||||
<article class="post-item">
|
||||
{{if .Cover}}
|
||||
<div class="post-cover">
|
||||
<a href="/post/{{.Slug}}">
|
||||
<img src="{{.Cover}}" alt="{{.Title}}">
|
||||
</a>
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="post-content">
|
||||
<h2 class="post-title">
|
||||
<a href="/post/{{.Slug}}">{{.Title}}</a>
|
||||
{{if .IsTop}}<span class="top-badge">置顶</span>{{end}}
|
||||
</h2>
|
||||
<div class="post-meta">
|
||||
<span class="post-date">{{if .PublishedAt}}{{.PublishedAt.Format "2006-01-02"}}{{else}}未发布{{end}}</span>
|
||||
<span class="post-category">
|
||||
{{if .Category}}<a href="/?category={{.CategoryID}}">{{.Category.Name}}</a>{{else}}未分类{{end}}
|
||||
</span>
|
||||
{{if .Tags}}
|
||||
<span class="post-tags">
|
||||
{{range .Tags}}
|
||||
<a href="/?tag={{.ID}}" class="tag">{{.Name}}</a>
|
||||
{{end}}
|
||||
</span>
|
||||
{{end}}
|
||||
<span class="post-views">{{.Views}} 阅读111</span>
|
||||
</div>
|
||||
<p class="post-summary">{{.Summary}}</p>
|
||||
<a href="/post/{{.Slug}}" class="read-more">阅读全文 →</a>
|
||||
</div>
|
||||
</article>
|
||||
{{else}}
|
||||
<div class="empty">暂无文章</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
{{if gt .TotalPages 1}}
|
||||
<div class="pagination">
|
||||
{{if gt .CurrentPage 1}}
|
||||
<a href="/?page={{sub .CurrentPage 1}}" class="prev">← 上一页</a>
|
||||
{{end}}
|
||||
<span class="page-info">{{.CurrentPage}} / {{.TotalPages}}</span>
|
||||
{{if lt .CurrentPage .TotalPages}}
|
||||
<a href="/?page={{add .CurrentPage 1}}" class="next">下一页 →</a>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
@@ -0,0 +1,11 @@
|
||||
{{define "content"}}
|
||||
<article class="page-detail">
|
||||
<header class="page-header">
|
||||
<h1 class="page-title">{{.Page.Title}}</h1>
|
||||
</header>
|
||||
|
||||
<div class="page-body">
|
||||
{{.Page.Content | html}}
|
||||
</div>
|
||||
</article>
|
||||
{{end}}
|
||||
@@ -0,0 +1,116 @@
|
||||
{{define "content"}}
|
||||
<article class="post-detail">
|
||||
<header class="post-header">
|
||||
<h1 class="post-title">{{.Post.Title}}</h1>
|
||||
<div class="post-meta">
|
||||
<span class="post-date">{{.Post.PublishedAt.Format "2006-01-02 15:04"}}</span>
|
||||
<span class="post-author">{{.Post.Author.Nickname}}</span>
|
||||
<span class="post-category">
|
||||
<a href="/?category={{.Post.CategoryID}}">{{.Post.Category.Name}}</a>
|
||||
</span>
|
||||
{{if .Post.Tags}}
|
||||
<span class="post-tags">
|
||||
{{range .Post.Tags}}
|
||||
<a href="/?tag={{.ID}}" class="tag">{{.Name}}</a>
|
||||
{{end}}
|
||||
</span>
|
||||
{{end}}
|
||||
<span class="post-views">{{.Post.Views}} 阅读913</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
{{if .Post.Cover}}
|
||||
<div class="post-cover">
|
||||
<img src="{{.Post.Cover}}" alt="{{.Post.Title}}">
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
<div class="post-body">
|
||||
{{.Post.Content | html}}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<nav class="post-navigation">
|
||||
<div class="nav-prev">
|
||||
{{if .PrevPost}}
|
||||
<a href="/post/{{.PrevPost.Slug}}" class="nav-link">
|
||||
<span class="nav-label">← 上一篇</span>
|
||||
<span class="nav-title">{{.PrevPost.Title}}</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<span class="nav-link disabled">
|
||||
<span class="nav-label">← 上一篇</span>
|
||||
<span class="nav-title">没有了</span>
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="nav-next">
|
||||
{{if .NextPost}}
|
||||
<a href="/post/{{.NextPost.Slug}}" class="nav-link">
|
||||
<span class="nav-label">下一篇 →</span>
|
||||
<span class="nav-title">{{.NextPost.Title}}</span>
|
||||
</a>
|
||||
{{else}}
|
||||
<span class="nav-link disabled">
|
||||
<span class="nav-label">下一篇 →</span>
|
||||
<span class="nav-title">没有了</span>
|
||||
</span>
|
||||
{{end}}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<section class="comments-section">
|
||||
<h3>评论 ({{.CommentCount}})</h3>
|
||||
|
||||
<form class="comment-form" action="/comment" method="POST">
|
||||
<input type="hidden" name="post_id" value="{{.Post.ID}}">
|
||||
<div class="form-group">
|
||||
<input type="text" name="author" placeholder="昵称" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="email" name="email" placeholder="邮箱" required>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="url" name="website" placeholder="网站(可选)">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<textarea name="content" placeholder="写下你的评论..." required></textarea>
|
||||
</div>
|
||||
<button type="submit">发表评论</button>
|
||||
</form>
|
||||
|
||||
<div class="comments-list">
|
||||
{{range .Comments}}
|
||||
<div class="comment-item" id="comment-{{.ID}}">
|
||||
<div class="comment-header">
|
||||
<span class="comment-author">
|
||||
{{if .Website}}
|
||||
<a href="{{.Website}}" target="_blank">{{.Author}}</a>
|
||||
{{else}}
|
||||
{{.Author}}
|
||||
{{end}}
|
||||
</span>
|
||||
<span class="comment-date">{{.CreatedAt.Format "2006-01-02 15:04"}}</span>
|
||||
</div>
|
||||
<div class="comment-content">{{.Content}}</div>
|
||||
|
||||
{{if .Children}}
|
||||
<div class="comment-children">
|
||||
{{range .Children}}
|
||||
<div class="comment-item child" id="comment-{{.ID}}">
|
||||
<div class="comment-header">
|
||||
<span class="comment-author">{{.Author}}</span>
|
||||
<span class="comment-date">{{.CreatedAt.Format "2006-01-02 15:04"}}</span>
|
||||
</div>
|
||||
<div class="comment-content">{{.Content}}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
{{else}}
|
||||
<p class="no-comments">暂无评论,来发表第一条评论吧!</p>
|
||||
{{end}}
|
||||
</div>
|
||||
</section>
|
||||
{{end}}
|
||||
Reference in New Issue
Block a user