【问题标题】:Silverstripe does not use custom templateSilverstripe 不使用自定义模板
【发布时间】:2014-02-22 20:26:32
【问题描述】:

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

mysite/code/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/code/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;    
    }
}

templates/Layout/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>

templates/Layout/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/code/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/code/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;    
    }
}

templates/Layout/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>

templates/Layout/GalHolder.ss

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

你能给我一些建议如何解决这个问题吗?

【问题讨论】:

  • 你在页面上调用过 ?flush=all 吗?
  • 如果您的问题与 GalleryPage 和 GalleryHolder 有关,请发布这些页面的代码,而不是新闻。也许我们会发现一些错误。
  • 下次我在我的电脑上测试你的代码,如果我发现了什么,会告诉你。
  • 我已将您的代码完全按照您的方式放入,它适用于我。我把模板放在themes/[theme-name]/templates/Layout/.
  • 正如 3dgoo 所说 - 您是否将模板文件放在主题目录中?此外,有时手动清除缓存(即删除 silvestripe-cache 文件夹中的文件)会有所帮助。

标签: php templates silverstripe


【解决方案1】:

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

【讨论】:

  • 删除 silvestripe-cache 文件夹中的文件对我有用!
【解决方案2】:

您的文件夹“布局”应为“布局”(区分大小写)。

【讨论】:

  • 对不起,它是带有“L”的布局......我已修复它。所以这不是问题。问题仍然是新闻作品的持有人,但画廊不是
  • 您的模板文件夹在哪里?如果您将其放在站点的根目录中,它将不会检测到模板。你要么需要把它放在你的 mysite 文件夹中,要么创建一个主题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多