天天看點

SharePoint 2013 母版頁修改後,無法添加應用程式

  問題描述:前一段時間嘗試了一下将HTML檔案轉換為母版頁,但是,用着用着又發現新的問題,我們轉換的母版頁,設定成預設母版頁以後,無法添加應用程式,隻有一個對話框一直加載。我們拷貝自帶的母版頁,修改Html同步master以後,也無法添加應用程式。如下圖:

SharePoint 2013 母版頁修改後,無法添加應用程式

(一直顯示“正在加載”的界面)

SharePoint 2013 母版頁修改後,無法添加應用程式

(正常的添加應用程式的頁面)

  考慮了一下問題可能出現在哪兒,因為我是自己轉換的母版頁,是以我就Copy了一個自帶的母版頁,然後使用生成的master頁面作為預設母版頁,發現沒有問題。但是,當我修改了Html檔案以後,與之關聯的master檔案自然也被修改了,然後也出現了無法添加應用程式的問題。

  綜上測試考慮,不是生成母版頁的過程有問題,而是,我們修改html的時候,SharePoint2013自動修改master的過程中,是master頁出現了異常情況。由于這樣的問題的出現,建議大家如果想要通過html檔案生成母版頁的話,生成一次以後還是去修改master頁,然後斷掉關聯删除html檔案吧。除非你怕修改壞了,先留着html檔案,因為随便修改下html檔案儲存,master檔案都會回到初始的位置。

  好吧,前面一堆都幾乎等于廢話,下面我們來找一下,到底哪裡出現了問題!其實排查問題很簡單,隻是對比一下兩個檔案,哪裡不一樣,然後覆寫回來不斷嘗試就可以了,隻是比較耗時間和耗視力罷了。這麼沒技術含量的工作,我就不廢話了,說說我的思路。

  首先,我懷疑頭部引用有問題,把head部分全部覆寫,發現沒有意義。然後,懷疑body部分有問題,依然全部覆寫,發現OK了。真好,這樣我就把範圍縮小到body裡面了。然後看看裡面幾個比較大的div分别測試,發現<div id="s4-workspace">這個裡面有問題,下面介紹一個比較不錯的工具吧NotePad++,這個東西可幫了我大忙,尤其左右同僚滾動對比,還是不錯的,比記事本檔案好用多了。

  經過不斷的嘗試,發現<div id="sideNavBox"這個div内的東西,都覆寫了,母版頁就OK了,如下有截圖,我們發現兩個一樣id的div,裡面的東西大小查很多,其實,差點就是SharePoint:SPNavigationManager這段導航引用,把它添加到相應位置,即可。最後,還要把上面需要的幾個PlaceHolder标簽的不可見屬性去掉,我們就大功告成了。

SharePoint 2013 母版頁修改後,無法添加應用程式

(附:對比圖 點選圖檔看大圖)

  附:完整的id="sideNavBox"Div的Html

<div class="ms-tableCell ms-verticalAlignTop">

<div id="sideNavBox" class="ms-dialogHidden ms-forceWrap ms-noList">

<a id="startNavigation" name="startNavigation" tabIndex="-1"></a>

<SharePoint:AjaxDelta id="DeltaPlaceHolderLeftNavBar" class="ms-core-navigation ms-belltown-sideNavDelta" BlockElement="true" runat="server">

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server" />

<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server" />

<SharePoint:SPNavigationManager id="TreeViewNavigationManagerV4" runat="server" ContainedControl="TreeView" CssClass="ms-tv-box">

<SharePoint:SPLinkButton runat="server" NavigateUrl="~site/_layouts/15/viewlsts.aspx" id="idNavLinkSiteHierarchyV4" Text="<%$Resources:wss,treeview_header%>" accesskey="<%$Resources:wss,quiklnch_allcontent_AK%>"

CssClass="ms-tv-header" />

<SharePoint:DelegateControl runat="server" ControlId="TreeViewAndDataSource">

<Template_Controls>

<SharePoint:SPHierarchyDataSourceControl runat="server" id="TreeViewDataSourceV4" RootContextObject="Web" IncludeDiscussionFolders="true"/>

<SharePoint:SPRememberScroll runat="server" id="TreeViewRememberScrollV4" onscroll="javascript:_spRecordScrollPositions(this);" style="overflow: auto;">

<SharePoint:SPTreeView id="WebTreeViewV4" runat="server" ShowLines="false" DataSourceId="TreeViewDataSourceV4" ExpandDepth="0"

SelectedNodeStyle-CssClass="TREEVIEWSELECTEDCLASS" NodeStyle-CssClass="TREEVIEWNODECLASS" SkipLinkText="" NodeIndent="12"

ExpandImageUrl="/_layouts/15/images/tvclosed.png?rev=23" ExpandImageUrlRtl="/_layouts/15/images/tvclosedrtl.png?rev=23"

CollapseImageUrl="/_layouts/15/images/tvopen.png?rev=23" CollapseImageUrlRtl="/_layouts/15/images/tvopenrtl.png?rev=23"

NoExpandImageUrl="/_layouts/15/images/tvblank.gif?rev=23">

</SharePoint:SPTreeView>

</SharePoint:SPRememberScroll>

</Template_Controls>

</SharePoint:DelegateControl>

</SharePoint:SPNavigationManager>

</asp:ContentPlaceHolder>

</SharePoint:AjaxDelta>

</div>

  結束語:通過以上操作,我們基本可以完成母版頁的搭建了,首先通過複制存在的Html母版頁,然後調整的樣式,添加css引用,基本都調整完畢了,可以加上SharePoint導航的引用,然後删掉html檔案(防止我們的心血付之東流啊),或者複制一個改好的master頁面斷開連接配接也OK。如果通過html生成的母版頁,或許我們覆寫<div id="s4-workspace">或者選擇性的覆寫一部分比較實用。

繼續閱讀