Silverstripe 3 - 延伸sitetree和布局

时间:2014-11-12 11:23:07

标签: silverstripe

我是SilverStripe的新手。我需要通过扩展新的类sitetree来创建一个新页面。我的问题是如何在模板中检索经典page.php中使用的$ Layou。例如,在我的模板文件夹中,我希望为从此创建的新页面组织一个类似“布局”的文件夹。

这是控制器:

class WhitePage extends SiteTree {
    private static $db = array(
    );
    private static $has_one = array(
    );
}

class WhitePage_Controller extends ContentController {
    private static $allowed_actions = array(
    );

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

    function index() {
        return $this->renderWith("WhitePage");
    }
}

我想在模板目录中在“.ss”文件中创建一个文件夹名称“whitepage”,并在模板中使用$ layoutpage instate of $ Layout ......

怎么做?

很多,很多 弗朗西斯科

1 个答案:

答案 0 :(得分:1)

您可以通过扩展WhitePage课程,将主 WhitePage.ss 模板与多种页面类型结合使用。然后,您可以正常使用$Layout来调用自定义布局模板。

<强> WhitePage

class WhitePage extends SiteTree {
}

class WhitePage_Controller extends ContentController {
    private static $allowed_actions = array(
    );

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

<强> CustomWhitePage

class CustomWhitePage extends WhitePage {
}

class CustomWhitePage_Controller extends WhitePage_Controller {
    private static $allowed_actions = array(
    );

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

themes / mytheme 文件夹或 mysite 文件夹中创建模板,如下所示:

templates/Page.ss
templates/WhitePage.ss
templates/Layout/Page.ss
templates/Layout/WhitePage.ss
templates/Layout/CustomWhitePage.ss

您的Layout/WhitePage.ssLayout/CustomWhitePage.ss将使用templates/WhitePage.ss父模板,而任何扩展Page的网页都将使用templates/Page.ss

请务必致电?flush=all,以便第一次加载模板。