Silverstripe:模板中Siteconfig输出的Dataobject

时间:2012-05-11 13:05:42

标签: has-many silverstripe data-objects

我遇到类似于银色条纹问题的问题:[http://www.silverstripe.org/dataobjectmanager-module-forum/show/19853] [1]

我有一个工作的DataObject,它主要提供Title,Caption和Image。 这是一个has_many,它应该在模板输出中提供一个滑块。

CMS部分全部完成,这意味着我可以从SiteConfig中的选项卡添加多个“幻灯片”。 只有模板中的输出才会发生。

对于我使用的代码:

SingleSlide扩展了DataObject:

public function getCMSFields_forPopup()
{
    return new FieldSet(
        new ImageUploadField('SlideImg', 'Afbeelding van slide'),
        new TextField('SlideTitle'),
        new TextField('SlideCaption'),
        new SimpleSiteTree('SlideLinkID')
    );
}

在SiteConfigOverride中

    $fields->addFieldToTab('Root.SliderA', new ComplexTableField(
        $this->owner, 'SliderA', 'SingleASlide',
        array('SlideImg' => 'Afbeelding van slide', 'SlideTitle' => 'Titel van Slide', 'SlideCaption' => 'Tekst bij slide', 'SlideLink.Title' => 'Link naar pagina'
    )));

剩下要做的就是能够从模板中获取输出。 任何帮助都会很棒!

此致

1 个答案:

答案 0 :(得分:1)

您可以在Page.php中向Page_Controller类添加一个函数,如下面的

class Page_Controller extends ContentController {
   ...
      function SingleSlideList() {
         return DataObject::get('SingleSlide');
      }
   ...
}

然后在您的ss文件中,您可以使用以下内容:

<% control SingleSlideList %>
    <div class="Image"><% control SlideImg %><% control CroppedImage(880,493) %><img src="$BaseHref$Filename.XML" height="$Height" width="$Width"><% end_control %><% end_control %></div>
    <div class="Content">
        <h2>$SlideTitle</h2>
        <p>$SlideCaption</p>
        <p><a href="$SlideLinkID.Link">my link</a></p>
    </div>
<% end_control %>

您需要更改html才能使用您需要的内容。