如何在 Octobercms 中对列表顶部的特色博客文章进行排序
How can I sort the featured blog posts in the top of the list in Octobercms
我的要求很简单。我想让我的博客列表按 created_at DESC
排序,但我还想在顶部显示精选帖子。
假设我有 4 个类别:黄金、白银、青铜和其他...
我想先显示金帖
然后是白银帖子。
紧随其后的是青铜帖。
最后是其他人。
全部按created_at DESC
排序。
- 是否有开箱即用的功能可以做到这一点?
- 或者我应该创建一个新插件来使用此功能扩展博客吗?
你怎么看?
我假设您正在使用 Rainlab 博客插件。有很多方法可以解决这个问题,我认为没有官方的 "way"。以下是您必须适合自己的代码的一些示例。
使用 Twig 的解决方案。 Twig 有一个排序过滤器,你可以传入一个
箭头函数,检查
这里。然后你
可以做 if 语句来显示金牌到铜牌。
{% for blog in blogs|sort((a, b) => a.created_at <=> b.created_at) %}
{% if blog.category == Gold %}{{ blog }}{% endif %}
{% endfor %}
临时 CMS
第页。反而
使用 rain blag 组件你可以使用 PHP 中的插件
代码为page/layout/partial。这是给你能力的地方
使用模型以您想要的方式组织它。我在这里
使用 OctoberCMS 查询
功能.
use Rainlab\Blog\Models\Post;
public function onStart() {
$this['golds'] = Post::whereHas('categories', function ($query) {
$query->where('name', 'Gold');
})->get()->sortBy('create_at');
}
第三种方法也是我推荐的方法是构建你自己的插件
可以像我在
CMS 页面示例。 Read the documentation here.
请注意,如果您单击进入 {% component 'something' %}
,您可以展开 htm 模板。
我的要求很简单。我想让我的博客列表按 created_at DESC
排序,但我还想在顶部显示精选帖子。
假设我有 4 个类别:黄金、白银、青铜和其他...
我想先显示金帖
然后是白银帖子。
紧随其后的是青铜帖。
最后是其他人。
全部按created_at DESC
排序。
- 是否有开箱即用的功能可以做到这一点?
- 或者我应该创建一个新插件来使用此功能扩展博客吗?
你怎么看?
我假设您正在使用 Rainlab 博客插件。有很多方法可以解决这个问题,我认为没有官方的 "way"。以下是您必须适合自己的代码的一些示例。
使用 Twig 的解决方案。 Twig 有一个排序过滤器,你可以传入一个 箭头函数,检查 这里。然后你 可以做 if 语句来显示金牌到铜牌。
{% for blog in blogs|sort((a, b) => a.created_at <=> b.created_at) %} {% if blog.category == Gold %}{{ blog }}{% endif %} {% endfor %}
临时 CMS 第页。反而 使用 rain blag 组件你可以使用 PHP 中的插件 代码为page/layout/partial。这是给你能力的地方 使用模型以您想要的方式组织它。我在这里 使用 OctoberCMS 查询 功能.
use Rainlab\Blog\Models\Post; public function onStart() { $this['golds'] = Post::whereHas('categories', function ($query) { $query->where('name', 'Gold'); })->get()->sortBy('create_at'); }
第三种方法也是我推荐的方法是构建你自己的插件 可以像我在 CMS 页面示例。 Read the documentation here.
请注意,如果您单击进入 {% component 'something' %}
,您可以展开 htm 模板。