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