Silverstripe不使用自定义模板

时间:2014-02-22 20:26:32

标签: php templates silverstripe

我正在使用Silverstripe,我真的很困惑。我创建了Holder和Page类以及他们的.ss文件。

mysite的/代码/ NewsPage.php

class NewsPage extends Page {
    static $db = array('Date' => 'Date', 'Author' => 'Text');

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

        $fields -> addFieldToTab('Root.Main', $dateField = new DateField('Date', 'Date'), 'Content');
        $dateField -> setConfig('showcalendar', true);      
        $fields -> addFieldToTab('Root.Main', new TextField('Author', 'Article author'), 'Content');        

        return $fields;
    }
}

class NewsPage_Controller extends Page_Controller {

        public function init() {
        parent::init();
    }
}

mysite的/代码/ NewsHolder.php

class NewsHolder extends Page {
    static $allowed_children = array('NewsPage');   

}
class NewsHolder_Controller extends Page_Controller {

    public function NewsList() {        
        $holder = NewsHolder::get()->filter('ID', $this->ID);
        return ($holder) ? NewsPage::get()->filter('ParentID', $this->ID)->sort('Date DESC')->limit(3) : false;    
    }
}

模板/布局/ NewsPage.ss

<article>
    <h2>$Title</h2>
    <div class="content">
        $Content
    </div>
    <p class="author">
        $Author
    </p>
    <p class="info">
    $Date.Format("d.m.Y")
    </p>
</article>

模板/布局/ NewsHolder.ss

<% loop $NewsList %>    
 <article>
   <h2><a href="$Link">$Title</a></h2>
   <p class="demo">
     $Content.FirstParagraph ...
   </p>             
 </article>
<% end_loop %>

这些类适用于文章并且工作正常。我将这些代码复制到GalleryPage和GalleryHolder中,这是我想要的图片。问题是Silverstripe不使用GalleryHolder.ss而是使用默认的Page.ss模板。

我无法弄清楚原因。对于NewsPage.ss和NewsHolder.ss,它工作正常,但在另一个类(GalleryPage和GalleryHolder)中完全相同的代码使用默认的Page.ss.代码是一样的,我只是将所有NewsPage或NewsHolder字符串更改为GalleryPage和GalleryHolder。

修改:复制了图库页面的代码

mysite的/代码/ GalPage.php

class GalPage extends Page {
    static $db = array('Date' => 'Date', 'Author' => 'Text');

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

        $fields -> addFieldToTab('Root.Main', $dateField = new DateField('Date', 'Date'), 'Content');
        $dateField -> setConfig('showcalendar', true);      
        $fields -> addFieldToTab('Root.Main', new TextField('Author', 'Article author'), 'Content');        

        return $fields;
    }
}

class GalPage_Controller extends Page_Controller {

        public function init() {
        parent::init();
    }
}

mysite的/代码/ GalHolder.php

<?php
class GalHolder extends Page {
    static $allowed_children = array('GalPage');    

}
class GalHolder_Controller extends Page_Controller {

    public function NewsssList() {      
        $holder = GalHolder::get()->filter('ID', $this->ID);
        return ($holder) ? GalPage::get()->filter('ParentID', $this->ID)->sort('Date DESC')->limit(3) : false;    
    }
}

模板/布局/ GalPage.ss

<article>
    <h2>$Title</h2>
    <div class="content">
        $Content
    </div>
    <p class="author">
        $Author
    </p>
    <p class="info">
    $Date.Format("d.m.Y")
    </p>
</article>

模板/布局/ GalHolder.ss

<% loop $NewsssList %>  
 <article>
   <h2><a href="$Link">$Title</a></h2>
   <p class="demo">
     $Content.FirstParagraph ...
   </p>             
 </article>
<% end_loop %>

您能否就如何解决问题给我一些建议?

2 个答案:

答案 0 :(得分:2)

正如3dgoo所说 - 你把模板文件放在了主题目录中吗?此外,有时手动清除缓存(即删除silvestripe-cache文件夹中的文件)会有所帮助。

答案 1 :(得分:1)

您的文件夹'layout'应为'Layout'(区分大小写)。