Использование jQuery для изменения страниц application.master в SharePoint - PullRequest
2 голосов
/ 10 сентября 2009

Мы используем MOSS 2007 (SharePoint) для нашей интрасети. Недавно нам была поручена поддержка брендинга для нескольких компаний на нашей ферме. Мы быстро поняли, что страницы приложения (созданные модифицированным application.master) не могут обслуживать несколько фирменных шаблонов (кроме тем).

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

Однако, как быстрое решение, я подумал, что смогу использовать jQuery для замены одного логотипа, нескольких навигационных изображений и нескольких цветов на страницах приложения. В основном происходит переход от бренда A к бренду B до полного отображения страницы.

Мой вопрос ... насколько плоха эта идея? Какие подводные камни связаны с этим? Учитывая, что это только временное решение, я должен попробовать?

Ответы [ 2 ]

4 голосов
/ 10 сентября 2009

Чтобы добавить к ответ Коби , вы можете использовать функцию управления делегатом для развертывания.

Поместите пользовательский элемент управления под _controltemplates, например:

<%@ Control Language="C#" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %>
<SharePoint:CssRegistration name="/_layouts/custom/app.css" runat="server"/>

Напишите функцию управления делегатом (здесь elements.xml):

<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
 <Control ControlSrc="~/_ControlTemplates/CustomBranding.ascx"
                 Id="AdditionalPageHead" Sequence="1" />
</Elements>

Включить пользовательский CSS в _layouts/custom/app.css.

3 голосов
/ 10 сентября 2009

Я думаю, что большинство ваших проблем можно решить с помощью хорошего файла CSS. По моему опыту, это лучше, чем javascript, поскольку загружается намного быстрее. Имейте в виду, что SharePoint создает тяжелые страницы (с точки зрения DOM), поэтому jQuery занимает много времени, чтобы добраться до $(document).ready, и еще больше времени, чтобы манипулировать этим слишком большим DOM - в IE6 это может занять несколько секунд, создавая такое же впечатление как медленный сайт или сервер.
Я сделал много настроек для SharePoint с помощью CSS: это может занять несколько вонючих !important с, но результат лучше, чем у javascript.
Кроме того, помните, что вы можете установить CSS-файл для сайта (на той же странице, на которой вы установили главную страницу сайта) - его можно использовать вместо фактического создания главной страницы для каждого бренда.

...