我正在尝试将CSS要求添加到Blog module。
我采用的当前方法是创建Blog类和Blog_Controller的子类(以及BlogPost和BlogPost_Controller),以尝试将css需求引入init()函数。但是,出于某种原因,我似乎无法获得对这些css文件的任何引用。
class ProjectsHolder extends Blog{
private static $allowed_children = array(
'ProjectPage'
);
}
class ProjectsHolder_Controller extends Blog_Controller{
public function init(){
parent::init();
Requirements::css("{$this->ThemeDir()}/css/projects.css");
}
}
我也试过<%require css%>模板语法。我可以获得css渲染的唯一方法是在模板顶部的头标记内部硬编码css链接标记(这很糟糕)。
我还注意到了SilverStripe的DataExtension/SiteConfig方法,用于向类中注入功能,看起来它可能适用于我的情况。
我的问题是:样式模块的最佳实践是什么,例如Blog模块。
显然我在这里缺少或不理解;任何澄清将不胜感激!
答案 0 :(得分:1)
乍一看,如果您使用的是Themed CSS,那么您只需使用
即可 Requirements::themedCSS("projects");
但是,在您的代码中,括号可能会导致问题:{$this->ThemeDir()}
?
SilverStripe Docs提供了在模板和php文件中执行此操作的示例。不过,最近引起我注意的是,“首选”是这些天的方式仍然是使用'要求'但是在你提到的模板中。
<% require themedCSS("projects") %>
至于为您的Blog模块设计样式,而不必扩展任何内容或修改其中的任何核心代码,为什么您只是将样式添加到主样式表或其中?&#39 ; s自己的文件/ CSS,只是将它们包含在主题模板中?
我所做的是创建一个名为blog.css的文件,并使用上面的themes/themename/templates/Page.ss
模板将其包含在我的<% require %>
文件中。当然,你的css文件没有足够的空间来利用组合文件。