我正在尝试使用构建一个博客,lektor CMS
为此..我需要一个标签系统,在搜索后我在 lektor docs上找到了一个名为lektor 的插件lektor-tags
我遵循文档的每一步,费了很大力气,甚至访问了 github repo以查看文档中是否还有其他内容。
我的问题是当我尝试访问时localhost:5000/{the_tag_name}
说就像localhost:5000/python
我总是404 Not Found
说
在服务器上找不到请求的 URL。如果您手动输入了 URL,请检查您的拼写并重试。
这是我到目前为止所做的:
使用前lektor-tags
:
我将博客帖子的路线更改为
/posts
而不是/blog
.models/blog.ini
向in添加了 slug 格式[children]
[children] model = blog-post order_by = pub_date, title slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}
创建了 3 个帖子,一切正常。
此时我想使用标签系统,所以我选择使用lektor-tags
,我所做的是:
安装
lektor plugins add lektor-tags
configs/tags.ini
使用此配置创建:parent = / url_path = {{ this.parent.url_path }}{{ tag }} tags_field = tags ignore_missing = true template = tags.html
templates/tags.html
使用以下内容创建:{% extends "layout.html" %} {% block title %}{{ this.title }}{% endblock %} {% block body %} <div class="container mt-3"> <b>Tag: {{ this.tag }}</b> <b>Items:</b> <ul> {% for i in this.items %} <li><a href="{{ i|url }}">{{ i._id }}</a></li> {% else %} <li><em>No items.</em></li> {% endfor %} </ul> </div> {% endblock %}
编辑
models/blog-post.ini
并添加:[fields.tags] type = strings
在
templates/blog-post.html
我添加以下内容以显示指向包含具有特定标签的所有帖子列表的页面的链接:{% if this.tags %} <ul> {% for t in this.tags -%} <li> <a href="{{ ('/' ~ t.lower())|url }}"> All posts tagged {{ t }} </a> </li> {% endfor %} </ul> {% endif %}
最后我更新了一个帖子以包含来自管理员的一些标签,并确保它在
content.lr
那个帖子中。所以我停止了 lektor 开发服务器并再次运行它lektor servor
,没有出现任何错误。
标签的链接在帖子中,但是当我单击并点击链接时,例如localhost:5000/python
我得到的 python 标签404 Not Found
。我是 lektor 的新手。我想知道我做错了什么,我怎样才能让它正常工作?
注意:我使用的其他插件是lektor-minify
,lektor-disqus-comments
这些插件的文档很简单,我没有感到困惑,但是当谈到这个特定的插件时,我感到困惑,挣扎:文档不是那么好和解释,我完全迷失了!
更新
我创建了一个github 存储库,其中包含代码以及到目前为止我所做的事情,因此您可以轻松地复制它。
更新 2
我设法使它正常工作,请参阅下面的答案,但是现在我想知道如何将根设置为父级,换句话说,如何编辑此表达式:
<a href="{{ ('/posts@tag/' ~ t.lower())|url }}">
为每个博客文章的标签生成一个源路径,但使用 root 作为父级。如您所见,我尝试了这个:
<a href="{{ ('/' ~ t.lower())|url }}">
但这不能正常工作。
值得一提的是,lektor 使用jinja2
模板语言。