我刚刚开始使用Pelican。它很棒,我只是无法弄清楚如何在我的文章(和页面)中使用宏。我知道我可以在制作自己的主题时使用Jinja,但我似乎无法在文章中使用它。我希望能够定义一个宏/函数/模板/我在文章的标记中直接放置的内容,可能是参数,并且在生成页面时会扩展它。例如,生成具有给定大小和css类标题的图像的函数,该类也可以是直接链接到图像的链接。我希望能够从所有文章中访问这些宏,以便能够在任何地方重用它们。我通常会用PhP做的事情。
我可能会使用JS来做这件事,但如果我想避免它并尽可能保持一切静态。可以这样做吗?
答案 0 :(得分:0)
<强>更新强>
我找到了一个解决这个问题的鹈鹕插件 - jinja2content。
OLD SOLUTION:
我找到了解决方案here。您可以在Python中实现一个过滤器来处理文章/页面中的所有文本,如下所示:
创建一个python文件filters.py,在其中编写过滤函数process_text
以扩展我的宏(或者通常对文章/页面文本做任何事情),例如测试函数写一些东西像:
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.content }}
更改为{{ article.content|process_text }}
和{{ page.content }}
更改为{{1在它们中应用过滤器。现在文章和页面中的所有文本都应以&#34; TEST&#34;为前缀。
关于这一点不太方便的是我必须编写自己的宏扩展器,在Python中使用正则表达式并不是很难,但是如果有更好的方法可以做到这一点,请随意发布这里。