我的要求很简单。我想按created_at DESC
的顺序排列我的博客列表,但我也想在顶部显示精选帖子。
假设我有4个类别:金,银,铜和其他...
我想先显示黄金帖子。
然后是银色的帖子。
之后是古铜色帖子。
最后是其他人。
所有这些都应按created_at DESC
排序。
你怎么看?
我假设您正在使用Rainlab Blog插件。解决这一问题的方法有很多,我认为没有官方的“方法”。这是一些您必须适合自己的代码的示例。
Twig的解决方案。 Twig有一个排序过滤器,您可以通过箭头功能,check here。然后你如果语句将黄金显示为青铜则可以。
{% for blog in blogs|sort((a, b) => a.created_at <=> b.created_at) %}
{% if blog.category == Gold %}{{ blog }}{% endif %}
{% endfor %}
临时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');
}
我推荐的第三种方法是构建自己的插件可以像我在博客中那样扩展或过滤博客帖子CMS页面示例。 Read the documentation here。
注意,如果单击{% component 'something' %}
,则可以展开htm模板。