Как запретить веб-формам для маркетологов вводить свой собственный jquery-ui.custom.Default.css - PullRequest
5 голосов
/ 14 февраля 2012

Я недавно использовал Веб-формы для маркетологов (WFFM) в Sitecore проекте, и я заметил, что он внедрен:

<link href="/sitecore%20modules/shell/Web%20Forms%20for%20Marketers/themes/colors//jquery-ui.custom.Default.css" rel="stylesheet" type="text/css" />

Есть лиспособ отключить ссылку, чтобы на страницу добавлялись только указанные мной CSS-файлы?


После просмотра большего количества источника WFFM я заметил, что нежелательный <link />добавлен на страницу с помощью Page.Header.Controls:

if (page.Header != null)
{
    if (!flag)
    {
        try
        {
            //possibly added as link, unless an exception is thrown
            page.Header.Controls.Add((Control) htmlLink);
            linkDictionary.Add(key, key);
            continue;
        }
        catch (Exception ex)
        {
            //added manually
            HtmlTextWriter writer = new HtmlTextWriter((TextWriter) new StringWriter(new StringBuilder()));
            htmlLink.RenderControl(writer);
            page.ClientScript.RegisterClientScriptBlock(typeof (Page), writer.InnerWriter.ToString(), writer.InnerWriter.ToString());
            flag = true;
            continue;
        }
    }
}

Это означает, что я мог бы проверить все элементы управления заголовка и скрыть тот, который содержит "jquery-ui.custom.Default.css", но это все равно похоже на "грязный противный взлом" (которыйэто).Он также не удалит ссылку в ситуациях, когда page.Header.Controls.Add выдаст исключение.

Ответы [ 2 ]

3 голосов
/ 27 сентября 2012

Веб-формы для маркетологов фактически не добавляют тег <link>, если таблица стилей отсутствует в файловой системе.

Основной проблемой оказалось то, что TDS кэшировал копию удаленной таблицы стилей и добавлял ее в веб-каталог при каждой сборке. Очистка сборки и очистка кэшированных файлов TDS устранили проблему, не добавляя код на стороне сервера.

3 голосов
/ 14 февраля 2012

Я декомпилировал WFFM, и кажется, что его нельзя изменить, чтобы изменить или отключить.Таким образом, один из способов обойти эту проблему - отредактировать этот файл напрямую и стереть его содержимое.Он все равно будет загружен, но не будет содержать CSS.

ОБНОВЛЕНИЕ

Для ваших обновлений вы также можете попробовать что-то вроде этого:

Control ctl = WebUtil.FindControlOfType(Sitecore.Context.Page.Page, typeof(TYPE-OF-EXPECTED-CONTROL));

Где вы замените TYPE-OF-EXPECTED-CONTROL.Отсюда вы можете делать с ней все, что захотите, например, выяснить, есть ли в ней ссылка на CSS и т. Д.

...