1

我正在为有 3 个可用主题的客户开发一个网站。我正在使用 app_themes 系统使用户能够更改样式。每个主题使用几个不同的 JavaScript 文件来加载自定义字体。根据所选主题加载这些 JavaScript 文件的最佳方法是什么?

据我所知,Kentico 使用与默认 ASP.net 网络表单相同的应用程序主题系统。

理想情况下,我希望能够将适当的 JavaScript 文件添加到相应的 App_Theme 文件夹,并让 ASP 将标签添加到文档头。如果这不是一个选项,我考虑编写一个 ScriptLoader JavaScript,它将检查样式表标签以确定正在使用的主题。如果我可以将主题名称作为类属性添加到 body 元素上,然后查看并引入适当的脚本,那就更好了。

4

1 回答 1

0

如果您不使用 Kentico,我想我找到了一个涉及制作 webPart 或控件的解决方案。

 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?
            }
        }

    }
}

我想扩展它以在将来接受脚本和主题作为属性,但这现在可以工作。

于 2012-05-29T18:31:37.117 回答