|
|
|
|
@ -1,52 +1,87 @@
|
|
|
|
|
{# gq: #}
|
|
|
|
|
{# 1. 模板继承:复用网站基础布局(包含头部导航、底部信息、全局样式等公共组件)#}
|
|
|
|
|
{% extends 'share_layout/base.html' %}
|
|
|
|
|
|
|
|
|
|
{# 2. 加载自定义博客标签库:提供文章详情渲染、侧边栏加载等专属功能 #}
|
|
|
|
|
{% load blog_tags %}
|
|
|
|
|
|
|
|
|
|
{# 3. 重写header块:此处留空,说明文章详情页的头部元信息(如标题、SEO标签)#}
|
|
|
|
|
{# 可能通过其他方式(如SEO插件)动态生成,或在base.html中统一处理 #}
|
|
|
|
|
{% block header %}
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
|
|
{# 4. 重写content块:定义文章详情页的核心内容(文章主体、导航、评论区)#}
|
|
|
|
|
{% block content %}
|
|
|
|
|
<div id="primary" class="site-content">
|
|
|
|
|
<div id="content" role="main">
|
|
|
|
|
<div id="primary" class="site-content"> {# 主内容区容器,应用网站全局样式 #}
|
|
|
|
|
<div id="content" role="main"> {# 核心内容容器,role属性提升无障碍访问性 #}
|
|
|
|
|
|
|
|
|
|
{# 渲染文章详情:调用自定义标签load_article_detail #}
|
|
|
|
|
{# 参数说明:#}
|
|
|
|
|
{# article:当前文章对象(包含标题、内容、发布时间等信息)#}
|
|
|
|
|
{# False:控制是否显示编辑按钮(此处为False,仅展示不允许编辑)#}
|
|
|
|
|
{# user:当前登录用户对象(用于权限判断,如作者才能编辑)#}
|
|
|
|
|
{% load_article_detail article False user %}
|
|
|
|
|
|
|
|
|
|
{# 文章导航(上一篇/下一篇):仅当文章类型为'a'(普通文章)时显示 #}
|
|
|
|
|
{% if article.type == 'a' %}
|
|
|
|
|
<nav class="nav-single">
|
|
|
|
|
<h3 class="assistive-text">文章导航</h3>
|
|
|
|
|
{% if next_article %}
|
|
|
|
|
<nav class="nav-single"> {# 导航容器,应用单篇文章导航样式 #}
|
|
|
|
|
<h3 class="assistive-text">文章导航</h3> {# 辅助文本,提升无障碍访问性 #}
|
|
|
|
|
|
|
|
|
|
<span class="nav-previous"><a href="{{ next_article.get_absolute_url }}" rel="prev"><span
|
|
|
|
|
class="meta-nav">←</span> {{ next_article.title }}</a></span>
|
|
|
|
|
{# 下一篇文章链接:若存在下一篇(发布时间更早的文章)则显示 #}
|
|
|
|
|
{% if next_article %}
|
|
|
|
|
<span class="nav-previous">
|
|
|
|
|
<a href="{{ next_article.get_absolute_url }}" rel="prev"> {# rel="prev"告知搜索引擎是前序内容 #}
|
|
|
|
|
<span class="meta-nav">←</span> {# 左箭头符号 #}
|
|
|
|
|
{{ next_article.title }} {# 下一篇文章标题 #}
|
|
|
|
|
</a>
|
|
|
|
|
</span>
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
{# 上一篇文章链接:若存在上一篇(发布时间更晚的文章)则显示 #}
|
|
|
|
|
{% if prev_article %}
|
|
|
|
|
<span class="nav-next"><a href="{{ prev_article.get_absolute_url }}"
|
|
|
|
|
rel="next">{{ prev_article.title }} <span
|
|
|
|
|
class="meta-nav">→</span></a></span>
|
|
|
|
|
<span class="nav-next">
|
|
|
|
|
<a href="{{ prev_article.get_absolute_url }}" rel="next"> {# rel="next"告知搜索引擎是后序内容 #}
|
|
|
|
|
{{ prev_article.title }} {# 上一篇文章标题 #}
|
|
|
|
|
<span class="meta-nav">→</span> {# 右箭头符号 #}
|
|
|
|
|
</a>
|
|
|
|
|
</span>
|
|
|
|
|
{% endif %}
|
|
|
|
|
</nav><!-- .nav-single -->
|
|
|
|
|
{% endif %}
|
|
|
|
|
|
|
|
|
|
</div><!-- #content -->
|
|
|
|
|
{% if article.comment_status == "o" and OPEN_SITE_COMMENT %}
|
|
|
|
|
|
|
|
|
|
{# 评论区:仅当文章允许评论(comment_status == "o")且网站全局开启评论(OPEN_SITE_COMMENT为True)时显示 #}
|
|
|
|
|
{% if article.comment_status == "o" and OPEN_SITE_COMMENT %}
|
|
|
|
|
|
|
|
|
|
{# 引入评论列表模板:展示已有评论 #}
|
|
|
|
|
{% include 'comments/tags/comment_list.html' %}
|
|
|
|
|
|
|
|
|
|
{# 评论表单:根据用户登录状态显示不同内容 #}
|
|
|
|
|
{% if user.is_authenticated %}
|
|
|
|
|
{# 已登录用户:显示评论提交表单 #}
|
|
|
|
|
{% include 'comments/tags/post_comment.html' %}
|
|
|
|
|
{% else %}
|
|
|
|
|
{# 未登录用户:提示登录后评论,并提供登录入口 #}
|
|
|
|
|
<div class="comments-area">
|
|
|
|
|
<h3 class="comment-meta">您还没有登录,请您<a
|
|
|
|
|
href="{% url "account:login" %}?next={{ request.get_full_path }}" rel="nofollow">登录</a>后发表评论。
|
|
|
|
|
<h3 class="comment-meta">
|
|
|
|
|
您还没有登录,请您
|
|
|
|
|
{# 登录链接:附带next参数,登录后跳回当前文章页 #}
|
|
|
|
|
<a href="{% url "account:login" %}?next={{ request.get_full_path }}" rel="nofollow">登录</a>
|
|
|
|
|
后发表评论。
|
|
|
|
|
</h3>
|
|
|
|
|
|
|
|
|
|
{% load oauth_tags %}
|
|
|
|
|
{% load_oauth_applications request %}
|
|
|
|
|
|
|
|
|
|
{# 第三方登录入口:加载OAuth登录标签,提供社交账号登录选项 #}
|
|
|
|
|
{% load oauth_tags %} {# 加载自定义OAuth标签库 #}
|
|
|
|
|
{% load_oauth_applications request %} {# 渲染第三方登录按钮(如GitHub、Google)#}
|
|
|
|
|
</div>
|
|
|
|
|
{% endif %}
|
|
|
|
|
{% endif %}
|
|
|
|
|
</div><!-- #primary -->
|
|
|
|
|
|
|
|
|
|
{% endblock %}
|
|
|
|
|
|
|
|
|
|
{# 5. 重写sidebar块:加载文章详情页专属侧边栏 #}
|
|
|
|
|
{% block sidebar %}
|
|
|
|
|
{# 调用自定义标签load_sidebar,参数"p"可能指定侧边栏样式(如包含热门文章、分类等组件)#}
|
|
|
|
|
{% load_sidebar user "p" %}
|
|
|
|
|
{% endblock %}
|