我如何在 Pelican 的文章中使用 macros/variables/scripts?
How can I use macros/variables/scripts in articles with Pelican?
我刚开始使用 Pelican。太棒了,我只是不知道如何在我的文章(和页面)中使用宏。我知道我在制作自己的主题时可以使用Jinja,但我似乎无法在文章中使用它。我希望能够定义一个 macro/function/template/whatever 直接放在文章的降价中,可能带有参数,并且在生成页面时它会被扩展。例如,生成具有给定大小和 css class 标题的图像的函数也将是 link 直接指向图像。我希望能够从所有文章中访问这些宏,以便能够在任何地方重用它们。我通常会用 PhP.
做的事情
我可能会使用 JS 来执行此操作,但如果我想避免它并尽可能使所有内容保持静态。这能做到吗?
更新:
我找到了一个解决这个问题的 pelican 插件 - jinja2content。
旧解决方案:
我找到了解决方案 here。您可以在 Python 中实现一个过滤器来处理 articles/pages 中的所有文本,如下所示:
创建一个 python 文件 filters.py,在其中编写过滤器函数 process_text
以扩展我的宏(或者通常使用 article/page 文本),例如要测试函数,请编写如下内容:
def process_text(input_text):
return "TEST " + input_text
在 Pelican 配置文件 (pelicanconfig.py) 中将此函数注册为可能与 Jinja 一起使用的过滤器:
import sys
sys.path.append('.')
import filters
JINJA_FILTERS = {'process_text':filters.process_text}
- 现在您必须编辑模板以将此过滤器应用于 article/page 文本,然后再将它们添加到输出。就我而言,我编辑了两个文件:themes/themename/templates/article.html 和 themes/themename/templates/post.html 并将
{{ article.content }}
更改为 {{ article.content|process_text }}
和 {{ page.content }}
到 {{ page.content|process_text }}
以应用过滤器。
现在文章和页面中的所有文本都应以 "TEST" 为前缀。
不太方便的是我必须编写自己的宏扩展器,在 Python 中用正则表达式应该不会太难,但是如果有更好的方法来做到这一点,欢迎在此处 post。
我刚开始使用 Pelican。太棒了,我只是不知道如何在我的文章(和页面)中使用宏。我知道我在制作自己的主题时可以使用Jinja,但我似乎无法在文章中使用它。我希望能够定义一个 macro/function/template/whatever 直接放在文章的降价中,可能带有参数,并且在生成页面时它会被扩展。例如,生成具有给定大小和 css class 标题的图像的函数也将是 link 直接指向图像。我希望能够从所有文章中访问这些宏,以便能够在任何地方重用它们。我通常会用 PhP.
做的事情我可能会使用 JS 来执行此操作,但如果我想避免它并尽可能使所有内容保持静态。这能做到吗?
更新:
我找到了一个解决这个问题的 pelican 插件 - jinja2content。
旧解决方案:
我找到了解决方案 here。您可以在 Python 中实现一个过滤器来处理 articles/pages 中的所有文本,如下所示:
创建一个 python 文件 filters.py,在其中编写过滤器函数
process_text
以扩展我的宏(或者通常使用 article/page 文本),例如要测试函数,请编写如下内容:def process_text(input_text): return "TEST " + input_text
在 Pelican 配置文件 (pelicanconfig.py) 中将此函数注册为可能与 Jinja 一起使用的过滤器:
import sys sys.path.append('.') import filters JINJA_FILTERS = {'process_text':filters.process_text}
- 现在您必须编辑模板以将此过滤器应用于 article/page 文本,然后再将它们添加到输出。就我而言,我编辑了两个文件:themes/themename/templates/article.html 和 themes/themename/templates/post.html 并将
{{ article.content }}
更改为{{ article.content|process_text }}
和{{ page.content }}
到{{ page.content|process_text }}
以应用过滤器。
现在文章和页面中的所有文本都应以 "TEST" 为前缀。
不太方便的是我必须编写自己的宏扩展器,在 Python 中用正则表达式应该不会太难,但是如果有更好的方法来做到这一点,欢迎在此处 post。