【问题标题】:OctoberCMS: Why is the slug value missing in "post.url" of the blog pluginOctoberCMS:为什么博客插件的“post.url”中缺少slug值
【发布时间】:2022-01-18 08:34:39
【问题描述】:

我正在使用博客插件的[blogPosts] 组件。我有一个 for 循环来显示所有博客文章。一切都很好,但是 {{ post.url }} 的值缺少 slug 值。这就是我使用该组件的方式:

url = "/blog/:page?"
layout = "default"

[blogPosts]
pageNumber = "{{ :page }}"
postsPerPage = 10
noPostsMessage = "No posts found"
sortOrder = "published_at desc"
categoryPage = 404
postPage = "post"
==
{% set posts = blogPosts.posts %}
{% for post in posts %}
<h1>{{ post.title }}</h1>
<p>{{ post.summary|raw }}</p>
<a href="{{ post.url }}">Read more</a>
{% endfor %}

在上面的例子中,所有的帖子链接都指向blog/post。我希望每个帖子的slug 都在其网址中,但它不见了。为什么?

【问题讨论】:

  • 能否分享您的post 页面详细信息
  • 博文页面的url是url = "/blog/post"。我将其更改为url = "/blog/post/:slug",问题已解决。不知道post页面的url会影响博客页面生成的url,这很奇怪!
  • 是的,它必须包含 :slug 才能将帖子块放置到位 :)

标签: php octobercms


【解决方案1】:

有时这可能是blog page URL 的问题。

如果您使用[blogPosts] 并且在标记中,您需要使用{{ post.url }} 生成blog page 的链接,您需要正确地设置urlblog page

title = "Blog Post Page"
url = "/blog/post/:slug"
layout = "default"
is_hidden = 0
==
<?PHP
  // ... other code

这里重要的是url = "/blog/post/:slug",主要重要的是:slug参数

URL 必须有 :slug 参数才能替换为实际的 post slug

如果您还需要在 URL 中添加帖子类别 slug,那么您还需要在 URL 中使用 :category 参数,例如:url = "/blog/post/:category/:slug"

这些:slug:category 在创建帖子链接时是硬编码的,因此您需要完全使用它们而不是其他names。查看以下来自rainlab.post 插件的post model 截图。

如有任何疑问,请发表评论。

【讨论】:

    猜你喜欢
    • 2019-08-24
    • 2020-02-25
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多