doujieju0397 2016-08-05 04:54 采纳率: 0%
浏览 17
已采纳

循环博客帖子按SilverStripe上的类别过滤

I'm working on a SilverStripe site and have installed the blog module.

I have my blog set up with multiple categories such as News, Events, Announcements, Photo Galleries, etc.

The problem I run into is that I want to showcase the latest blog post (title, image, some of the content) of each category on my front page.

I can easily loop the blog post using this solution: http://www.silverstripe.org/community/forums/blog-module-forum/show/102585?start=8

/mysite/code/Page.php

class Page_Controller extends ContentController {
    public function latestBlog($num = 3) {
        return BlogPost::get()
                ->sort('PublishDate', 'desc')
                ->limit($num);
    }
}

/themes/simple/templates/Page.ss

<ol>
<% loop $latestBlog %>
    <li>$Title</li>
    <p>$Content</p>
<% end_loop %>
</ol>

But I can't figure out how to loop while filtering by a category. For example something like this logic:

return BlogPost::get()
        ->FILTER('Category', 'News')
        ->sort('PublishDate', 'desc')
        ->limit($num);

The idea is to loop News and code it a certain way so it looks different on the front page, then loop Photo Galleries.

I can't find anything that works on how to do this.

Is this possible to do?

  • 写回答

1条回答 默认 最新

  • duanbushi1867 2016-08-05 05:09
    关注

    You want to use the relation method on DataList: http://api.silverstripe.org/3.3/class-DataList.html#_relation

    return BlogCategory::get()
        ->filter('Title', 'News')
        ->relation('BlogPosts')
        ->sort('PublishDate', 'DESC')
        ->limit($num);
    

    This will return a list of blog posts filtered by the defined category (news).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 iOS绕地区网络检测
  • ¥15 python验证码滑块图像识别
  • ¥15 根据背景及设计要求撰写设计报告
  • ¥15 QT6颜色选择对话框显示不完整
  • ¥20 能提供一下思路或者代码吗
  • ¥15 用twincat控制!
  • ¥15 请问一下这个运行结果是怎么来的
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥15 DS18B20内部ADC模数转换器