将博客文章的 URL 结构更改为位于父目录中
changing the URL structure of lektor for blog posts to be in the parent directory
问题:
我们正在将 wordpress 博客移植到 lektor。 post 的 wordpress 中的 slug 直接位于主域下,例如www.mypage.com/my-blogpost-about-food/
不是 www.mypage.com/blog/my-blogpost-about-food/
。
现在所有者不准备接受任何损坏的 links。 link 从外面损坏,例如一些随机的互联网页面 link 到 www.mypage.com/my-blogpost-about-food/
。这个 link 在 lektor 中不起作用。这将降低使用 lektor 重新设计页面的页面排名。我该怎么做才能避免这种情况?
同样,在我们当前的 wordpress 网站中
主要博客页面位于:
www.mypage.com/blog/
每个博客 post 都有一个独特的 slug,不在 /blog/
之下,而是直接在主博客中。
例如
www.mypage.com/my-blogpost-about-food/
我该怎么做才能使这些 URL 也对 lektor 有效?那例如mypage.com/my-blogpost-about-food
是一个博客 post。
编辑:这是 lektor 不支持的。 lektor 中的博客 post 必须位于 www.mypage.com/blog/SINGLE-BLOG-POSTS-MUSTBEHERE
但我希望博客 post 位于此处 www.mypage.com/SINGLE-BLOG-POSTS-MUSTBEHERE
阅读这里
https://www.getlektor.com/docs/content/urls/
如果我转到系统字段并输入 my-blogpost-about-food
,它仍会出现在 /blog/my-blogpost-about-food/
中
阅读 here 很明显我也无法更改父模型中的 slug:
With the above settings the blog will live at blog/ and the posts at
blog/. But what if you want to put the date of the blog
post into the URL? That's thankfully very easy. All you need to do is
to set up a new URL format for the children. Just edit blog.ini and
add this to the [children] section:
slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}
What this does is that it will prepend the year (YYYY) and month (M)
to the ID of the page if the publication date is configured. Otherwise
it will just use the ID of the page. With this change our blog post
will move from for instance blog/hello/ to blog/2015/12/hello/.
现在我该如何实现与此类似的行为?
这是我们 wordpress 安装的永久 links 的正式版本:
我不确定我是否完全理解您想要实现的目标。如果我理解正确,您可以使用 replaced_with
for children 功能解决此问题:
这是可能的。如果您从 lektor quickstart
:
开始使用默认设置
- 在
models/blog-post.ini
中,移除 hidden = yes
- 在
models/blog.ini
的分页部分下,添加 items = site.query('/').filter(F._model == 'blog-post')
第一步让您在管理员的根目录下创建博客 posts。
第二步告诉页面 blog
在 /
下查找它的分页项目,并且只包括 blog-post
类型的项目。这将排除例如关于、博客等
您现在将在 /
拥有您网站的主页,在 /blog
拥有一个包含所有 post 列表的博客页面,并且每个 post 都将位于在 example.com/my-blogpost-about-food/
.
要在管理中创建新博客 post,请转到根管理页面(不是 /blog
管理页面),单击 + , 和 select 博客 Post 作为您的新页面类型。它将出现在 /blog
的列表中,并直接位于 /
.
下
问题:
我们正在将 wordpress 博客移植到 lektor。 post 的 wordpress 中的 slug 直接位于主域下,例如www.mypage.com/my-blogpost-about-food/
不是 www.mypage.com/blog/my-blogpost-about-food/
。
现在所有者不准备接受任何损坏的 links。 link 从外面损坏,例如一些随机的互联网页面 link 到 www.mypage.com/my-blogpost-about-food/
。这个 link 在 lektor 中不起作用。这将降低使用 lektor 重新设计页面的页面排名。我该怎么做才能避免这种情况?
同样,在我们当前的 wordpress 网站中
主要博客页面位于:
www.mypage.com/blog/
每个博客 post 都有一个独特的 slug,不在 /blog/
之下,而是直接在主博客中。
例如
www.mypage.com/my-blogpost-about-food/
我该怎么做才能使这些 URL 也对 lektor 有效?那例如mypage.com/my-blogpost-about-food
是一个博客 post。
编辑:这是 lektor 不支持的。 lektor 中的博客 post 必须位于 www.mypage.com/blog/SINGLE-BLOG-POSTS-MUSTBEHERE
但我希望博客 post 位于此处 www.mypage.com/SINGLE-BLOG-POSTS-MUSTBEHERE
阅读这里 https://www.getlektor.com/docs/content/urls/
如果我转到系统字段并输入 my-blogpost-about-food
,它仍会出现在 /blog/my-blogpost-about-food/
阅读 here 很明显我也无法更改父模型中的 slug:
With the above settings the blog will live at blog/ and the posts at blog/. But what if you want to put the date of the blog post into the URL? That's thankfully very easy. All you need to do is to set up a new URL format for the children. Just edit blog.ini and add this to the [children] section:
slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}
What this does is that it will prepend the year (YYYY) and month (M) to the ID of the page if the publication date is configured. Otherwise it will just use the ID of the page. With this change our blog post will move from for instance blog/hello/ to blog/2015/12/hello/.
现在我该如何实现与此类似的行为?
这是我们 wordpress 安装的永久 links 的正式版本:
我不确定我是否完全理解您想要实现的目标。如果我理解正确,您可以使用 replaced_with
for children 功能解决此问题:
这是可能的。如果您从 lektor quickstart
:
- 在
models/blog-post.ini
中,移除hidden = yes
- 在
models/blog.ini
的分页部分下,添加items = site.query('/').filter(F._model == 'blog-post')
第一步让您在管理员的根目录下创建博客 posts。
第二步告诉页面 blog
在 /
下查找它的分页项目,并且只包括 blog-post
类型的项目。这将排除例如关于、博客等
您现在将在 /
拥有您网站的主页,在 /blog
拥有一个包含所有 post 列表的博客页面,并且每个 post 都将位于在 example.com/my-blogpost-about-food/
.
要在管理中创建新博客 post,请转到根管理页面(不是 /blog
管理页面),单击 + , 和 select 博客 Post 作为您的新页面类型。它将出现在 /blog
的列表中,并直接位于 /
.