Pelican模板中的流程变量如何?

时间:2015-05-13 09:23:44

标签: jinja2 pelican

我使用例如Markdown语法在鹈鹕文章中定义变量:

Motto: _"Paranoia is a virtue"_  Anonymous, 1984

然后我想在模板(例如article.html)中使用它作为:

 {% if article.motto %}<p>{{ article.motto }}</p>{% endif %}
显然,我在HTML中获得了类似的内容:

 <p>_"Paranoia is a virtue"_  Anonymous, 1984</p>

有没有办法处理变量(f.i.通过Jinja过滤器)以获得Markdown处理后的文本。如果结果应该是:

 <p><i>"Paranoia is a virtue"</i>  Anonymous, 1984</p>

3 个答案:

答案 0 :(得分:2)

对于3.5,没有。 Markdown默认不处理元数据。但是,当前的开发版本包含一个新设置FORMATTED_FIELDS。所以,等待3.6或从github安装dev-version。

当然,您也可以使用HTML而不是降价语法:

Motto: <i>"Paranoia is a virtue"</i>  Anonymous, 1984

答案 1 :(得分:2)

将以下内容添加到var fs = require('fs') var markdown = fs.readFileSync('./readme.md', 'utf8') var MarkdownIt = require('markdown-it') var md = new MarkdownIt() var parsedMd = md.parse(markdown) 文件中,以定义Jinja过滤器,以便通过pelicanconf.py传递变量:

markdown

然后你可以做

from markdown import Markdown markdown = Markdown(extensions=['markdown.extensions.extra']) def md(content, *args): return markdown.convert(content) JINJA_FILTERS = { 'md': md, }

并且您的变量将被正确呈现。

答案 2 :(得分:0)

这可以解决这个问题吗?

node appname.js