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

news/2024/5/10 3:16:17/文章来源:https://blog.csdn.net/jackljf/article/details/19909963

转:http://kaneboy.blog.51cto.com/1308893/397779

相信不少人都希望把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_746681.aspx

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

相关文章

Sharepoint网站创建自定义导航全记录

转&#xff1a;http://tech.it168.com/a2009/1207/820/000000820524_all.shtml 【IT168 技术文档】在一个Sharepoint网站中可以创建子网站&#xff0c;页面&#xff0c;文档库等等&#xff0c;下面我们详细介绍创建页面导航和下拉菜单的过程。 1.要激活一个发布功能的Feature。…

在SharePoint 2010中创建网站的权限级别

转&#xff1a;http://www.360sps.com/Item/CreatePermissionLevels.aspx 权限级别是SharePoint 2010新增加的功能&#xff0c;使我们对权限的设置又提高了一个层次。SharePoint 2010的权限级别指的是可分配给用户或用户组的单个权限组。SharePoint 2010自带的权限级别有&…

深度学习相关网站链接与参考资料

http://deeplearning.stanford.edu/wiki/index.php/神经网络 https://arxiv.org/list/cs.AI/recent https://www.52ml.net/18635.html http://neuralnetworksanddeeplearning.com/ https://github.com/tigerneil/neural-networks-and-deep-learning-zh-cn http://www.hank…

21个为您的网站和博客提供的免费视频播放器

很多设计师在都会在他们的网站使用视频播放器。在线视频播放器无需为简单的用户和Web开发人员提供过多的介绍&#xff0c;它简单易用&#xff0c;为您建站时提供了灵活性和创造性&#xff0c;您可以添加无限数量的视频&#xff0c;并根据你的想法安排它们的专辑标题、艺术家的名…

网站重构之配置文件分解

转&#xff1a;http://www.cnblogs.com/ASPNET2008/archive/2010/05/04/1727538.html 最近赶上公司重构网站,架构组的同事为提高web部门的开发效率,总结出了一些不错的经验&#xff0c;本人也是直接受益者&#xff0c;为此用下面几篇文章来与大家分享。 这一篇&#xff0c;我想…

优秀网页设计:别出心裁的创意网站导航菜单

导航菜单是网站重要的组成部分&#xff0c;关系着网站的可用性和用户体验。一个有吸引力的导航能够吸引用户去浏览更多的网站内容&#xff0c;增加用户在网站的停留时间。为了让导航能够和网页内容完美的融合在一起&#xff0c;设计前需要设仔细分析网页结构。下面收集了30佳别…

互联网网站的反爬虫策略浅析

因为搜索引擎的流行&#xff0c;网络爬虫已经成了很普及网络技术&#xff0c;除了专门做搜索的Google&#xff0c;Yahoo&#xff0c;微软&#xff0c;百度以外&#xff0c;几乎每个大型门户网站都有自己的搜索引擎&#xff0c;大大小小叫得出来名字得就几十种&#xff0c;还有各…

这是一个神奇(神器)的网站

只要想不到&#xff0c;没有g友做不到 PaperWriting网站地址

大型网站动态应用系统架构(转)

原文在这里。 动态应用&#xff0c;是相对于网站静态内容而言&#xff0c;是指以c/c、php、Java、perl、.net等服务器端语言开发的网络应用软件&#xff0c;比如论坛、网络相册、交友、BLOG等常见应用。动态应用系统通常与数据库系统、缓存系统、分布式存储系统等密不可分。 大…

Python爬虫之网站验证码识别(三)

视频链接&#xff1a;Python爬虫7天速成&#xff08;2020全新合集&#xff09;无私分享 Python: 章节p29-p31 文章目录前言一、云打码平台使用流程操作流程二、代码编写⭐2.1 使用超级鹰云平台2.2 实战演练⭐总结前言 验证码和爬虫之间的爱恨情仇&#xff1f; 门户网站所提供的…

asp.net 1.1网站开发配置出现”Visual Studio .NET 无法创建或打开应用程序”解决方法...

可能的解决方案&#xff1a; 1.注册.net framework 1.1 C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_regiis /i 2,如果配置的改网站端口以前曾经有其他网站占用过改端口&#xff0c;删除一下目录 C:\Documents and Settings\Administrator\VSWebCache\[计算机名]-[端…

IIS企业案例系列之四:发布多个网站之方案二

方案2&#xff1a;多端口发布网站到外网&#xff0c;默认发布不加密的网站是80端口&#xff0c;下面我们测试用81端口发布一个新的网站&#xff1a;www.iSusan.com,并绑定IP地址192.168.2.20&#xff0c;具体步骤如下&#xff1a;1、下面添加一个新的网站Susan在C盘Susan文件夹…

黄聪:WordPress 多站点建站教程(一):怎样开启WordPress多站点功能,实现手机移动端主题开发,与主站用户数据共享...

为了开发手机移动端的wordpress&#xff0c;需要使用Wordpress的多站点功能。 1、打开WordPress根目录下的wp-config.php文件&#xff0c; 在文件的任何位置加上以下内容&#xff1a; define(WP_ALLOW_MULTISITE, true); // 建议加到<code>/* Thats all, stop editing! H…

建站过程中服务器系统卡顿,网站卡顿和服务器有关系吗?

首先我们收一下网站出现卡顿的情况&#xff0c;主要有以下几种前况&#xff1a;1、是百网速原因;2、是浏览器缓存原因&#xff0c;清一下浏览器缓存就好;3、是服务器原因;服务器不稳定影响的。但是网站卡顿和服务器有关系吗?怎么解决服务器卡的问题第一&#xff0c;您要是本地…

服务器怎么解绑网站域名,服务器解绑ip

服务器解绑ip 内容精选换一换通过将弹性公网IP与弹性网卡绑定&#xff0c;您可以构建更灵活&#xff0c;扩展性更强的IT解决方案。弹性网卡本身提供一个私网IP&#xff0c;与弹性公网IP绑定后&#xff0c;相当于同时具备了私网IP和公网IP。弹性网卡和弹性公网IP的绑定关系不随弹…

洛奇英雄传老福单机版服务器不显示,洛奇英雄传官方网站

这一次叫老福跪下唱征服&#xff01;《洛奇英雄传》公开强化系统全球首发&#xff0c;更有一系列的强化福利、强化活动等你来玩&#xff01;国庆小长假&#xff0c;我们一起围观砰砰砰&#xff01;公开强化系统全球首发本次更新之后&#xff0c;至指定地点进行强化的玩家&#…

html+css静态网站_什么是Web开发?什么是静态站点?

在九十年代初期&#xff0c;浏览网站内容的浏览器相对简单&#xff0c;所以网站必须也相应地简单易用。而当时网站主要是没有字体类型的文本&#xff0c;任何形式的图像都很重要。最早期的网站是静态的&#xff0c;无法提供交互式、动画或个性化等内容。为了追求更复杂的Web内容…

Python爬虫抓取某音乐网站MP3(下载歌曲、存入Sqlite)

Python爬虫抓取某音乐网站MP3&#xff08;下载歌曲、存入Sqlite&#xff09; 最近右胳膊受伤&#xff0c;打了石膏在家休息。为了实现之前的想法&#xff0c;就用左手打字、写代码&#xff0c;查资料完成了这个资源小爬虫。网页爬虫&#xff0c; 最主要的是协议分析&#xff08…

关于onMouseOver出现提示文字的多行处理办法

有时候我们需要对超链接<a href"路径" title"提示文字">链接文字</a>里边的提示文字使用换行&#xff08;即需要多行提示&#xff09;&#xff0c;可是title,alt之类里边的提示内容是不支持HTML书写的&#xff0c;怎么解决&#xff1f;很容易&…

大型网站架构演化发展历程

前面已经描述了大型网站系统的特点&#xff0c;而对一个大型网站系统&#xff0c;其架构也是重要的一个环节。 大型网站技术主要的挑战来自于庞大的用户、高并发以及海量的数据这三个方面。大型网站的形成就像一颗大树的成长&#xff0c;历尽长时间的磨练&#xff0c;最后枝繁叶…