midea2 发表于 2015-9-30 01:11:22

JQuery定制sharepoint网站的左边导航

  最近有个项目,总体构架设计如:首先有一个clients网站,然后clients下面有很多client网站,每个client下面又会有很多brands(品牌)。当用户进入brand网站时,发现一个奇怪的现象:左边导航不仅显示当前client下的所有brand,同时也显示其他client下面的brand连接,不知道这是不是sharepoint的bug。我想可能MS就这么设计的。你会发现,我选择的网站是:Pfizer下面的Aricept,但Wyndham下面的所有brands也被展开了

  这种情况,客户不希望的。客户希望只想展开当前被选中的client。
  开发困惑:我想既然是导航,我可以尝试重新写 SPNavigationPriver ,PortalSiteMap, SiteMap atc...,我发了几个小时徒劳无功,后来我想到JS,但是用JS不知道如何下手。正在困惑中,我突然想到JQuery,虽然这个技术很早就出现了,但一直没有机会去尝试。于是查查资料,终于通过JQuery解决了这个问题。
  解决步骤如下:
  首先去下载JQuery,然后拷贝它到_layouts/JQuery文件夹(没有Jquery,创建一个)然后编辑Master page,找到</form> 标记,然后把下面code加入到这个标记上面。
  

Code
1)copy JQuery.js into 12\TEMPLATE\LAYOUTS\JQuery foler
2)add below sections into master page:
<script type="text/javascript" src="/_layouts/JQuery/jquery.js"></script>

<script type="text/javascript">
   $("table.ms-navSubMenu2").each(function(){
      var objCrumb =$("td").filter(".ms-pagebreadcrumb");
      var crumValue = objCrumb.text();
      //Find any navigation items under the sub menu that have been selected.

      var selectedNavItems = $(this).find("a.ms-selectednav");
      //Find the corresponding navigation header of the current sub menu being processed
      var menuHeader = $(this).parents("tr:eq(0)").prev("tr").find("table.ms-navheader:eq(0)");            
      if ($(menuHeader).hasClass("ms-selectednavheader") || selectedNavItems.length > 0)
      {
            //if the navigation header for this sub menu is selected or if there are any
            //selected navigational items in this submenu, show the submenu.
            $(this).show();
      }
      else
      {
            if(crumValue !=null && crumValue.length>0)
            {
                if(crumValue.split('>').length>3)
                {
                     $(this).hide();// hide the submenu
                }
            }
      }
    });
    </script>
  
  OK,再次打开网站,你会发现上面的问题被解决了

  本技术参考: http://www.deviantpoint.com/post/2009/01/16/Creating-an-accordion-style-SharePoint-Quick-Launch-menu-with-jQuery.aspx
页: [1]
查看完整版本: JQuery定制sharepoint网站的左边导航