根据Pelican中的文件名自动生成标题

2024-05-16 00:55:03 发布

您现在位置:Python中文网/ 问答频道 /正文

一,。总结

我无法从文章/页面的文件名自动生成正确的title

例如,我无法从文章Kira-Goddess.md自动生成metadata key ^{}{}

二,。论证

自动化。如果我能自动写的话,我不想每次都手动为每篇文章和每页写标题

例外-包含单词的文件,其中包含连字符-“众所周知”,“说英语”。在这种情况下,我必须在文章的元数据中明确指定title。但在我的文章中,带有连字符的单词在文件名中很少见

三,。MCVE

3.1。数据

您可以在Pelican调试库的^{} branch中看到它

  • pelicanconf.py

    """MCVE."""
    
    AUTHOR = 'Sasha Chernykh'
    SITENAME = 'SashaPelicanDebugging'
    SITEURL = '.'
    
    PATH = 'content'
    
    TIMEZONE = 'Europe/Moscow'
    
    DEFAULT_LANG = 'en'
    
    # [INFO] Use article name when preserve the slug:
    # https://docs.getpelican.com/en/stable/settings.html#url-settings
    SLUGIFY_SOURCE = 'basename'
    
    # [INFO] Preserve case of article filename
    SLUGIFY_PRESERVE_CASE = True
    
    # [INFO] Get title from article filename:
    # https://docs.getpelican.com/en/stable/settings.html#metadata
    # https://github.com/getpelican/pelican/issues/2107
    # https://github.com/getpelican/pelican/commit/2e82a53cdf3f1f9d66557850cc2811479d5bb645
    FILENAME_METADATA = '(?P<title>.*)'
    
  • Kira-Goddess.md

    Date: 2020-09-24 18:57:33
    
    Kira Goddess!
    

另一个鹈鹕文件由pelican-quickstart生成

简化的base.html部分:

<title>{{ article.title }}</title>

3.2。复制步骤

^{}

  1. 运行鹈鹕构建:

    pelican content -s pelicanconf.py --fatal warnings --verbose
    
  2. Finding content of ^{} tag

    grep -E "<title>.*</title>" output/Kira-Goddess.html
    

3.3。行为

3.3.1. 现在的

Travis build

<title>Kira-Goddess</title>
3.3.2. 渴望的

如果:

<title>{{ article.title }}</title>

将转换为:

<title>Kira Goddess</title>

四,。无济于事

在我读到的description of ^{}变量中,Pelican使用了Python group name notation语法(?P<name>…)。我找不到如何在Python中进行替换<class 'str'>print(type(FILENAME_METADATA))<class 'str'>)。我尝试了以下变体:

import re

KIRA_DEFAULT_FILENAME_REGEX = '(?P<title>.*)'
FILENAME_METADATA = re.sub(KIRA_DEFAULT_FILENAME_REGEX, "-", " ")

KIRA_DEFAULT_FILENAME_REGEX = '(?P<title>.*)'
FILENAME_METADATA = KIRA_DEFAULT_FILENAME_REGEX.replace("-", "")

它不起作用

五,。不要提供

5.1。在模板中使用Jinja2过滤器

5.1.1. 建议

Use ^{} filter在模板文件中,如下所示:

<title>{{ article.title|replace('-', " ") }}</title>
5.1.2. 为什么不好

鹈鹕插件(例如Pelican Open Graph)仍将使用article.title。不需要的数据Kira-Goddess,而不是Kira Goddess仍将传递给插件

5.2。在降价中使用空格

5.2.1. 建议

例如,将文件命名为Kira Goddess.md,而不是Kira-Goddess.md

5.2.2. 为什么不好

文件名中的空白是一种糟糕的做法-12345


Tags: 文件httpscomdefaulttitlehtmlarticle文章
1条回答
网友
1楼 · 发布于 2024-05-16 00:55:03

看起来pelican并没有提供一种实现所需的方法。 FILENAME_METADATAregex只能从文件名中选择一个名称,但不能用空格替换-

因此,我认为当前最好的方法是在每个文件中手动指定title标记

相关问题 更多 >