跳转到主要内容

Pelican插件,用于在文章内容中使用Jinja模板代码

项目描述

Jinja2Content插件用于Pelican

Build Status PyPI Version

此插件允许在Pelican文章和页面中使用Jinja2指令。

在此方法中,您的内容首先由Jinja模板引擎进行渲染。然后,结果按常规传递到Pelican的普通读取器。这有两个使用后果。首先,这意味着通常可见于您的文章或页面模板的Pelican上下文和Jinja变量在渲染时间不可用。其次,这意味着如果您的任何输入内容可能被解析为Jinja指令,它们将被如此渲染。这种情况不太可能意外发生,但了解这一点很好。

所有需要Pelican变量(如article、category等)的输入应放在您的主题模板中。因此,此插件的主要用途是自动生成文章或页面的部分。

Markdown、reStructured Text 和 HTML 输入都受到支持。注意,启用此插件后,所有这些文件类型的输入文件都将使用 Jinja 渲染器进行预处理。目前不支持有选择地启用或禁用 jinja2content 仅针对部分输入源。

示例

一种用法是将重复的 HTML 嵌入 Markdown 文章中。由于 Markdown 不允许自定义布局,如果需要比仅显示图像更复杂的操作,则必须在 Markdown 文章中嵌入 HTML(即硬编码 <div> 标签,然后从主题的 CSS 中选择它们)。但是,使用 jinja2content 可以这样做:

文件 my-cool-article.md

# My cool title

My cool content.

{% from 'img_desc.html' import img_desc %}
{{ img_desc("/images/my-cool-image.png",
    "This is a cool tooltip",
    "This is a very cool image.") }}

其中文件 img_desc.html 包含以下内容:

{% macro img_desc(src, title='', desc='') -%}
<div class="img-desc">
  <p><img src="{{ src }}" title="{{ title }}"></p>
  {% if desc %}
  <p><em>{{ desc }}</em></p>
  {% endif %}
</div>
{%- endmacro %}

结果将是:

# My cool title

My cool content.

<div class="img-desc">
  <p><img src="/images/my-cool-image.png" title="This is a cool tooltip"></p>
  <p><em>This is a very cool image.</em></p>
</div>

然后,Markdown 将被渲染成 HTML,然后主题的模板才会被应用。

这样,Markdown 文章可以更多地控制传递给主题的 article.html 模板的内容,而不必污染 Markdown 文件中的 HTML。另一个额外的好处是现在 img_desc 可以在文章间重复使用。

注意,使用 jinja2content 渲染的模板可以包含 Markdown 和 HTML,因为它们是在 Markdown 内容转换为 HTML 之前添加的。

安装

此插件可以通过以下方式安装:

pip install pelican-jinja2content

配置

此插件接受设置 JINJA2CONTENT_TEMPLATES,它应设置为相对于 PATH(主内容目录,通常是 "content")的路径列表。 jinja2content 将按顺序在这些目录中查找模板。如果它们在任何目录中都没有找到,则使用主题的模板文件夹。

扩展

此插件的结构使得扩展其他文件类型的读取器以渲染 Jinja 模板逻辑变得相当容易。您只需要创建一个新的继承自 JinjaContentMixin 的读取器类,然后是您想要的读取器类。请参阅源中的类定义以获取示例。

贡献

欢迎并非常感谢贡献。每一份贡献都很重要。您可以通过改进文档、添加缺失的功能和修复错误来做出贡献。您还可以通过审查和评论 现有问题 来帮忙。

要开始为此插件做出贡献,请查阅 Pelican 贡献 文档,从 贡献代码 部分开始。

致谢

  • 原始实现由 @joachimneu 完成,并由 @Leonardo 重新工作。
  • 由 @micahjsmith 更新以支持 reST 和 HTML 输入。
  • 由 @justinmayer 转换为新的插件格式。
  • 替换了 pelican-jinja2content,该插件已不再维护。

项目详情


下载文件

下载适合您平台的应用程序。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

pelican-jinja2content-1.0.1.tar.gz (5.4 kB 查看哈希值)

上传时间

构建分布

pelican_jinja2content-1.0.1-py3-none-any.whl (4.8 kB 查看散列值)

上传时间 Python 3

支持者