在 post 页面中添加类别别名

Add category slug in post page

我是 october cms 的初学者,正在为我的个人博客使用 rainlab 博客插件。 我想在博客 post 页面的 url 中显示类别 slug,我该如何实现?

即example.com/{category_slug}/{blog_post_slug}

应该只是 example.com/:category?/:slug?

除非你一起跳过这个组件,否则没有办法解决这个问题。 post 的博客组件只是在寻找 slug::slug。在我看来,我认为您真的不必担心人们会更改类别。您的 post 列表页面的 link 应该有 url example.com/category/post。为什么用户会更改类别?

如果您真的很在意,这里有一个解决方法。 不要使用博客 post 组件。制作您自己的插件或使用 CMS 页面。代码会略有不同,在这个例子中我将使用 CMS 页面代码,因为它是 'ad hoc' 并且更快。

use Rainlab\Blog\Models\Post;
function onStart() {
    $category = $this->param('category');
    $slug = $this->param('slug');
    $posts = Post::whereHas('categories', function ($query) use ($category) {
            $query->where('slug', $category);
        })->get();
    $this['post'] = $posts->where('slug', $slug)->first();
}