我如何对Octobercms中列表顶部的精选博客文章进行排序

问题描述 投票:-1回答:1

我的要求很简单。我想按created_at DESC的顺序排列我的博客列表,但我也想在顶部显示精选帖子。

假设我有4个类别:金,银,铜和其他...

我想先显示黄金帖子。

然后是银色的帖子。

之后是古铜色帖子。

最后是其他人。

所有这些都应按created_at DESC排序。

  1. 是否有开箱即用的功能?
  2. 或者我应该创建一个新插件来扩展具有此功能的Blog吗?

你怎么看?

laravel octobercms octobercms-backend
1个回答
1
投票

我假设您正在使用Rainlab Blog插件。解决这一问题的方法有很多,我认为没有官方的“方法”。这是一些您必须适合自己的代码的示例。

  1. Twig的解决方案。 Twig有一个排序过滤器,您可以通过箭头功能,check here。然后你如果语句将黄金显示为青铜则可以。

    {% for blog in blogs|sort((a, b) => a.created_at <=> b.created_at) %}
    {% if blog.category == Gold %}{{ blog }}{% endif %}
    {% endfor %}
    
  2. 临时CMS Page。代替使用rain blag组件,您可以在PHP中使用插件编码到页面/布局/部分。这是给你能力的地方与模型一起按您想要的方式组织模型。我在这里使用OctoberCMS querying features

    use Rainlab\Blog\Models\Post;
    
    public function onStart() {
        $this['golds'] = Post::whereHas('categories', function ($query) {
            $query->where('name', 'Gold');
        })->get()->sortBy('create_at');
    }
    
  3. 我推荐的第三种方法是构建自己的插件可以像我在博客中那样扩展或过滤博客帖子CMS页面示例。 Read the documentation here

注意,如果单击{% component 'something' %},则可以展开htm模板。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.