jinja2 - 将自定义 Jinja2 过滤器/测试添加到 MkDocs
问题描述
在为 MkDocs 编写 Jinja2 模板时,我需要一些可用的过滤器/测试未涵盖的处理(特别是,我需要日期格式,这是整个 Web 上 Jinja2 相关资源中自定义过滤器的一个重复示例)。如何定义自己的过滤器/测试并从模板中使用它们?
为了澄清这个问题,我知道如何在 Python的 Jinja2 环境中注册新的过滤器/测试。我的问题是,作为MkDocs 的用户,我自己没有配置 Jinja2。所以我正在寻找的是一种连接到 MkDocs 执行的设置的方法。
我认为可以从插件中添加过滤器。事实上,我找到了一个这样的插件(不幸的是,未记录并且显然没有在积极开发中)。但是,我希望有一个更简单的本地解决方案;一种不涉及实现插件、将其打包为 Python 包并将其发布到 PyPi 上的方法。
解决方案
一个可能的解决方案是使用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
推荐阅读
- sql-server - 从 MS SQL 查询中的路径列获取文件夹名称
- javascript - 是告诉客户端做小的 html 更新适当地使用 socket.io 吗?
- haskell - 是什么!在 { addressCity :: !Text } 是什么意思?
- r - 在 R 中,做线性回归
- c# - 在运行时添加控制的更好方法
- linux - 你能在 Linux(更具体地说是 Raspbian)上运行 B 编程语言吗?
- curl - Splunk Metrics {"text":"No data","code":5} 错误
- firebase - 如何使用flutter和google firestore在主页上仅显示用户请求的数据?
- php - 由于从电子邮件中提取的令牌损坏,功能测试失败
- regex - 显示名称中包含字符“a”或“A”至少出现 3 次的所有文件(从当前目录)的内容