1

3つのテーマを利用できるクライアント向けのサイトを開発しています。app_themesシステムを使用して、ユーザーがスタイルを変更できるようにしています。各テーマは、いくつかの異なるJavaScriptファイルを使用してカスタムフォントをロードします。選択したテーマに基づいてこれらのJavaScriptファイルをロードするための最良のアプローチは何でしょうか?

私の知る限り、KenticoはデフォルトのASP.netWebフォームと同じアプリテーマシステムを使用しています。

理想的には、適切なJavaScriptファイルを対応するApp_Themeフォルダーに追加し、ASPにタグをドキュメントヘッドに追加させたいと思います。これがオプションでない場合は、スタイルシートタグを検査して使用されているテーマを判別するScriptLoaderJavaScriptを作成することを検討しました。テーマ名を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 に答える