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

种子高频

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

假设我有 4 个类别:黄金、白银、青铜和其他……

我想先显示金帖。

然后是银贴。

其次是青铜职位。

最后是其他人。

所有这些都应由 订购created_at DESC

  1. 是否有开箱即用的功能来做到这一点?
  2. 或者我应该创建一个新插件来扩展具有此功能的博客?

你怎么认为 ?

佩蒂斯·布兰登

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

  1. 用树枝解决。Twig 有一个排序过滤器,你可以传入一个箭头函数,在这里查看然后你可以做 if 语句来显示金到青铜。

    {% for blog in blogs|sort((a, b) => a.created_at <=> b.created_at) %}
    {% if blog.category == Gold %}{{ blog }}{% endif %}
    {% endfor %}
    
  2. 临时CMS 页面您可以将 PHP 代码中的插件用于页面/布局/部分,而不是使用rain blag 组件。在这里,您可以使用模型以您想要的方式组织它。在这里,我使用 OctoberCMS查询功能

    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 页面示例中所做的那样。阅读此处的文档

一方面要注意,如果您点击进入,{% component 'something' %}您可以展开 htm 模板。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章