如何在Pelican中创建万能分类及生成文章标题列表页?
问题1:如何在Pelican中创建一个万能分类?
万能分类指包含所有文章的分类页面,可通过以下步骤实现:
- 在主题模板目录下新建
all_posts.html模板文件,内容如下:
{% extends "base.html" %} {% block title %}所有文章{% endblock %} {% block content %} <h1>所有文章</h1> <ul> {% for article in articles %} <li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a> - {{ article.date.strftime('%Y-%m-%d') }}</li> {% endfor %} </ul> {% endblock %}
- 在
content/pages目录下新建all-posts.md页面文件:
Title: 所有文章 Template: all_posts
- 确保
pelicanconf.py中PAGE_PATHS包含pages目录(默认已配置),生成站点后即可通过对应URL访问这个包含所有文章的“万能分类”页面。
问题2:制作仅列出所有文章标题的分组页面
要实现类似WP Sitemap插件的HTML格式文章标题列表(支持按时间/分类分组、无摘要),操作如下:
- 在主题模板目录下新建
post_sitemap.html模板文件:
{% extends "base.html" %} {% block title %}文章站点地图{% endblock %} {% block content %} <h1>文章站点地图</h1> <h2>按时间分组(倒序)</h2> {% for year, year_articles in articles|groupby('date.year')|reverse %} <h3>{{ year }}</h3> <ul> {% for month, month_articles in year_articles|groupby('date.month')|reverse %} {% set month_name = month_articles[0].date.strftime('%B') %} <h4>{{ month_name }}</h4> {% for article in month_articles %} <li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li> {% endfor %} {% endfor %} </ul> {% endfor %} <h2>按分类分组</h2> {% for category, category_articles in categories %} <h3><a href="{{ SITEURL }}/{{ category.url }}">{{ category.name }}</a></h3> <ul> {% for article in category_articles %} <li><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></li> {% endfor %} </ul> {% endfor %} {% endblock %}
- 在
content/pages目录下新建post-sitemap.md页面文件:
Title: 文章站点地图 Template: post_sitemap
- 若要将该页面添加到导航栏,可在
pelicanconf.py中配置MENUITEMS:
MENUITEMS = [ ('首页', '/'), ('文章站点地图', '/post-sitemap.html'), # 其他导航项... ]
内容的提问来源于stack exchange,提问作者filo
相关产品推荐
相关产品推荐

