【问题标题】:changing the URL structure of lektor for blog posts to be in the parent directory将博客文章的 lektor 的 URL 结构更改为位于父目录中
【发布时间】:2017-07-07 13:40:42
【问题描述】:

问题: 我们正在将一个 wordpress 博客移植到 lektor。帖子的 wordpress 中的 slug 直接在主域下,例如www.mypage.com/my-blogpost-about-food/ 不是 www.mypage.com/blog/my-blogpost-about-food/

现在所有者还没有准备好接受任何损坏的链接。从外部断开的链接,例如一些随机的互联网页面链接到www.mypage.com/my-blogpost-about-food/。此链接在 lektor 中不起作用。这将降低使用 lektor 重新设计页面的页面排名。我该怎么做才能避免这种情况?

再次,在我们当前的 wordpress 网站中

主博客页面位于:

www.mypage.com/blog/

每篇博文都有一个独特的 slug,不在/blog/ 下,而是直接在主目录下。 例如

www.mypage.com/my-blogpost-about-food/

我该怎么做才能使这些 URL 对 lektor 也有效?例如mypage.com/my-blogpost-about-food 是一篇博文。

编辑:这是 lektor 不支持的。 lektor 中的博文必须位于 www.mypage.com/blog/SINGLE-BLOG-POSTS-MUSTBEHERE,但我希望博文位于 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:

通过上述设置,博客将位于 blog/ 并且帖子位于 博客/。但是如果你想把博客的日期 发布到 URL 中?谢天谢地,这很容易。你需要做的就是 为孩子设置新的 URL 格式。只需编辑 blog.ini 和 将此添加到 [children] 部分:

slug_format = {{ (this.pub_date|dateformat('YYYY/M/') if this.pub_date) ~ this._id }}

它的作用是将年份 (YYYY) 和月份 (M) 如果配置了发布日期,则添加到页面的 ID。除此以外 它只会使用页面的 ID。有了这个改变,我们的博客文章 例如,将从 blog/hello/ 移动到 blog/2015/12/hello/。

现在我将如何实现与此类似的行为?

这是我们的 wordpress 安装的永久链接的正式形式:

【问题讨论】:

标签: lektor


【解决方案1】:

这是可能的。如果您从lektor quickstart 开始使用默认设置:

  • models/blog-post.ini 中,删除hidden = yes
  • models/blog.ini的分页部分下,添加items = site.query('/').filter(F._model == 'blog-post')

第一步让您可以在管理员的根目录下创建博客文章。 第二步告诉页面blog/ 下查找其分页项,并且只包括blog-post 类型的分页项。这将排除例如关于、博客等。

您现在将在/ 获得您网站的主页,在/blog 有一个包含所有帖子列表的博客页面,每个帖子都将位于example.com/my-blogpost-about-food/

要在管理员中创建新博客文章,请转到根管理员页面(不是/blog 管理员页面),单击 +,然后选择博客文章作为新页面类型。它将显示在/blog 的列表中,并直接位于/ 下。

【讨论】:

  • 可能是的,但效果不佳。为博客设置分页怎么样?档案? lektor 管理后端变得非常混乱,因为所有博客文章都在根文件夹中,欢迎在主根目录中问候 100 篇博客文章。你可以这样做,但它根本不起作用......
  • 我相信分页应该可以正常工作。是的,管理员可能会变得拥挤......我认为这是一种解决方法,理想的解决方案是以 wordpress 的方式配置永久链接。直到并且如果 lektor 实现了这一点,这至少会给出预期的结果。
  • 我可以向你保证,分页变得非常混乱。注意:在wordpress中,在/有一篇博文是没有问题的,但在/mainblogpost/subblogpost也有一堆博文,或者在/mikesblog/blogpost也有一些。
【解决方案2】:

我不确定我是否完全理解您想要实现的目标。如果我理解正确,您可以使用 replaced_with for children 功能解决此问题:

https://www.getlektor.com/docs/guides/categories/

【讨论】:

  • 有趣。但归根结底,replaced_with 只是一个过滤器或帖子的选择。例如。你去/project/categories/FOOBAR它将选择所有包含FOOBAR类别的帖子。我真正想要的是在没有/project/categories/ 的情况下解决/FOOBAR 的问题
  • 我认为可能只是在主文件夹中使用符号链接或相同文件/文件夹的副本,并且 URL 是绝对的。这将解决问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-17
  • 2020-01-26
  • 2013-09-04
  • 2015-08-01
  • 2023-02-18
  • 2015-10-05
  • 1970-01-01
相关资源
最近更新 更多