2

在索引中,参考文献按字母顺序列出并按字母分组。此外,不是简单的字母排序,而是在排序之前删除前导文章和标点符号。结果将如下所示:


阿爸阿爸
射手
远离这里

B
“曼谷”迈克
子弹

我正在使用 Pelican 静态站点生成器,它在其模板中使用 Jinja2,并且我想为我在我的站点上写过的电视节目创建一个像这样的索引。

电视节目名称列在元数据字段 {{ article.showname }} 中(每个帖子只有一个节目,因此元数据字段中只有一个节目),因此很容易检索。但是去掉开头的文章/标点符号,按第一个字母分组并插入正确的字母,我不知道该怎么做。

我可以采取的可能步骤

我可以去掉开头的文章/标点符号并创建另一个元数据字段,其中包含准备好排序的节目名称,例如 {{ article.shownamesort }}。就此而言,如果没有简单的方法按名称的第一个字母对名称进行分组,我可以使用节目的第一个(可排序的)字母 {{ article.shownameletter }} 创建一个元数据字段。

对于每封信,我可以创建一个循环,从抓取该信的帖子开始:

{% if article.shownameletter == "A" %}

完成后,我不知道如何根据不同元数据字段的文本对来自一个元数据字段的文本进行排序。也就是说,我不知道如何打印由 {{ article.shownamesort }} 列表排序的 {{ article.showname }} 列表。这可以在 Jinja2 中完成吗?作为记录,如果有一个采用完全不同方法的解决方案,我会非常满意,包括它是否需要不同/更多的元数据字段。

4

1 回答 1

1

我在标签和类别页面上做了类似的事情。它遍历所有字符,然后打印结果

遍历字母:

{% for char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"|list %}
...
{% endfor %}

显示或不显示标签的比较:

{% if char == tag|upper|truncate(1, True, end='') %}
...
{% endif %}

完整示例:

{% for char in "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"|list %}
    <h2>{{char}}</h2>
    {% for tag, articles in tags|sort %}
        {% if char == tag|upper|truncate(1, True, end='') %}
            <dt>{{ tag }}</dt>
            {% for article in articles|sort %}
                <dd><a href="{{ SITEURL }}/{{ article.url }}">{{ article.title }}</a></dd>
            {% endfor %}
        {% endif %}
    {% endfor %}
{% endfor %}
于 2014-02-24T23:17:21.053 回答