diff --git a/doc/hello.docx b/doc/hello.docx new file mode 100644 index 0000000..e69de29 diff --git a/src/article_archives.html b/src/article_archives.html new file mode 100644 index 0000000..5343a1d --- /dev/null +++ b/src/article_archives.html @@ -0,0 +1,63 @@ +{% extends 'share_layout/base.html' %} {# 继承基础模板,复用基础模板的结构和样式 #} +{% load blog_tags %} {# 加载自定义的blog_tags模板标签库,以便使用其中的模板标签 #} +{% load cache %} {# 加载缓存模板标签库,用于缓存部分页面内容 #} +{% load i18n %} {# 加载国际化模板标签库,支持多语言翻译 #} +{% block header %} {# 定义页面头部的block,用于填充页面头部相关内容 #} + + {% trans 'article archive' %} | {{ SITE_DESCRIPTION }} + {# 设置页面标题,使用国际化翻译显示“文章归档”,并拼接站点描述 #} + + + {# 设置页面描述元数据 #} + + + + + + +{% endblock %} +{% block content %} {# 定义页面主要内容的block #} +
{# 主要内容的外层容器,设置id和class用于样式控制 #} +
{# 主要内容区域,role属性表明其主要内容的角色 #} + +
{# 文章归档部分的头部容器 #} + +

{% trans 'article archive' %}

{# 显示“文章归档”的标题 #} +
+ +
{# 文章归档的内容区域 #} + + {% regroup article_list by pub_time.year as year_post_group %} {# 将文章列表按发布时间的年份分组,结果保存到year_post_group #} +
    + {% for year in year_post_group %} + {# 遍历按年份分组的结果 #} +
  • {{ year.grouper }} {% trans 'year' %} {# 显示年份 #} + {% regroup year.list by pub_time.month as month_post_group %} +
      + {% for month in month_post_group %} {# 遍历按月份分组的结果 #} +
    • {{ month.grouper }} {% trans 'month' %} + {# 显示月份,以及“月”的国际化翻译 #} +
        + {% for article in month.list %} +
      • {{ article.title }} +
      • {# 显示文章标题,并设置链接到文章详情页 #} + {% endfor %} +
      +
    • + {% endfor %} +
    +
  • + {% endfor %} +
+
+
+
+ +{% endblock %} + + +{% block sidebar %} + {% load_sidebar user 'i' %} +{% endblock %} + + diff --git a/src/article_detail.html b/src/article_detail.html new file mode 100644 index 0000000..6def375 --- /dev/null +++ b/src/article_detail.html @@ -0,0 +1,66 @@ +{# 继承基础模板,复用基础模板(如导航栏、页脚、通用样式等)的结构和公共内容 #} +{% extends 'share_layout/base.html' %} +{# 加载自定义的blog_tags模板标签库,用于使用库中定义的自定义模板标签 #} +{% load blog_tags %} + +{% block header %} +{% endblock %} +{# 定义页面主要内容block(content),承载当前页面的核心展示内容 #} +{% block content %} + {# 主要内容外层容器,通过id和class控制样式,确保与站点整体布局风格统一 #} +
+ {# 核心内容区域,role="main"是ARIA属性,用于辅助设备识别这是页面主要内容区 #} +
+ {# 调用blog_tags库中的load_article_detail自定义标签,渲染文章详情内容 #} + {% load_article_detail article False user %} + + {# 条件判断:如果当前文章的类型为'a',则显示文章导航栏 #} + {% if article.type == 'a' %} + {# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #} + + {% endif %} + +
+ + {# 文章导航容器,用于展示上一篇/下一篇文章的跳转链接 #} + {% 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 %} +
+

您还没有登录,请您登录后发表评论。 +

+{# 登录链接,next参数携带当前页面的完整URL,确保用户登录后能跳转回当前文章页 #} + {% load oauth_tags %} + {% load_oauth_applications request %} + +
+ {% endif %} + {% endif %} +
+ +{% endblock %} + +{% block sidebar %} + {% load_sidebar user "p" %} +{% endblock %} \ No newline at end of file diff --git a/src/article_index.html b/src/article_index.html new file mode 100644 index 0000000..0c4aafd --- /dev/null +++ b/src/article_index.html @@ -0,0 +1,51 @@ +{# 继承基础模板,复用基础模板中的公共结构(如导航栏、页脚)和样式 #} +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{% load cache %} +{% block header %} + {% if tag_name %} + {{ page_type }}:{{ tag_name }} | {{ SITE_DESCRIPTION }} + {% comment %}{% endcomment %} + {% else %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + {% endif %} + {# 页面元数据:设置站点SEO描述,用于搜索引擎抓取时展示的页面简介 #} + + + + + + + +{% endblock %} +{# 定义页面主要内容(content)的内容块,承载文章列表和分页等核心内容 #} +{% block content %} +
+
+ {% if page_type and tag_name %} +
+ +

{{ page_type }}:{{ tag_name }}

+
+ {% 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 %} +
+
+ +{% endblock %} + +{# 定义页面侧边栏(sidebar)的内容块,承载侧边栏组件 #} +{% block sidebar %} + {# 调用自定义标签load_sidebar,渲染侧边栏内容 #} + {% load_sidebar user linktype %} +{% endblock %} \ No newline at end of file diff --git a/src/error_page.html b/src/error_page.html new file mode 100644 index 0000000..aad3109 --- /dev/null +++ b/src/error_page.html @@ -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' %} + 404 NotFound + {% elif statuscode == '403' %} + Permission Denied + {% elif statuscode == '500' %} + 500 Error + {% else %} + {# 其他未明确的状态码场景,暂留空标题(可根据实际需求补充) #} + + {% endif %} + {% comment %}{% endcomment %} + {% else %} + {{ SITE_NAME }} | {{ SITE_DESCRIPTION }} + {% endif %} + {# 页面元数据:设置站点SEO专用描述,用于搜索引擎抓取时展示的页面简介,提升SEO效果 #} + + + + + + + +{% endblock %} + +{# 定义页面主要内容(content)块,承载当前页面的核心展示信息(此处以错误提示为主) #} +{% block content %} + {# 主要内容外层容器,通过id和class控制样式,确保与站点整体布局风格统一 #} +
+
+ + {# 页面头部容器(通常用于显示页面标题),此处适配错误页/提示页的标题展示 #} +
+ {# 页面核心标题:显示动态传递的message变量(如“页面未找到”“权限不足”等错误提示文本) #} +

{{ message }}

+
+ +
+
+ +{% endblock %} + +{# 定义页面侧边栏(sidebar)块,承载侧边栏组件 #} +{% block sidebar %} + {# 调用blog_tags库中的load_sidebar自定义标签,渲染侧边栏内容 #} + {% load_sidebar user 'i' %} +{% endblock %} + + diff --git a/src/links_list.html b/src/links_list.html new file mode 100644 index 0000000..9faf290 --- /dev/null +++ b/src/links_list.html @@ -0,0 +1,55 @@ +{# 继承基础模板 #} +{% extends 'share_layout/base.html' %} +{% load blog_tags %} +{# 加载自定义的blog_tags模板标签库,后续可调用库中定义的自定义标签 #} +{% load cache %} +{% block header %} + + 友情链接 | {{ SITE_DESCRIPTION }} + + + + {# Open Graph(OG)协议标签:指定内容类型为“博客”,用于社交平台(如微信、微博)分享时识别内容类型 #} + + {# OG标签:社交分享时显示的标题,使用项目全局配置的站点名称(SITE_NAME) #} + + {# OG标签:社交分享时显示的描述,使用站点全局描述(SITE_DESCRIPTION) #} + + {# OG标签:社交分享时关联的页面URL,使用项目全局配置的基础域名(SITE_BASE_URL) #} + + {# OG标签:社交分享时显示的站点名称,与SITE_NAME保持一致 #} + + +{% endblock %} +{# 定义页面主要内容(content)块,承载“友情链接列表”的核心展示逻辑 #} +{% block content %} + {# 主要内容外层容器,通过id(primary)和class(site-content)控制样式,确保与站点整体布局统一 #} +
+
+ +
+ +

友情链接

+
+ +
+
    + {# 循环遍历友情链接数据列表(object_list为视图传递的查询集,包含所有友情链接对象) #} + {% for obj in object_list %} + {# 单个友情链接项(li),每个项对应一条友情链接 #} +
  • + {{ obj.name }} +
  • + {% endfor %}
+
+
+
+ +{% endblock %} + +{# 定义页面侧边栏(sidebar)内容块,加载站点侧边栏组件 #} +{% block sidebar %} + {% load_sidebar user 'i' %} +{% endblock %} + +