自定义 404 页面
支持自定义 404 页面(访问错误网址时显示的页面), 并且支持 404 页面国际化
添加 404 错误页面
在 site_config 中设置 网站根目录 的url与路径的映射,比如
"route": {
"pages": {
"/": "pages/index/zh"
}
},
"translate": {
"pages": {
"/": [ {
"url": "/en/",
"src": "pages/index/en"
}
]
}
}
这里将 网站根目录(/)映射到了文件夹pages/index/zh, 则只需要创建文件pages/index/zh/404.md,然后添加内容:
---
layout: 404.html
---
或者
---
layout: 404
---
用户访问错误的路径时就会返回这个页面
404 错误页面国际化
如上面所说的网站根目录配置, 在pages/index/zh下的config文件如果配置locale为zh, 则生成的/404.html内容为中文
如果用户的浏览器语言设置的其它语言,比如英文en, 则会试图跳转到/en/404.html, 所以我们只需要:
- 在
site_config中配置好translate的路径映射,如上面的示例所示 - 然后新建
pages/index/en/404.md, 添加内容
---
layout: 404.html
---
如果
locale有后缀,比如zh_CN,en_US等,404页面会自动尝试跳转到和浏览器设置的语言相同的页面, 比如/en_US/404.html、/en-US/404.html、/en-us/404.html,/en_us/404.html直到跳转到页面语言和浏览器语言相同则停止跳转,当所有链接都尝试跳转失败后也会停止跳转
如果你需要的语言没有被翻译, 有两种方法:
- 可以通过自定义 404 页面来实现
- 也可以贡献翻译, 到这里,
fork仓库, 然后git clone你的仓库到本地, 在locales.cfg文件里面添加新的语言,然后执行python trans_prepare.py,这会在locales目录下生成新的翻译文件,后缀为.po,翻译这个文件(翻译po文件你可以直接修改文本,也可以用其它工具翻译),然后执行python trans_finish.py就会生成mo二进制文件,没有错误就可以提交更改,然后在github创建PR(Pull Request)来贡献翻译到teedoc仓库
自定义 404 错误页面内容
直接基于主题的模板修改,或者继承主题的模板,比如小改一下404.html页面的body部分,只需在layout目录下新建一个my_404.html, 注意文件名不能和内置的文件名冲突, 如果冲突会提示generate html fail: maximum recursion depth exceeded in comparison:
{% extends "404.html" %}
{% block body_404 %}
这里是 body
{{ body|safe }}
{% endblock%}
然后在404.md中使用这个模板
---
layout: my_404.html
---