链接、静态文件和外部网站
链接内部页面
从 Pelican 3.1 开始,在源代码级别而非生成网站级别的站内链接就已经被支持了。这使得从当前页面中链接到另外一个同级别的页面变得更加容易了。(再也不用等待页面生成之后再决定链接的地址了)
为了链接站内的内容(文件在 content
文件夹中),使用下面的语法来生成链接的地址:{filename}path/to/file
。
注意:斜下划线 "/" 是 {filename}
指令规定的文件分割符,在所有操作系统都是如此,即便是 Windows 系统。
举个例子,一个 Pelican 项目可能有如下的结构:
在这个例子中, article1.rst
可能会是这样:
而 article2.rst
是:
链接静态文件
链接非文章和页面的静态内容使用上面所讲的 {filename}
语法。重要的是这些静态文件不会被拷贝到输出的文件夹中,除非静态文件目录包含了他们,并且在 pelicanconf.py
文件中的 STATIC_PATHS
设置中指明了它们。Pelican 默认设置包括了 images
目录,但其他的必须手工添加进来。忘记了这一步会导致错误发生。
举个例子,一个项目的 content 目录可能是下面这种结构:
test.md
有如下内容:
pelicanconf.py
则需要如下设置:
网站生成的时候,将会拷贝 han.jpg
到 output/images/han.jpg
以及 menu.pdf
拷贝到 output/pdfs/menu.pdf
。所以链接会如 test.md
中所写的那样。
在同一个目录中的混合内容
从 Pelican 3.5 开始,静态文件可以和页面文件安全地共享一个目录,而无需担心在生成的网站中暴露 页面的源代码。任何这样的目录必备添加到 STATIC_PATHS
、 PAGE_PATHS
(或者 STATIC_PATHS
、ARTICLE_PATHS
)设置中去。 Pelican 将会自动的识别和解析正常的页面代码,并把剩下的文件拷贝到静态目录中去。
注意: 把静态的文件和页面内容放在同一个目录中去不保证他们将会出现在生成网站的同一个地方。最简单的方式是使用
{attach}
链接语法。相对的,STATIC_SAVE_AS
、PAGE_SAVE_AS
和ARTICLE_SAVE_AS
设置(和其他相关的*_URL
设置)可以被配置为把不同类型的文件放置在一起,正如早些版本的 Pelican 一样。
附加静态文件
从 Pelican 3.5 开始,静态文件可以被 “附着” 到一个页面或者文章。使用的语法是 {attach}path/to/file
。这就像 {filename}
语法一样。不同的是,这个语法也可以迁移静态文到链接的文件输出的位置去。如果静态文件在链接文件位置之下的子目录中,这个关系也将在输出文件夹中保持。否则,它就和链接文件变为同一级。
举个例子,一个项目的 content 目录可能是长这样:
而 pelicanconf.py
文件可能有如下内容:
如果在 testpost.md
中这么写:
那么网站生成后就会产生如下的文件夹结构:
注意到所有的文件都使用了 {attach}
标记在,并输出到了文章输出目录之中或者之下。
如果一个静态文件被多次导入,那么相关的 {attach}
只会在第一次起作用。之后 Pelican 将会把 {attach}
和 {filename}
一样处理,这避免了破坏已经存在了的链接。
当一个文件被链接多次的时候请小心
由于第一个链接的时候,文件处理了它的位置。但是 Pelican 不会定义文件被处理的顺序,对一个文件使用 {attach}
链接多次可能会导致在每次网站构建的过程中,文件的位置发生改变。(这时候会发生取决于操作系统、文件系统、Pelican的版本以及文章从项目中被添加、移除和修改)任何外部网站的链接文件的旧的地址可能会导致失败。 这就是为什么要建议当确保这些文件只在一个页面中被引用且放置在一个目录中再使用 {attach} 满足这些条件的话,文件输出的位置将不会发生改变。为了防止这些错误的发生,考虑使用 {filename}
标签,而不使用 {attach}
标签,并通过 STATIC_SAVE_AS
和 STATIC_URL
使得项目中文件的位置确定下来。文档 save_as
和 url
的覆盖将会在 EXTRA_PATH_METADATA
中设置。
链接到作者、分类、主页和标签
你可以使用 {author}name
、 {category}foobar、
{index}和
{tag}tagname` 来链接作者、分类、主页和标签。
不建议的内部链接语法
为了和早起版本保持兼容性, Pelican 在括号({})之外仍然支持 vertial bars (||
) 语法。举例说明:|filename|an_article.rst
、 |tag|tagname
、 |category|foobar
。语法标记从 ||
改变为 {}
是为了避免和 Markdown 扩展以及 reST 定向之间的冲突。对于老语法的支持迟早会被取消的。
从已有网站导入
从诸如 WordPress 、 Tumblr 、 Dotclear 以及 RSS feeds 导入内容是可能的。只需使用一个简单的脚本。参见 导入
章节。
Last updated