自定义 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
---