簡體   English   中英

樣式化SilverStripe的Blog模塊的最佳方法

[英]Best approach for styling SilverStripe's Blog module

我試圖將CSS要求添加到Blog模塊

我采用的當前方法是創建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方法將功能注入到類中,看起來它可能適用於我的情況。

我的問題是:樣式模塊(例如Blog模塊)的最佳實踐是什么?

顯然這里有些我想念或不了解的東西; 任何澄清將不勝感激!

乍一看,如果您使用的是主題CSS,則只需使用

Requirements::themedCSS("projects");

但是在您的代碼中,可能是括號引起了問題: {$this->ThemeDir()}

SilverStripe文檔在模板和php文件中均提供了執行此操作的示例。 不過,最近引起我注意的是,這些天的“首選”方式仍然是使用“要求”,但是在您提到的模板中。

<% require themedCSS("projects") %>

至於只是樣式化Blog模塊,而不必擴展任何內容或修改其核心代碼,為什么不只是將樣式添加到您的主樣式表或它自己的文件/ css中,而只需將它們包括在主樣式表中主題模板?

我要做的是創建一個名為blog.css的文件,並使用上面的<% require %>作為模板,將其包含在我的themes/themename/templates/Page.ss文件中。 當然,您的css文件不需要使用合並文件那么大的占用空間。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM