You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Pelican将多个独立内容板块合并为一个长静态页面?

如何使用Pelican将多个独立内容板块合并为一个长静态页面?

嘿,我明白你想把三个独立的页面内容合并成一个长静态页的需求,用Pelican完全可以做到!先说说你之前遇到的问题——你用了articles_page变量,但这个变量是给博客文章列表页面用的,而你的landing.md、about.md、contact.md属于Pelican里的Pages(独立页面),不是Articles,所以这个变量自然会报错。下面给你两种实用的解决方案:

方法一:直接在主模板中调用指定Page内容

这种方法简单直接,适合你的固定三个板块的场景:

  1. 确保你的三个md文件被识别为Pelican的Page:

    • 可以把它们放在content/pages目录下(Pelican默认会把这个目录下的文件当作Page);
    • 或者在每个md文件的头部元数据里加上Status: published,确保内容被发布。
  2. 修改你的index.html模板,直接遍历pages变量(这个变量包含所有已发布的Page),按slug匹配并输出内容:

{% extends "base.html" %}

{% block content %}
    <!-- 按顺序输出landing、about、contact的内容 -->
    {% for page in pages %}
        {% if page.slug == 'landing' %}
            <h1 style="color: red">{{ page.title }}</h1>
            {{ page.content }}
        {% elif page.slug == 'about' %}
            <h1 style="color: blue">{{ page.title }}</h1>
            {{ page.content }}
        {% elif page.slug == 'contact' %}
            <h1 style="color: green">{{ page.title }}</h1>
            {{ page.content }}
        {% endif %}
    {% endfor %}
{% endblock %}

如果担心页面顺序混乱,还可以给每个md文件的元数据加一个Order字段来控制顺序:

  • landing.md头部:
    Title: Landing Page
    Order: 1
    
  • about.md头部:
    Title: About Us
    Order: 2
    
  • contact.md头部:
    Title: Contact Us
    Order: 3
    

然后修改模板里的循环,按Order排序:

{% for page in pages|sort(attribute='order') %}
    <!-- 匹配逻辑不变 -->
{% endfor %}

方法二:保留独立模板片段,按需引入

如果你想保留每个板块的独立模板(比如原来的landing.html、about.html),可以把它们改成模板片段,再在主模板里引入:

  1. 把原有的页面模板改成片段文件,比如重命名为_landing.html、_about.html、_contact.html(下划线开头表示是内部片段,不会单独生成页面),内容保留你原来的样式:

    • _landing.html:
      <h1 style="color: red">{{ page.title }}</h1>
      {{ page.content }}
      
  2. 在index.html里通过include标签引入这些片段:

{% extends "base.html" %}

{% block content %}
    {% for page in pages|sort(attribute='order') %}
        {% if page.slug == 'landing' %}
            {% include '_landing.html' %}
        {% elif page.slug == 'about' %}
            {% include '_about.html' %}
        {% elif page.slug == 'contact' %}
            {% include '_contact.html' %}
        {% endif %}
    {% endfor %}
{% endblock %}

这样既能维护每个板块的独立模板,又能把内容整合到同一个长页面里,完全符合你“方便维护内容”的需求。

备注:内容来源于stack exchange,提问作者Malvinka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:38:00