添加自定义 Jinja2 filters/tests 到 MkDocs

Add custom Jinja2 filters/tests to MkDocs

在为 MkDocs 编写 Jinja2 模板时,我需要一些未包含在可用 filters/tests 中的处理(具体来说,我需要日期格式化,这是 Jinja2 相关资源中自定义过滤器的重复示例跨网络)。 如何定义自己的 filters/tests 并从模板中使用它们?

为了澄清问题,我从 Python 知道 how to register new filters/tests in a Jinja2 environment 。我的问题是,作为 MkDocs 的用户,我不会自己配置 Jinja2。所以我正在寻找一种方法来挂钩 MkDocs 执行的设置。

我假设可以从插件中添加过滤器。其实我已经找到了one such plugin (undocumented and apparently not under active development, unfortunately). However, I hope that there is a simpler, local solution; one that would not involve implementing a plugin,打包成Python包发布到PyPi上。

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

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

docs/hooks.py

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