Merge remote-tracking branch 'origin/ly_branch' into develop

pull/8/head
yyd 4 months ago
commit 12f0f5e4d1

@ -0,0 +1,63 @@
{% extends 'share_layout/base.html' %} {# 继承基础模板,复用基础模板的结构和样式 #}
{% load blog_tags %} {# 加载自定义的blog_tags模板标签库以便使用其中的模板标签 #}
{% load cache %} {# 加载缓存模板标签库,用于缓存部分页面内容 #}
{% load i18n %} {# 加载国际化模板标签库,支持多语言翻译 #}
{% block header %} {# 定义页面头部的block用于填充页面头部相关内容 #}
<title>{% trans 'article archive' %} | {{ SITE_DESCRIPTION }}</title>
{# 设置页面标题,使用国际化翻译显示“文章归档”,并拼接站点描述 #}
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
<meta name="keywords" content="{{ SITE_KEYWORDS }}"/> {# 设置页面描述元数据 #}
<meta property="og:type" content="blog"/>
<meta property="og:title" content="{{ SITE_NAME }}"/>
<meta property="og:description" content="{{ SITE_DESCRIPTION }}"/>
<meta property="og:url" content="{{ SITE_BASE_URL }}"/>
<meta property="og:site_name" content="{{ SITE_NAME }}"/>
{% endblock %}
{% block content %} {# 定义页面主要内容的block #}
<div id="primary" class="site-content"> {# 主要内容的外层容器设置id和class用于样式控制 #}
<div id="content" role="main"> {# 主要内容区域role属性表明其主要内容的角色 #}
<header class="archive-header"> {# 文章归档部分的头部容器 #}
<p class="archive-title">{% trans 'article archive' %}</p> {# 显示“文章归档”的标题 #}
</header><!-- .archive-header -->
<div class="entry-content"> {# 文章归档的内容区域 #}
{% regroup article_list by pub_time.year as year_post_group %} {# 将文章列表按发布时间的年份分组结果保存到year_post_group #}
<ul>
{% for year in year_post_group %}
{# 遍历按年份分组的结果 #}
<li>{{ year.grouper }} {% trans 'year' %} {# 显示年份 #}
{% regroup year.list by pub_time.month as month_post_group %}
<ul>
{% for month in month_post_group %} {# 遍历按月份分组的结果 #}
<li>{{ month.grouper }} {% trans 'month' %}
{# 显示月份,以及“月”的国际化翻译 #}
<ul>
{% for article in month.list %}
<li><a href="{{ article.get_absolute_url }}">{{ article.title }}</a>
</li> {# 显示文章标题,并设置链接到文章详情页 #}
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
</div>
</div><!-- #content -->
</div><!-- #primary -->
{% endblock %}
{% block sidebar %}
{% load_sidebar user 'i' %}
{% endblock %}

@ -0,0 +1,66 @@
{# 继承基础模板,复用基础模板(如导航栏、页脚、通用样式等)的结构和公共内容 #}
{% extends 'share_layout/base.html' %}
{# 加载自定义的blog_tags模板标签库用于使用库中定义的自定义模板标签 #}
{% load blog_tags %}
{% block header %}
{% endblock %}
{# 定义页面主要内容blockcontent承载当前页面的核心展示内容 #}
{% block content %}
{# 主要内容外层容器通过id和class控制样式确保与站点整体布局风格统一 #}
<div id="primary" class="site-content">
{# 核心内容区域role="main"是ARIA属性用于辅助设备识别这是页面主要内容区 #}
<div id="content" role="main">
{# 调用blog_tags库中的load_article_detail自定义标签渲染文章详情内容 #}
{% load_article_detail article False user %}
{# 条件判断:如果当前文章的类型为'a',则显示文章导航栏 #}
{% if article.type == 'a' %}
{# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #}
<nav class="nav-single">
<h3 class="assistive-text">文章导航</h3>
{% if next_article %}
<span class="nav-previous"><a href="{{ next_article.get_absolute_url }}" rel="prev"><span
class="meta-nav">&larr;</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">&rarr;</span></a></span>
{% endif %}
</nav><!-- .nav-single -->
{% endif %}
</div><!-- #content -->
{# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #}
{% if article.comment_status == "o" and OPEN_SITE_COMMENT %}
{# 引入评论列表模板comments/tags/comment_list.html渲染当前文章已有的评论内容 #}
{% include 'comments/tags/comment_list.html' %}
{# 条件判断如果用户已登录user.is_authenticated则显示“发表评论”的表单模板 #}
{% 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>
{# 登录链接next参数携带当前页面的完整URL确保用户登录后能跳转回当前文章页 #}
{% load oauth_tags %}
{% load_oauth_applications request %}
</div>
{% endif %}
{% endif %}
</div><!-- #primary -->
{% endblock %}
{% block sidebar %}
{% load_sidebar user "p" %}
{% endblock %}

@ -0,0 +1,51 @@
{# 继承基础模板,复用基础模板中的公共结构(如导航栏、页脚)和样式 #}
{% extends 'share_layout/base.html' %}
{% load blog_tags %}
{% load cache %}
{% block header %}
{% if tag_name %}
<title>{{ page_type }}:{{ tag_name }} | {{ SITE_DESCRIPTION }}</title>
{% comment %}<meta name="description" content="{{ page_type }}:{{ tag_name }}"/>{% endcomment %}
{% else %}
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title>
{% endif %}
{# 页面元数据设置站点SEO描述用于搜索引擎抓取时展示的页面简介 #}
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
<meta name="keywords" content="{{ SITE_KEYWORDS }}"/>
<meta property="og:type" content="blog"/>
<meta property="og:title" content="{{ SITE_NAME }}"/>
<meta property="og:description" content="{{ SITE_DESCRIPTION }}"/>
<meta property="og:url" content="{{ SITE_BASE_URL }}"/>
<meta property="og:site_name" content="{{ SITE_NAME }}"/>
{% endblock %}
{# 定义页面主要内容content的内容块承载文章列表和分页等核心内容 #}
{% block content %}
<div id="primary" class="site-content">
<div id="content" role="main">
{% if page_type and tag_name %}
<header class="archive-header">
<p class="archive-title">{{ page_type }}<span>{{ tag_name }}</span></p>
</header><!-- .archive-header -->
{% endif %}
{# 循环遍历文章列表article_list逐个渲染文章内容 #}
{% for article in article_list %}
{% load_article_detail article True user %}
{% endfor %}
{# 条件判断如果文章列表支持分页is_paginated为True则渲染分页控件 #}
{% if is_paginated %}
{% load_pagination_info page_obj page_type tag_name %}
{% endif %}
</div><!-- #content -->
</div><!-- #primary -->
{% endblock %}
{# 定义页面侧边栏sidebar的内容块承载侧边栏组件 #}
{% block sidebar %}
{# 调用自定义标签load_sidebar渲染侧边栏内容 #}
{% load_sidebar user linktype %}
{% endblock %}

@ -0,0 +1,58 @@
{# 继承基础模板 #}
{% extends 'share_layout/base.html' %}
{# 加载自定义的blog_tags模板标签库用于调用库中定义的自定义模板标签 #}
{% load blog_tags %}
{% load cache %}
{% block header %}
{# 条件判断如果存在tag_name通常用于标记特定页面场景如错误页、标签页则进入场景化标题配置 #}
{% if tag_name %}
{# 嵌套条件根据statuscode状态码判断具体页面类型设置对应的浏览器标签标题 #}
{% if statuscode == '404' %}
<title>404 NotFound</title>
{% elif statuscode == '403' %}
<title>Permission Denied</title>
{% elif statuscode == '500' %}
<title>500 Error</title>
{% else %}
{# 其他未明确的状态码场景,暂留空标题(可根据实际需求补充) #}
<title></title>
{% endif %}
{% comment %}<meta name="description" content="{{ page_type }}:{{ tag_name }}"/>{% endcomment %}
{% else %}
<title>{{ SITE_NAME }} | {{ SITE_DESCRIPTION }}</title>
{% endif %}
{# 页面元数据设置站点SEO专用描述用于搜索引擎抓取时展示的页面简介提升SEO效果 #}
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
<meta name="keywords" content="{{ SITE_KEYWORDS }}"/>
<meta property="og:type" content="blog"/>
<meta property="og:title" content="{{ SITE_NAME }}"/>
<meta property="og:description" content="{{ SITE_DESCRIPTION }}"/>
<meta property="og:url" content="{{ SITE_BASE_URL }}"/>
<meta property="og:site_name" content="{{ SITE_NAME }}"/>
{% endblock %}
{# 定义页面主要内容content承载当前页面的核心展示信息此处以错误提示为主 #}
{% block content %}
{# 主要内容外层容器通过id和class控制样式确保与站点整体布局风格统一 #}
<div id="primary" class="site-content">
<div id="content" role="main">
{# 页面头部容器(通常用于显示页面标题),此处适配错误页/提示页的标题展示 #}
<header class="archive-header">
{# 页面核心标题显示动态传递的message变量如“页面未找到”“权限不足”等错误提示文本 #}
<h1 class="archive-title">{{ message }}</h1>
</header><!-- .archive-header -->
</div><!-- #content -->
</div><!-- #primary -->
{% endblock %}
{# 定义页面侧边栏sidebar承载侧边栏组件 #}
{% block sidebar %}
{# 调用blog_tags库中的load_sidebar自定义标签渲染侧边栏内容 #}
{% load_sidebar user 'i' %}
{% endblock %}

@ -0,0 +1,55 @@
{# 继承基础模板 #}
{% extends 'share_layout/base.html' %}
{% load blog_tags %}
{# 加载自定义的blog_tags模板标签库后续可调用库中定义的自定义标签 #}
{% load cache %}
{% block header %}
<title>友情链接 | {{ SITE_DESCRIPTION }}</title>
<meta name="description" content="{{ SITE_SEO_DESCRIPTION }}"/>
<meta name="keywords" content="{{ SITE_KEYWORDS }}"/>
{# Open GraphOG协议标签指定内容类型为“博客”用于社交平台如微信、微博分享时识别内容类型 #}
<meta property="og:type" content="blog"/>
{# OG标签社交分享时显示的标题使用项目全局配置的站点名称SITE_NAME #}
<meta property="og:title" content="{{ SITE_NAME }}"/>
{# OG标签社交分享时显示的描述使用站点全局描述SITE_DESCRIPTION #}
<meta property="og:description" content="{{ SITE_DESCRIPTION }}"/>
{# OG标签社交分享时关联的页面URL使用项目全局配置的基础域名SITE_BASE_URL #}
<meta property="og:url" content="{{ SITE_BASE_URL }}"/>
{# OG标签社交分享时显示的站点名称与SITE_NAME保持一致 #}
<meta property="og:site_name" content="{{ SITE_NAME }}"/>
{% endblock %}
{# 定义页面主要内容content承载“友情链接列表”的核心展示逻辑 #}
{% block content %}
{# 主要内容外层容器通过idprimary和classsite-content控制样式确保与站点整体布局统一 #}
<div id="primary" class="site-content">
<div id="content" role="main">
<header class="archive-header">
<p class="archive-title">友情链接</p>
</header><!-- .archive-header -->
<div class="entry-content">
<ul>
{# 循环遍历友情链接数据列表object_list为视图传递的查询集包含所有友情链接对象 #}
{% for obj in object_list %}
{# 单个友情链接项li每个项对应一条友情链接 #}
<li>
<a href="{{ obj.link }}">{{ obj.name }}</a>
</li>
{% endfor %} </ul>
</div>
</div><!-- #content -->
</div><!-- #primary -->
{% endblock %}
{# 定义页面侧边栏sidebar内容块加载站点侧边栏组件 #}
{% block sidebar %}
{% load_sidebar user 'i' %}
{% endblock %}
Loading…
Cancel
Save