如何让Pelican在不检查页面的情况下包含content/some_dir?

4 投票
2 回答
1578 浏览
提问于 2025-04-17 23:55

content/some_dir 这个文件夹里有一些子文件夹,这些子文件夹里的内容不应该被扫描成页面或者模板,还有一些 .html 文件和图片需要原样展示。把 some_dir 加入到 STATIC_PATHSPAGE_EXCLUDES 里似乎并不能阻止 pelican 去扫描这些内容,结果还会提醒我说我的页面格式不正确,图片没有 alt 属性等等。

2 个回答

2

你可以试试 ARTICLE_EXCLUDES(这是一个目录列表,用来排除在寻找文章时不想要的目录)或者 IGNORE_FILES(这是一个文件匹配模式的列表,用来指定处理器在处理源文件时要忽略的文件)。

来源: http://docs.getpelican.com/en/3.3.0/settings.html

3

在我的Pelican网站上,我有很多已经格式化好的静态HTML文件,我不想去编辑这些文件。(这是一个旧论坛的静态存档,包含了3万多个HTML文件)

你可以使用STATIC_PATHS,配合ARTICLE_EXCLUDES和PAGE_EXCLUDES来实现你想要的效果,但你会发现Pelican还是会去查看每一个文件。这样做让我构建的时间增加了大约10倍。简单来说,使用static_paths来添加你的HTML文件,然后用排除设置告诉Pelican不要处理它们。

后来我尝试了另一种方法,现在我就用这个。在我的顶层目录下,我创建了一个名为'output-skel'的文件夹,然后编辑了我的Makefile。在HTML目标中,我添加了这一行作为执行的命令之一:

        rsync -SHqav output-skel/ $(OUTPUTDIR)

所以我的HTML构建块看起来是这样的:

html:
    $(PELICAN) $(INPUTDIR) -o $(OUTPUTDIR) -s $(CONFFILE) $(PELICANOPTS)
    rsync -SHqav output-skel/ $(OUTPUTDIR)

这样,我可以把任何我想包含在输出中的文件放在output-skel的相对路径下,并且它会出现在我想要的位置。

这比在我的STATIC_PATHS中放30,000个条目要好得多。我把.htaccess文件、静态HTML文件和一些下载文件都放在这里。

顺便说一下,我还在我的HTML构建目标中添加了以下几行:

        chown -R root:www $(OUTPUTDIR)
        find $(OUTPUTDIR) -type d | xargs chmod 750
        find $(OUTPUTDIR) -type f | xargs chmod 640

这样可以保持整洁和有序。

撰写回答