使用 Pelican,如何在 Python 代码和主题之间设置或访问变量?
With Pelican, how to set or access variables between Python code and themes?
我需要将原始源文件名(*.md 文件)传递到sidebar.html。我怎样才能做到这一点?
从这个网站(http://pelican.readthedocs.org/en/3.6.3/themes.html),我了解到一些变量是可用的,pelicanconf.py
文件中的所有大写字母变量也是可用的,但我不知道如何获取信息如主题文件中的原始源文件。
我认为可能有更简单的方法,但使用 jinja 过滤器对我来说效果很好 (http://linkpeek.com/blog/how-to-add-a-custom-jinja-filter-to-pelican.html)
要采取的步骤:
预设置
我将原始标记文件的名称设为 YEAR-MONTH-DAY-NAME 格式,以便从页面的 url 中恢复。
创建过滤器
过滤器被赋予url,并且从url,我可以恢复原始源md文件路径。
def tosource(url):
# example input
# posts/2014/01/26/python-unittest-structure/index.html
# posts/2014/01/26/ocaml-vs-java/index.html
# posts/2014/01/25/why-ocaml-comparison-with-python/index.html
if url.startswith("posts"):
(posts, year, month, day, name) = url.split('/')[:-1]
res = "%s/%s/%s-%s-%s-%s.md" % (year, month, year, month, day, name)
else:
res = "/" # implement later
return res
更新pelicanconf.py
教鹈鹕过滤器的名称和位置。
import sys
sys.path.append('.')
import sourcename
JINJA_FILTERS = {'sourcename':sourcename.tosource}
OPENCONTENT = "open:///pelican/knowledge_blog/content"
正如http://docs.getpelican.com/en/3.5.0/themes.html#theming-pelican中所写,conf文件中的所有大写字母变量都可以在主题文件中访问。
更新sidebar.html
我在sidebar.html中添加了一行代码以使用 Jinja 过滤器获取原始 md 文件路径。
Click to <a href="{{ OPENCONTENT }}/{{ output_file|sourcename }}">Edit</a>
生成 html
运行 make html
并测试。
我需要将原始源文件名(*.md 文件)传递到sidebar.html。我怎样才能做到这一点?
从这个网站(http://pelican.readthedocs.org/en/3.6.3/themes.html),我了解到一些变量是可用的,pelicanconf.py
文件中的所有大写字母变量也是可用的,但我不知道如何获取信息如主题文件中的原始源文件。
我认为可能有更简单的方法,但使用 jinja 过滤器对我来说效果很好 (http://linkpeek.com/blog/how-to-add-a-custom-jinja-filter-to-pelican.html)
要采取的步骤:
预设置
我将原始标记文件的名称设为 YEAR-MONTH-DAY-NAME 格式,以便从页面的 url 中恢复。
创建过滤器
过滤器被赋予url,并且从url,我可以恢复原始源md文件路径。
def tosource(url):
# example input
# posts/2014/01/26/python-unittest-structure/index.html
# posts/2014/01/26/ocaml-vs-java/index.html
# posts/2014/01/25/why-ocaml-comparison-with-python/index.html
if url.startswith("posts"):
(posts, year, month, day, name) = url.split('/')[:-1]
res = "%s/%s/%s-%s-%s-%s.md" % (year, month, year, month, day, name)
else:
res = "/" # implement later
return res
更新pelicanconf.py
教鹈鹕过滤器的名称和位置。
import sys
sys.path.append('.')
import sourcename
JINJA_FILTERS = {'sourcename':sourcename.tosource}
OPENCONTENT = "open:///pelican/knowledge_blog/content"
正如http://docs.getpelican.com/en/3.5.0/themes.html#theming-pelican中所写,conf文件中的所有大写字母变量都可以在主题文件中访问。
更新sidebar.html
我在sidebar.html中添加了一行代码以使用 Jinja 过滤器获取原始 md 文件路径。
Click to <a href="{{ OPENCONTENT }}/{{ output_file|sourcename }}">Edit</a>
生成 html
运行 make html
并测试。