4

似乎是关于如何构建模板的宝贵信息。我之前问过这个问题,但我想我可以用代码示例更好地问它并删除我之前的尝试:

mysite/_config/theme.yml

SilverStripe\View\SSViewer:
  themes:
    - 'mytheme'
    - '$default'

mysite/code/Page.php

<?php

use SilverStripe\CMS\Model\SiteTree;

class Page extends SiteTree {

}

mysite/code/PageController.php

<?php

use SilverStripe\CMS\Controllers\ContentController;

class PageController extends ContentController {

}

mysite/code/pages/HomePage.php

<?php

namespace Vendor\MainSite;

use Page;

class HomePage extends Page {

}

/mysite/code/controllers/HomePageController.php

<?php

namespace Vendor\MainSite;

use PageController;

class HomePageController extends PageController {

}

然后我有我的主题。结构如下:

theme
   mytheme
      templates
         **Page.ss**
         Layout
         Includes
         Vendor
            MainSite
               Layout
                  **HomePage.ss**

假设 Page.ss 包含 $Layout。我遇到的问题是 Page.ss 永远不会被接受。我已经确认 Silverstripe 正在加载 vendor/silverstripe/framework/templates/SilverStripe/Control/Controller.ss。我已经尝试了 Page.ss 的不同位置,包括在同一个供应商目录中。我还将整个结构移至 /mysite/templates。

我得到上面加载模板的唯一方法是从 HomePage.php 中删除命名空间并简单地遵循模板的 SS3 结构。

4

0 回答 0