如何获取子页面并循环遍历另一种页面类型的数据?

How to get child pages and loop through it's data on another page type?

我有一个 TestimonalHolder 页面类型,其子页面类型为 Testimonials,每个子页面都有一个 Message $db 字段来存储推荐。

问题是如何访问我的 HomePage.ss 上的 $Message 字段,以便我可以遍历它们并将它们放入滑块等

Testimonials.php

class Testimonials extends Page {
    private static $db = array(
        'Message' => 'Text'
    );

    public function getCMSFields() {
        $fields = parent::getCMSFields();

        $fields->addFieldsToTab('Root.Testimonials', array(
            TextareaField::create('Message')
        ));

        return $fields;
    }
}

class Testimonials_Controller extends Page_Controller {

}

我知道我可以在我的 TestimonialHolder.ss 页面上使用这段代码循环浏览它们:

<% loop $Children %>
    <h2>$Title</h2>
    $Message
<% end_loop %>

在你的HomePage.php

public function getTestimonials($limit = 5) {
    return Testimonials::get()->limit($limit);
}

然后在您的模板中,像使用 $Children 一样使用 $Testimonials

在您的模板中:

<% loop $Testimonials('BlogPost').Limit(5) %>
    $Title
<% end_loop %>

使用这个 $List 帮助程序,您可以直接在模板中访问简单的数据列表(即使使用 Filter()Sort()Limit()),尽管这违反了纯 MVC有点。

小心轻放!

另请参阅:http://www.silverstrip.es/blog/retrieving-some-dataobjects-in-template-without-php-getter/(免责声明:我的博客)