2012-05-29 3 views
1

Я разрабатываю сайт для клиента, который имеет 3 темы. Я использую систему app_themes, чтобы пользователь мог изменить стиль. Каждая тема использует несколько разных файлов JavaScript для загрузки пользовательских шрифтов. Какой был бы лучший подход для загрузки этих файлов JavaScript на основе выбранных тем?Можно ли загрузить JavaScript по теме?

Насколько я могу судить, Kentico использует ту же систему тем приложений, что и веб-формы ASP.net по умолчанию.

В идеале, я хотел бы иметь возможность добавлять соответствующие файлы JavaScript в соответствующую папку App_Theme и добавлять ASP в заголовок документа. Если это не вариант, я рассмотрел возможность написания JavaScript ScriptLoader, который будет проверять теги таблицы стилей, чтобы определить, какая тема используется. Было бы лучше, если бы я мог просто добавить имя темы как атрибут класса в элемент body, а просто посмотреть на это и вытащить соответствующие скрипты.

ответ

0

Я думаю, что нашел решение, которое предполагает создание веб-страницы или управление, если вы не используете Kentico.

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

    } 
} 

Я хотел бы расширить это, чтобы принять сценарии и темы как свойства в будущем, но это будет работать пока.