我无法从文章/页面的文件名自动生成正确的title
例如,我无法从文章Kira-Goddess.md
自动生成metadata key ^{
自动化。如果我能自动写的话,我不想每次都手动为每篇文章和每页写标题
例外-包含单词的文件,其中包含连字符-“众所周知”,“说英语”。在这种情况下,我必须在文章的元数据中明确指定title
。但在我的文章中,带有连字符的单词在文件名中很少见
您可以在Pelican调试库的^{
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>
见^{
运行鹈鹕构建:
pelican content -s pelicanconf.py --fatal warnings --verbose
grep -E "<title>.*</title>" output/Kira-Goddess.html
<title>Kira-Goddess</title>
3.3.2. 渴望的
如果:
<title>{{ article.title }}</title>
将转换为:
<title>Kira Goddess</title>
在我读到的description of ^{(?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("-", "")
它不起作用
Use ^{
<title>{{ article.title|replace('-', " ") }}</title>
5.1.2. 为什么不好
鹈鹕插件(例如Pelican Open Graph)仍将使用article.title
。不需要的数据Kira-Goddess
,而不是Kira Goddess
仍将传递给插件
例如,将文件命名为Kira Goddess.md
,而不是Kira-Goddess.md
看起来
pelican
并没有提供一种实现所需的方法。FILENAME_METADATA
regex只能从文件名中选择一个名称,但不能用空格替换-
因此,我认为当前最好的方法是在每个文件中手动指定
title
标记相关问题 更多 >
编程相关推荐