gpt4 book ai didi

php - 设计 SilverStripe 博客模块样式的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:55 25 4
gpt4 key购买 nike

我正在尝试将 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 呈现的唯一方法是在模板顶部的 head 标签内硬编码 css 链接标签(这很糟糕)。

我还注意到 SilverStripe 的 DataExtension/SiteConfig将功能注入(inject)类的方法,看起来它可能适用于我的情况。

我的问题是:设计模块(例如博客模块)的最佳做法是什么。

这里显然有一些我遗漏或不理解的东西;任何澄清将不胜感激!

最佳答案

乍一看,如果您使用的是主题 CSS,那么您可以简单地使用

Requirements::themedCSS("projects");

不过在您的代码中,可能是括号导致了问题:{$this->ThemeDir()}

SilverStripe 文档给出了在模板和 php 文件中执行此操作的示例。不过,最近引起我注意的是,如今“首选”方式仍然是使用“要求”,但在您提到的模板中。

<% require themedCSS("projects") %>

至于只是设计你的博客模块的样式,而不必扩展任何东西或修改它的任何核心代码,你为什么不把样式添加到你的主样式表或它自己的文件/css 中,然后只包含它们在主题模板中?

我所做的是创建一个名为 blog.css 的文件,并将其包含在我的 themes/themename/templates/Page.ss 中。使用上面的文件 <% require %>对于模板。您的 css 文件肯定不会占用您需要利用组合文件的那么大的空间。

关于php - 设计 SilverStripe 博客模块样式的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46210258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com