chore: 重写初始提交(清空历史,整理后全量提交)
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
<!-- 右侧栏:热门文章 / 分类 / 标签云 / 最新评论(前台共用 fb-aside 风格) -->
|
||||
<aside class="fb-aside">
|
||||
<div class="fb-widget">
|
||||
<h4>热门文章</h4>
|
||||
<ul class="fb-hot">
|
||||
{volist name="hotArticles" id="a"}
|
||||
<li>
|
||||
<span class="rank">{$i}</span>
|
||||
<a href="{:url('blog/article/detail', ['id' => $a.id])}">{$a.title}</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="fb-widget">
|
||||
<h4>文章分类</h4>
|
||||
<ul class="fb-catlist">
|
||||
{volist name="categories" id="c"}
|
||||
<li><a href="{:url('blog/category/index', ['id' => $c.id])}">{$c.name}<span class="cnt">{$c.card_count|default=0}</span></a></li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="fb-widget">
|
||||
<h4>标签云</h4>
|
||||
<div class="fb-tagcloud">
|
||||
{volist name="tags" id="t"}
|
||||
<a href="{:url('blog/tag/index', ['id' => $t.id])}">{$t.name}</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{notempty name="latestComments"}
|
||||
{if !$latestComments->isEmpty()}
|
||||
<div class="fb-widget">
|
||||
<h4>最新评论</h4>
|
||||
<ul class="fb-cmt">
|
||||
{volist name="latestComments" id="cmt"}
|
||||
<li>
|
||||
<span class="who">{$cmt.user.nickname|default='匿名'}</span>:
|
||||
<span class="txt">{$cmt.content}</span>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
{/notempty}
|
||||
</aside>
|
||||
@@ -0,0 +1,22 @@
|
||||
{extend name="layout" /}
|
||||
{assign name="nav_active" value="about"/}
|
||||
{block name="title"}关于我们 - {$siteConf.site_name|default='博客'}{/block}
|
||||
|
||||
{block name="content"}
|
||||
<div class="fb-layout">
|
||||
<main class="fb-content">
|
||||
<div class="fb-page">
|
||||
<h3>关于我们</h3>
|
||||
<img src="/static/blog/img/portrait.jpg" alt="" style="width:96px;height:96px;border-radius:50%;margin:0 0 16px;border:3px solid var(--theme);">
|
||||
<p class="lead">TP-Blog 是一个基于 ThinkPHP 8 开发的现代化博客系统,致力于提供简洁、高效、安全的博客解决方案。</p>
|
||||
<h3>技术栈</h3>
|
||||
<div class="layui-progress layui-progress-big" lay-showpercent="true" style="margin-bottom:10px;"><em>PHP</em><div class="layui-progress-bar" lay-percent="80%"></div></div>
|
||||
<div class="layui-progress layui-progress-big" lay-showpercent="true" style="margin-bottom:10px;"><em>MySQL</em><div class="layui-progress-bar layui-bg-blue" lay-percent="70%"></div></div>
|
||||
<div class="layui-progress layui-progress-big" lay-showpercent="true"><em>Layui</em><div class="layui-progress-bar layui-bg-orange" lay-percent="90%"></div></div>
|
||||
<h3 style="margin-top:18px;">联系我们</h3>
|
||||
<p>邮箱:admin@example.com<br/>GitHub:https://github.com/yourname/tp-blog</p>
|
||||
</div>
|
||||
</main>
|
||||
{include file="index/_sidebar" /}
|
||||
</div>
|
||||
{/block}
|
||||
@@ -0,0 +1,47 @@
|
||||
{extend name="layout" /}
|
||||
{block name="title"}联系我们 - {$siteConf.site_name|default='博客'}{/block}
|
||||
|
||||
{block name="content"}
|
||||
<div class="fb-layout">
|
||||
<main class="fb-content">
|
||||
<div class="fb-page">
|
||||
<h3>联系我们</h3>
|
||||
<p>邮箱:admin@example.com</p>
|
||||
<p>工作时间:周一至周五 9:00-18:00</p>
|
||||
<form class="layui-form" onsubmit="return false;">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">姓名</label>
|
||||
<div class="layui-input-block"><input type="text" name="name" required lay-verify="required" placeholder="请输入您的姓名" class="layui-input"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">邮箱</label>
|
||||
<div class="layui-input-block"><input type="text" name="email" required lay-verify="required|email" placeholder="请输入您的邮箱" class="layui-input"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label">留言</label>
|
||||
<div class="layui-input-block"><textarea name="message" required lay-verify="required" placeholder="请输入您的留言" class="layui-textarea"></textarea></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<div class="layui-input-block">
|
||||
<button class="fb-btn" lay-submit lay-filter="contactSubmit">提交留言</button>
|
||||
<button type="reset" class="fb-btn ghost">重置</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</main>
|
||||
{include file="index/_sidebar" /}
|
||||
</div>
|
||||
{/block}
|
||||
|
||||
{block name="script"}
|
||||
<script>
|
||||
layui.use(['form', 'layer'], function(){
|
||||
var form = layui.form, layer = layui.layer;
|
||||
form.on('submit(contactSubmit)', function(){
|
||||
layer.msg('感谢您的留言,我们会尽快与您联系!');
|
||||
return false;
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,124 @@
|
||||
{extend name="layout" /}
|
||||
{block name="title"}{$siteConf.site_name|default='博客'} - 首页{/block}
|
||||
|
||||
{block name="content"}
|
||||
<!-- Hero 推荐 -->
|
||||
{notempty name="recommendedArticles"}
|
||||
{if !$recommendedArticles->isEmpty()}
|
||||
<div class="fb-hero">
|
||||
<div class="fb-hero-grid">
|
||||
{volist name="recommendedArticles" id="rec" offset="0" length="1"}
|
||||
<a class="fb-hero-main" href="{:url('blog/article/detail', ['id' => $rec.id])}">
|
||||
<img src="{$rec.cover_image|default='/static/blog/img/pic.jpg'}" alt="{$rec.title}">
|
||||
<div class="fb-hero-cap">
|
||||
<span class="tag">{$rec.category.name|default='推荐'}</span>
|
||||
<h2>{$rec.title}</h2>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
<div class="fb-hero-sub">
|
||||
{volist name="recommendedArticles" id="rec" offset="1" length="2"}
|
||||
<a class="fb-hero-sub-item" href="{:url('blog/article/detail', ['id' => $rec.id])}">
|
||||
<img src="{$rec.cover_image|default='/static/blog/img/code.jpg'}" alt="{$rec.title}">
|
||||
<div class="fb-hero-cap">
|
||||
<h3>{$rec.title}</h3>
|
||||
</div>
|
||||
</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
{/notempty}
|
||||
|
||||
<div class="fb-layout">
|
||||
<!-- 左:文章流 -->
|
||||
<main class="fb-content">
|
||||
<div class="fb-section-title"><h2>最新文章</h2></div>
|
||||
{if $articles->isEmpty()}
|
||||
<div class="fb-empty"><p>站点还没有发布文章,敬请期待。</p></div>
|
||||
{else}
|
||||
<div class="fb-post-list">
|
||||
{volist name="articles" id="article"}
|
||||
<article class="fb-post">
|
||||
<a class="thumb" href="{:url('blog/article/detail', ['id' => $article.id])}">
|
||||
<img src="{$article.cover_image|default='/static/blog/img/book.jpg'}" alt="{$article.title}">
|
||||
</a>
|
||||
<div class="body">
|
||||
<span class="cat">{$article.category.name|default='默认'}</span>
|
||||
<h3><a href="{:url('blog/article/detail', ['id' => $article.id])}">{$article.title}</a></h3>
|
||||
<p class="summary">{$article.summary|default='(暂无描述)'}</p>
|
||||
<div class="meta">
|
||||
<a class="author" href="{:url('blog/article/author', ['id' => $article.uid])}">
|
||||
<img src="{$article.user.avatar|default='/static/blog/img/avatar.jpg'}" alt="">
|
||||
{$article.user.nickname|default='佚名'}
|
||||
</a>
|
||||
<span><i class="layui-icon layui-icon-read"></i> {$article.view_count|default=0}</span>
|
||||
<span><i class="layui-icon layui-icon-praise"></i> {$article.like_count|default=0}</span>
|
||||
<span class="sp">{$article.create_text}</span>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
{/volist}
|
||||
</div>
|
||||
{/if}
|
||||
</main>
|
||||
|
||||
<!-- 右:侧栏 -->
|
||||
<aside class="fb-aside">
|
||||
<div class="fb-widget">
|
||||
<div class="fb-stat">
|
||||
<div><div class="num">{$total_articles|default=0}</div><div class="lbl">文章</div></div>
|
||||
<div><div class="num">{$total_categories|default=0}</div><div class="lbl">分类</div></div>
|
||||
<div><div class="num">{$total_views|default=0}</div><div class="lbl">阅读</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="fb-widget">
|
||||
<h4>热门文章</h4>
|
||||
<ul class="fb-hot">
|
||||
{volist name="hotArticles" id="a"}
|
||||
<li>
|
||||
<span class="rank">{$i}</span>
|
||||
<a href="{:url('blog/article/detail', ['id' => $a.id])}">{$a.title}</a>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="fb-widget">
|
||||
<h4>文章分类</h4>
|
||||
<ul class="fb-catlist">
|
||||
{volist name="categories" id="c"}
|
||||
<li><a href="{:url('blog/category', ['id' => $c.id])}">{$c.name}<span class="cnt">{$c.card_count|default=0}</span></a></li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="fb-widget">
|
||||
<h4>标签云</h4>
|
||||
<div class="fb-tagcloud">
|
||||
{volist name="tags" id="t"}
|
||||
<a href="{:url('blog/tag', ['id' => $t.id])}">{$t.name}</a>
|
||||
{/volist}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{notempty name="latestComments"}
|
||||
{if !$latestComments->isEmpty()}
|
||||
<div class="fb-widget">
|
||||
<h4>最新评论</h4>
|
||||
<ul class="fb-cmt">
|
||||
{volist name="latestComments" id="cmt"}
|
||||
<li>
|
||||
<span class="who">{$cmt.user.nickname|default='匿名'}</span>:
|
||||
<span class="txt">{$cmt.content}</span>
|
||||
</li>
|
||||
{/volist}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
{/notempty}
|
||||
</aside>
|
||||
</div>
|
||||
{/block}
|
||||
@@ -0,0 +1,35 @@
|
||||
{extend name="layout" /}
|
||||
{block name="title"}附近文章{/block}
|
||||
{block name="content"}
|
||||
<div class="main article">
|
||||
<div class="layui-tab layui-tab-brief">
|
||||
<ul class="layui-tab-title"><li class="layui-this">附近文章(半径 {$radius} km)</li></ul>
|
||||
</div>
|
||||
<div id="geo-tip" class="item"><div class="item-content"><h3>正在获取您的位置…</h3></div></div>
|
||||
{if empty($list)}
|
||||
<div class="item"><div class="item-content"><h3>附近暂无文章</h3><p>可在 URL 手动传 ?lat=&lng= 查看</p></div></div>
|
||||
{else}
|
||||
{volist name="list" id="item"}
|
||||
<div class="item">
|
||||
<div class="item-content">
|
||||
<h3><a href="{$item.url}">{$item.title}</a></h3>
|
||||
<p class="meta"><span>{$item.category}</span>{if $item.distance}<span>约 {$item.distance} km</span>{/if}</p>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
{/if}
|
||||
</div>
|
||||
<script>
|
||||
(function(){
|
||||
var tip = document.getElementById('geo-tip');
|
||||
if (navigator.geolocation) {
|
||||
navigator.geolocation.getCurrentPosition(function(p){
|
||||
if (tip) tip.style.display='none';
|
||||
window.location.href = '/blog/nearby?lat='+p.coords.latitude+'&lng='+p.coords.longitude+'&radius=10';
|
||||
}, function(){ if (tip) tip.querySelector('h3').textContent='获取位置失败,可在 URL 手动传 ?lat=&lng='; });
|
||||
} else if (tip) {
|
||||
tip.querySelector('h3').textContent='浏览器不支持定位,请在 URL 手动传 ?lat=&lng=';
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
{/block}
|
||||
@@ -0,0 +1,33 @@
|
||||
{extend name="layout" /}
|
||||
{block name="title"}搜索:{$keyword} - 静谧博客{/block}
|
||||
|
||||
{block name="content"}
|
||||
<div class="main article">
|
||||
<div class="layui-tab layui-tab-brief">
|
||||
<ul class="layui-tab-title"><li class="layui-this">搜索:{$keyword}</li></ul>
|
||||
</div>
|
||||
{if $articles->isEmpty()}
|
||||
<div class="item"><div class="item-content"><h3>没有找到相关文章</h3><p>尝试更换关键词搜索</p></div></div>
|
||||
{else}
|
||||
{volist name="articles" id="article"}
|
||||
<div class="item">
|
||||
{if $article.cover_image}<img src="{$article.cover_image}" alt="{$article.title}">{/if}
|
||||
<div class="item-content">
|
||||
<h3><a href="{:url('blog/article/detail', ['id' => $article.id])}">{$article.title}</a></h3>
|
||||
<span class="Subtitle">{$article.category.name|default='默认'}</span><br/>
|
||||
<p>{$article.summary}</p>
|
||||
<a href="{:url('blog/article/detail', ['id' => $article.id])}"><button class="layui-btn">阅读全文</button></a>
|
||||
</div>
|
||||
<div class="date-box">
|
||||
<div class="date">
|
||||
<h4>{:date('d', strtotime($article.create_text))}</h4>
|
||||
<span>{:date('Y/m', strtotime($article.create_text))}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/volist}
|
||||
<div id="demo1">{$articles|raw}</div>
|
||||
{/if}
|
||||
</div>
|
||||
{include file="index/_sidebar" /}
|
||||
{/block}
|
||||
Reference in New Issue
Block a user