2014-02-22 74 views
0

我使用銀條紋,我真的很困惑。我創建了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

您是否在頁面上調用了?flush = all? – 3dgoo

+0

如果你的問題是GalleryPage和GalleryHolder發佈這些頁面的代碼,而不是News。也許我們會挑錯一些。 – 3dgoo

+0

是的,我調用了flush,我檢查了語法,我不知道爲什麼它是錯誤的。我還更新了代碼庫文件的代碼 –

回答

2

正如3dgoo所說 - 你把模板文件放在themes目錄下嗎?此外,有時手動清除緩存(即刪除silvestripe-cache文件夾中的文件)會有所幫助。

+1

刪除Silvestripe-cache文件夾中的文件適用於我! –

1

您的文件夾'佈局'應該是'佈局'(區分大小寫)。

+0

對不起,它是佈局與'L'...我修好了。所以這不是問題。問題仍然是新聞作品的持有者,但對於圖庫不是 –

+0

哪裏是你的模板文件夾?如果你把它放在你網站的根目錄下,它將不會檢測到模板。您需要將其放入您的mysite文件夾或創建主題。 – micmania1