首页 > 解决方案 > 将自定义 Jinja2 过滤器/测试添加到 MkDocs

问题描述

在为 MkDocs 编写 Jinja2 模板时,我需要一些可用的过滤器/测试未涵盖的处理(特别是,我需要日期格式,这是整个 Web 上 Jinja2 相关资源中自定义过滤器的一个重复示例)。如何定义自己的过滤器/测试并从模板中使用它们?

为了澄清这个问题,我知道如何在 Python的 Jinja2 环境中注册新的过滤器/测试。我的问题是,作为MkDocs 的用户,我自己没有配置 Jinja2。所以我正在寻找的是一种连接到 MkDocs 执行的设置的方法。

我认为可以从插件中添加过滤器。事实上,我找到了一个这样的插件(不幸的是,未记录并且显然没有在积极开发中)。但是,我希望有一个更简单的本地解决方案;一种不涉及实现插件、将其打包为 Python 包并将其发布到 PyPi 上的方法。

标签: jinja2mkdocs

解决方案


一个可能的解决方案是使用mkdocs-simple-hooks,它允许在不需要创建插件的情况下实现挂钩。例如在你的情况下:

plugins:
  - mkdocs-simple-hooks:
      hooks:
        on_env: "docs.hooks:on_env"

文档/hooks.py

def on_env(env, config, files, **kwargs): 
    env.filters['my_filter'] = my_filter
    env.tests['my_test'] = my_test
    return env

推荐阅读