为SharePoint网站创建自定义导航菜单

news/2024/5/11 5:20:40/文章来源:https://blog.csdn.net/guojingDua/article/details/7942212

相信不少人都希望把SharePoint网站内置的那个顶部导航菜单,换成自己希望的样式。由于SharePoint 2007/2010的网站导航基本上基于标准的ASP.NET SiteMap模型,所以只要你对ASP.NET SiteMap有一些了解,就能创建一个自定义的导航菜单。

在开始之前,让我们先从网上随便找一个样子比较cool的菜单控件。在下面的示例中,我会选择使用Smooth Navigation Menu这个jQuery控件,来渲染出SharePoint网站的顶部导航菜单。将Smooth Navigation Menu控件相关的.js、.css、.gif文件统统下载下来,我们将把它们都放进SharePoint项目中。

打开Visual Studio 2010,创建一个SharePoint 2010项目(我最喜欢的项目模板是“空白SharePoint项目”),在项目中添加一个映射文件夹,来存放Smooth Navigation Menu控件所需的所有文件。我选择在Layouts文件夹中创建一个SmoothNavMenu子文件夹来存放这些文件,如下图所示:

image

接下来开始创建自定义导航菜单。实际上,我们有很多方法可以用来创建自定义导航菜单。例如,我们可以选择以自定义控件的方式,来创建一个自定义导航菜单。由于在这个示例中,我们使用的是一个jQuery插件来实现界面渲染,所以选择以用户控件(.ascx)的方式来创建自定义导航菜单,似乎是一个更好的选择。

在Visual Studio 2010中,向项目中添加一个用户控件,为其命名为SmoothNavMenu.ascx。

image

然后打开新建的这个SmoothNavMenu.ascx用户控件,为其填充内容。

image

SmoothNavMenu.ascx中大部分的内容,都是按照Smooth Navigation Menu控件的要求,添加所需的.css和.js引用。从第20行到第34行的JavaScript代码,作用是在页面载入之后,将Smooth Navigation Menu初始化。具体用法请参考Smooth Navigation Menu的网站。

第16行到第18行,我们将一个Literal控件放到一个<div>元素中。在用户控件的后台代码中,会查询当前网站的顶部导航结构,并生成相应的html元素,然后通过这个Literal控件填充进用户控件。<div>元素的声明同样是Smooth Navigation Menu的要求。Smooth Navigation Menu会根据Literal控件所输出的html元素,渲染出导航菜单。

接着打开用户控件SmoothNavMenu.ascx的后台代码文件,SmoothNavMenu.ascx.cs。在用户控件的后台代码中,我们需要获得当前网站的顶部导航结构,并根据其结构生成html元素。获得网站顶部导航结构的代码是:

image

然后在Page_Load事件中,我们调用此方法来得到网站顶部导航结构,然后通过BuildMenuContent方法(此方法的具体实现代码略)生成Smooth Navigation Menu所需的html元素,然后将这些html元素通过Literal控件的Text属性填充到用户控件界面上。

image

好了,到这里,我们已经把自定义的导航菜单创建好了。但是,如果你想要在网站上使用它,还需要把它放到网站的母版页上面去,同时删除母版页上那个默认的导航菜单控件。要做到这些,你可以使用SharePoint Designer,打开网站,找到母版页,然后蛮干。或者使用更好的方法,在项目中创建一个新的母版页,让新母版页上使用我们创建的自定义导航菜单,然后使网站使用新的母版页。

在Visual Studio 2010中,向项目中添加一个“模块”,把VS2010自动创建的那个Sample.txt文件改名为v4_SmoothNavMenu.master,然后把内容替换为SharePoint 2010网站默认使用的v4.master母版页的内容(直接在SharePoint Designer中找到v4.master,打开它,全选所有html内容,复制,然后到VS2010中打开v4_SmoothNavMenu.master,粘贴)。

image

由于我们需要把v4_SmoothNavMenu.master文件放进网站的母版页样式库里面,所以打开Elements.xml,编辑其内容,修改<Module>标签的Url属性为“_catalogs/masterpage”,修改<File>标签的Type属性为“GhostableInLibrary”:

image

现在我们来修改v4_SmoothNavMenu.master这个母版页文件,从Visual Studio 2010中打开它,首先在头部区域,添加一个<%@ Register %>标签,将之前创建的那个用户控件注册到页面上:

image

然后搜索母版页中一个ID为“PlaceHolderHorizontalNav”的ContentPlaceHolder控件,将里面的那个AspMenu控件删除掉(它就是母版页上原本用来显示顶部导航菜单的控件),然后将我们创建的用户控件添加到这个地方:

image

母版页就成功改好了!我们希望网站的管理员可以通过激活或停用一个Feature,就相应的启用或停用这个新建的母版页。所以,在Visual Studio 2010中,打开Features文件夹,将VS2010自动创建的Feature1改名为SmoothNavMenuFeature,双击它,在Feature设计器界面上为这个Feature添加更友好的说明信息:

image

在SmoothNavMenuFeature上点击鼠标右键,选择“添加事件接收器”,然后在生成的代码文件中,取消FeatureActivated和FeatureDeactivating方法的注释,并添加如下代码。简单来说,这些代码的作用是在管理员激活这个功能时,自动为网站应用新的母版页,并在管理员停用功能时,恢复网站原有的母版页。

image

大功告成!编译,部署,激活“Smooth Navigation Menu 导航菜单”功能,回到网站首页,应该就能看到网站的顶部导航菜单已经被替换成了我们创建的这个自定义导航菜单。

通过“网站设置 - 顶部链接栏”管理页面,你可以为顶部导航添加新的节点。但是,如果这个SharePoint网站不是一个发布网站,通过内置的“网站设置 - 顶部链接栏”管理页面是没法直接创建二级菜单的。嗯,实际上,这里有一个小技巧,通过直接在地址栏输入“http://网站url/_layouts/AreaNavigationSettings.aspx”,就能打开原本只有发布网站才能使用的导航设置页面,其中的“全局导航”就是网站的顶部导航,在这里是可以直接向“全局导航”添加二级菜单的:

image

然后,下面就是你可以看到的效果,这个菜单就是通过我们在上面所创建的自定义导航菜单所渲染出来的:

image

虽然这篇文章是以SharePoint 2010为基础进行演示,但其中绝大部分内容是可以工作在SharePoint 2007网站中的(当然肯定没有Visual Studio 2010如此之好的工具支持)。另外,对于导航中的权限、访问群组,并没有在这个示例中有所体现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_899880.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hexo+Github/Gitee搭建静态网站博客

前言 Hexo是一个快速&#xff0c;简单&#xff0c;功能强大的开源博客框架。 GitHub/Gitee Pages 是一个国内外静态资源网站。 两者结合可以搭建用户自己的静态网站。 搭建hexo 安装node.js 根据操作系统&#xff0c;在官网下载对应的安装包&#xff0c;地址为:node.js。 下…

响应式Web设计帮助移动终端访问网站

2012年被称为智能手机年。根据最近一份调查显示&#xff0c;美国的智能手机覆盖率已达50%。现在确实是提升移动终端用户体验的大好时机。如果你正运营一个网站&#xff0c;那就必须有一个响应式的Web设计&#xff0c;以便可以从移动终端上很好地访问你的网站。如果你还没意识到…

循序渐进BootstrapVue,开发公司门户网站(6)--- 门户网站后端内容管理

我们在做门户网站的时候&#xff0c;如果网站的内容可以动态从后端进行管理&#xff0c;那么调整网站内容就非常方便&#xff0c;有时候如一些公司新闻、产品信息、轮播广告信息等都需要动态调整的&#xff0c;有一个方便的后端内容管理是非常方便的。本篇随笔介绍门户网站的后…

python3.6爬虫案例:爬取某网站所有PPT(上)。

写在前面 这次实现之前的flag&#xff1a;爬取第一ppt网站的所有PPT&#xff0c;当然网站中有其他很多的学习资料&#xff0c;这次只爬取PPT。不仅可以平时做模板演示用&#xff0c;还可以练习爬虫&#xff0c;岂不美滋滋。闲话不多说&#xff0c;进入正题。 先来说下网站&am…

python3.6爬虫案例:爬取某网站所有PPT(下)。

上篇博客&#xff1a;python3.6爬虫案例&#xff1a;爬取某网站所有PPT&#xff08;上&#xff09;给大家介绍了爬取&#xff08;http://www.1ppt.com/&#xff09;网站中的ppt文件&#xff0c;爬下来的文件如下&#xff1a; 所以&#xff0c;我们就要考虑将其名称修改为其在网…

利用Python爬取妙笔阁小说网站的小说信息并保存为txt和csv格式

本次爬取的是妙笔阁小说网仙侠系列中所有小说的信息&#xff0c;打开网页会看到如下图所示的小说列表。 根据列表&#xff0c;选择爬取小说的书名、作者、最新更新、简介这四项信息。 在爬取之前&#xff0c;为了防止网站禁止爬取&#xff0c;需构造访问的请求头&#xff0…

仿360网站广告实现换肤特效

1、新建一个web项目&#xff0c;index.jsp同级目录下放jquery插件和top_right.png图片 2、index.jsp页面代码 <% page language"java" import"java.util.*" pageEncoding"utf-8"%> <% String path request.getContextPath(); String b…

仿360小说网站的源码设计实现

360首页检索小说效果如下&#xff1a; 个人完成编写的schoolnet校园网主页如下 在小说模块中&#xff0c;包括&#xff1a;小说类别编号&#xff1a;a、校园爱情 b、动漫同人 c、校园魔法 d、轻小说 e、校园励志 f、校园修真 g、名人传记 h、古典小说 …

基于仿360小说网站(校园网)的源码设计实现(升级版)

基于博文仿360小说网站的源码设计实现对小说网站的源码更新升级&#xff08;动漫小说网&#xff09;。 网站PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计&#xff1a; 主要包含小说id,章节id,类型ID,小说名称,章节名称,作者,缩略图,图片地址…

动漫网站源码设计与实现

已完成编写的Sky动漫网主页如下 PC电脑端效果截图&#xff1a; APP手机端效果截图&#xff1a; 数据库相关表设计如下&#xff1a; 主要有&#xff1a;动漫主体信息表、视频播放源表、文章资讯表、主题专辑表、经典语录表、图片图集表、评论表等等 信息采集使用jsoup爬取 各…

第二次作业------仿制网站

码云链接&#xff1a;https://gitee.com/eiumc123/12.git 百度云链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1ej-JvlRfRYe8KzGje-ULOQ 提取码&#xff1a;fnmv &#xff08;文件中有视频&#xff0c;过大无法上传到码云&#xff0c;所以。。。&#xff09; <…

怎么在树莓派上搭建web网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

怎么在树莓派上搭建WordPress博客网站,并发布到外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何为树莓派上的WordPress博客网站配置自己的域名,并且外网可访问?

系列文章 怎么在树莓派上搭建web网站&#xff0c;并发布到外网可访问&#xff1f;怎么在树莓派上搭建WordPress博客网站&#xff0c;并发布到外网可访问&#xff1f;如何为树莓派上的WordPress博客网站配置自己的域名&#xff0c;并且外网可访问&#xff1f;如何在局域网外SSH…

如何在树莓派上搭建网站,并发布上线(1)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(2)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(3)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建网站,并发布上线(4)

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 3-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…

如何在树莓派上搭建WordPress网站 4-5

系列文章 如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;1&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;2&#xff09;如何在树莓派上搭建网站&#xff0c;并发布上线&#xff08;3&#xff09;如何在树莓派上搭建网站&#xff0c;并发布…