代码之家  ›  专栏  ›  技术社区  ›  Mayo

使用jquery更改SharePoint中的application.master页

  •  2
  • Mayo  · 技术社区  · 15 年前

    我们将moss 2007(SharePoint)用于内部网。最近,我们的任务是为农场上的多家公司提供品牌支持。我们很快意识到应用程序页面(由修改过的application.master生成)不能提供多个品牌模板(主题除外)。

    我认为正确的解决方法是在应用程序页面上保留默认的Microsoft品牌(我们已经在dev中对此进行了研究,没有修改服务器上托管的文件)。

    不过,作为一个快速解决方案,我想我可能可以使用jquery替换一个徽标、一些导航图像和应用程序页面上的一些颜色。基本上是在页面完全呈现之前从品牌A转到品牌B。

    我的问题是…这个主意有多坏?这样做的陷阱是什么?考虑到这只是一个临时的解决方案,我应该尝试一下吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Kobi    15 年前

    我认为你的大部分问题都可以通过一个好的CSS文件来解决。根据我的经验,这比JavaScript好,因为它的加载速度快得多。请记住,SharePoint会生成大量页面(面向DOM),因此jQuery需要很长时间才能到达 $(document).ready ,甚至更长的时间来操作这个过大的DOM—在IE6上,这可能需要几秒钟的时间,给人的印象与一个缓慢的站点或服务器相同。
    我使用CSS对SharePoint进行了许多自定义:可能需要一些臭东西 !important 但是结果比javascript好。
    另外,请记住,您可以设置每个站点的CSS文件(在设置子站点的母版页的同一页上),这可以用来代替为每个品牌实际创建母版页。

        2
  •  4
  •   Community Romance    7 年前

    添加到 Kobi's answer ,可以使用委托控制功能进行部署。

    将用户控件置于 _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 .