通过 "categories" 查看文章时 Pelican 图片链接断开
Pelican image links break when viewing article through "categories"
我确信我遗漏了一些明显的东西。我通过内容文件夹中的文件夹名称定义类别。如果我在查看页面时单击 content
,我会看到文件夹名称(例如 categ1、categ2)加上 'misc',这很好。当我点击 categ1 时,我看到了一篇完整的文章,但图像链接现在都已损坏。
localhost:8000/category/categ1.html
我想看到的只是该类别中可点击的文章列表。或者至少,没有损坏的链接。
(如果我尝试使用标签,我会有类似的行为,但一次只能做一件事...)
.rst
文件中没有类别行。
除了名称、时区等。我在我的配置中使用这些。
更新:图像位于内容的图像文件夹中。我还在 categ1 中放了一个 Images 文件夹的副本,但没有帮助。
THEME = 'nmnlist'
PATH = 'content'
# ARTICLE_PATHS = ['articles'] # have tried this also
STATIC_PATHS = ['images', 'pdfs']
RELATIVE_URLS = True # have tried False also
PLUGINS = ["render_math"]
听起来这可能是图像 URL 是相对的问题。
问题
如果是这种情况,假设您在 content/mypage.md
中有一个生成到 localhost:8000/mypage.html
中的 Markdown 页面,并且它具有对图像的(有效)引用:

渲染成html:
<img src="content/myimage.png" />
并指向 localhost:8000/content/myimage.png
。但是,如果您随后尝试将相同的 Markdown 处理为类别页面的 HTML,它将呈现相同的图像 markdown:

变成一样html:
<img src="content/myimage.png" />
但由于这是在 localhost:8000/categories/mycategory.html
的类别页面上,此相关图像 URL 现在指向 localhost:8000/categories/content/myimage.png
并且图像在类别和标签页面上损坏。
解决方案
解决方案很简单:一个 /
。通过在 Markdown 中使用对图像的绝对引用,在它们前面加上 /
:而不是使用 content/myimage.png
,使用 /content/myimage.png
:

这将始终在 localhost:8000/content/myimage.png
呈现图像,无论它在哪个页面上。
content
文件夹是输入端。应用 pelican pelicanconfig.py
-命令后,输出端会在 output
-文件夹中生成。我认为任何渲染路径都必须在最后适合输出端。我使用了一个 content/images
-文件夹,它被 pelican pelicanconfig.py
-命令完全复制到 output/images
-文件夹。
我不得不修改建议的解决方案。使用我的文件夹结构,当我在 md 文件中设置时它对我有用:

在 ..
中,我们从 post 文件夹到输出文件夹再到图像文件夹。
附录:
我已经详细阐述了一个不同的解决方案 ,适用于 Pelican 3.5 及更高版本。
我确信我遗漏了一些明显的东西。我通过内容文件夹中的文件夹名称定义类别。如果我在查看页面时单击 content
,我会看到文件夹名称(例如 categ1、categ2)加上 'misc',这很好。当我点击 categ1 时,我看到了一篇完整的文章,但图像链接现在都已损坏。
localhost:8000/category/categ1.html
我想看到的只是该类别中可点击的文章列表。或者至少,没有损坏的链接。
(如果我尝试使用标签,我会有类似的行为,但一次只能做一件事...)
.rst
文件中没有类别行。
除了名称、时区等。我在我的配置中使用这些。
更新:图像位于内容的图像文件夹中。我还在 categ1 中放了一个 Images 文件夹的副本,但没有帮助。
THEME = 'nmnlist'
PATH = 'content'
# ARTICLE_PATHS = ['articles'] # have tried this also
STATIC_PATHS = ['images', 'pdfs']
RELATIVE_URLS = True # have tried False also
PLUGINS = ["render_math"]
听起来这可能是图像 URL 是相对的问题。
问题
如果是这种情况,假设您在 content/mypage.md
中有一个生成到 localhost:8000/mypage.html
中的 Markdown 页面,并且它具有对图像的(有效)引用:

渲染成html:
<img src="content/myimage.png" />
并指向 localhost:8000/content/myimage.png
。但是,如果您随后尝试将相同的 Markdown 处理为类别页面的 HTML,它将呈现相同的图像 markdown:

变成一样html:
<img src="content/myimage.png" />
但由于这是在 localhost:8000/categories/mycategory.html
的类别页面上,此相关图像 URL 现在指向 localhost:8000/categories/content/myimage.png
并且图像在类别和标签页面上损坏。
解决方案
解决方案很简单:一个 /
。通过在 Markdown 中使用对图像的绝对引用,在它们前面加上 /
:而不是使用 content/myimage.png
,使用 /content/myimage.png
:

这将始终在 localhost:8000/content/myimage.png
呈现图像,无论它在哪个页面上。
content
文件夹是输入端。应用 pelican pelicanconfig.py
-命令后,输出端会在 output
-文件夹中生成。我认为任何渲染路径都必须在最后适合输出端。我使用了一个 content/images
-文件夹,它被 pelican pelicanconfig.py
-命令完全复制到 output/images
-文件夹。
我不得不修改建议的解决方案。使用我的文件夹结构,当我在 md 文件中设置时它对我有用:

在 ..
中,我们从 post 文件夹到输出文件夹再到图像文件夹。
附录:
我已经详细阐述了一个不同的解决方案