如何让Pelican在不检查页面的情况下包含content/some_dir?
content/some_dir
这个文件夹里有一些子文件夹,这些子文件夹里的内容不应该被扫描成页面或者模板,还有一些 .html 文件和图片需要原样展示。把 some_dir
加入到 STATIC_PATHS
和 PAGE_EXCLUDES
里似乎并不能阻止 pelican 去扫描这些内容,结果还会提醒我说我的页面格式不正确,图片没有 alt
属性等等。
2 个回答
你可以试试 ARTICLE_EXCLUDES
(这是一个目录列表,用来排除在寻找文章时不想要的目录)或者 IGNORE_FILES
(这是一个文件匹配模式的列表,用来指定处理器在处理源文件时要忽略的文件)。
在我的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
这样可以保持整洁和有序。