在 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();
}
我是 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();
}