2012-05-29 50 views
1

我正在爲有3個主題的客戶開發一個站點。我正在使用app_themes系統來讓用戶改變風格。每個主題使用幾個不同的JavaScript文件來加載自定義字體。根據所選主題加載這些JavaScript文件的最佳方法是什麼?是否可以根據主題加載JavaScript?

據我所知,Kentico使用與默認ASP.net webforms相同的應用程序主題系統。

理想情況下,我希望能夠將相應的JavaScript文件添加到相應的App_Theme文件夾,並讓ASP將標籤添加到文檔頭。如果這不是一個選項,我已經考慮編寫一個ScriptLoader JavaScript來檢查樣式表標籤以確定正在使用哪個主題。如果我可以在主體元素上添加主題名稱作爲類屬性,然後查看並引入適當的腳本,會更好。

回答

0

我想我找到了一個解決方案,如果你不使用Kentico,它需要製作一個web部件或控件。

public static void AddScriptToHead(HtmlHead h, string script, bool AddScriptTags) 
{ 
    Literal l = new Literal(); 

    if (AddScriptTags) 
     l.Text = "<script type=\"text/javascript\" src=\"" 
       + script + 
       "\"></script>"; 
    else 
     l.Text = script; 
    h.Controls.Add(l); 
} 

protected void SetupControl() 
{ 
    if (this.StopProcessing) 
    { 
     // Do nothing 
    } 
    else 
    { 
     string theme = Page.Theme; 


     if (theme != null) 
     { 

      if (theme.Equals("Card")) 
      { 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-classic.js", true); 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Charis_SIL_700.font.js", true); 
      } 
      else if (theme.Equals("CardamonWave")) 
      { 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-wave.js" ,true); 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Lobster_14_400.font.js",true); 
      } 
      else if (theme.Equals("CardamonAncient")) 
      { 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/cufon-colors-ancient.js", true); 
       AddScriptToHead(Page.Header, "~/App_Themes/Cardamon/js/Charis_SIL_700.font.js", true); 
      } 
      else 
      { 
       //Y U no theme? 
      } 
     } 

    } 
} 

我想擴展它以接受將來的腳本和主題作爲屬性,但這種情況現在可行。

相關問題