SharePoint BreadCrumb

SharePoint BreadCrumb

什么是BreadCrumb导航

=====================

Breadcrumbs 典型地会水平低在网页的顶部出现, 通常在title栏或者headers栏的下方. 他们提供链接来回到之前用户导航路径上的任何一个页面- 或者是提供层次的站点结构- 当前页面的父页面. Breadcrumbs提供给用户一个路径线索来回到起始点上. 通常用大于号(>)来做层次间的分隔符, 有些设计者或许活用另外的字型(比如说>>), 或者各种不同的图形化的方案.

 

典型地breakcrumb看起来像这样:

Home page > Section page > Subsection page

 

BreadCrumb的由来

====================

BreadCrumb的意思是面包屑, 其作为站点导航的意义源自格林童话《亨赛尔与格莱特》.

 

很久很久以前,在大森林的边上住着一个贫穷的樵夫,他妻子和两个孩子与他相依为命。他的儿子名叫汉赛尔,女儿名叫格莱特。后来樵夫的妻子去世了,他又给孩子们娶了一个后母。后母计划把两个孩子带到森林的深处,然后趁他们睡着的时候跑掉。汉赛尔无意中知道了后母的计划,于是偷偷地把一块面包藏在了口袋里。

在去森林的路上,汉赛尔悄悄地捏碎了他的面包,并不时地停下脚步,把碎面包屑撒在路上。后母顺利地趁孩子们睡着的时候溜掉了,汉赛尔和格莱特醒来已是一片漆黑。汉赛尔安慰他的妹妹说:“等月亮一出来,我们就看得见我撒在地上的面包屑了,它一定会指给我们回家的路。”但是当月亮升起来时,他们在地上却怎么也找不到一点面包屑了,原来它们都被那些在树林里、田野上飞来飞去的鸟儿一点点地啄食了。

 

这是《格林童话》中所描述的与面包屑有关的故事。不知道从哪一天开始,汉赛尔的面包屑开始悄悄地出现在某个网站的导航位置上,然后迅速地撒遍了全世界,变成了今天大家所熟知的“面包屑导航”。

 

SharePoint Breadcrumb

====================

与许多其他的web 应用程序一样, SharePoint也是用”Breadcrumbs”来导航的. 这是一系列的链接, 既告诉你现在正处于网站的哪个等级, 也告诉你是如何到达这里的. 而SharePoint两个都用.

ownnav-doc

你在这里可以看到两个, 一个在左上角, 另一个在大大的Document上方. 但是稍等一下, master page怎么show给我们两个Breadcrumbs? 而你只在网站的一个等级之中呀, 那么那两个是怎么回事儿? 在Technet上的The Planning & Architecture文档这样说:

 

“default.master master page, 被用来展现表单和查看页面, 包括两个breadcrumb控件, 一个global breadcrumb控件只包括站点, 还有一个content breadcrumb包含站点和当前页面. 有些collaboration站点模板, 比如Team Site Template, 也会在网页上包含两个breakcrumbs控件”

 

然而, 这种说法还不完整. 我经常发现我整看着这样的导航:

parent-nav-doc

在这幅图中, 我在一个叫做”Parent Nav”的子站点里的文档库中. 而这里的’global’ breadcrumb控件却仍只show给我顶级站点, 而且’content’

breadcrumb控件却又在它的链接里包含了两个站点. 这让我感到有点迷惑- 到底是什么使得上下两个breadcrumb不一样的?

 

好吧, 我站点中的名字给了你一个线索, 告诉你展现的站点终结的部分有什么不同- 是否它继承了父站点的导航, 或者它拥有它自己的导航. 这个是在站点创建的时候设置好的:

menu1

 

或者是在站点配置页面上修改. 你将要看到的, 取决于你是否在使用publishing feature:

menu2

 

或者是

topnavsettings1

 

如果你选择你想使用父站点的链接, 那么它就像是你从父站点的”导航上下文”(navigational context)断开了. Content breadcrumb(或Title Breadcrumb)(也就是在master page中的PlaceHolderTitleBreadcrumb placeholder中的那一个)就会仅仅从这个心的context开始, 所以他们看起来更短. 然而现在Global Breadcrumb既展现出了父context, 又展现了当前站点. 这在下面可以看到, 两个站点在同一个等级. 但是更靠下的图中, 站点并没有继承父站点的导航.

parent-nav-doc

继承了父站点导航的站点

 

ownnav-doc

没有继承父站点导航的站点

 

现在, 观察者你应该已经注意到我所说的是contexts, 而不是sites. 这是因为我试着用了四层深的站点结构, 让我们用A > B > C > D来表示这种站点结构. 我让B和D使用他们自己的导航(也就是不继承父站点的导航). 这意味着C会从B继承. 如果我们查看最底层的站点D, 那么导航栏中会如何显示呢? global Breadcrumb会显示“A > B > C > D“, 还是 “A > B > D“呢?

 

嗯, 稍后再解开这个谜题. 这看起来:

SPSiteMapProvider (它为global breadcrumb提供entries)提供了站点架构中那些使用它们自己导航的站点的线索.

SPContentMapProvider (它为title Breadcrumb提供entries), 提供了站点架构中那些从父站点继承了导航的站点的线索.

 

所以呢, 你就被这两个breadcrumb给弄糊涂了. 然而, 这样的设计是有优势的, 那就是在很深的结构中, 你可以从某种程度上”隐藏”掉一些中间的层次, 就像我们上面的测试中对C站点所做的那样.

 

一个添加上来的复杂度- 页面自己的Breadcrumb

======================

好了, 我们已经讨论过在master page中可以找到的两种典型的breadcrumb了. 还有另外一种, 当然, 它会让我们更加迷惑. 实际上这个可以在某些content page上找得到, 但在master page上却找不到. 在下面的截屏中, 所有在红线右面和下面的部分都是page content, 不是master page的一部分.

third-breadcrumb

 

好了, 这里又发生了什么呢? 嗯, 首先, 这个页面为PlaceHolderTitleBreadcrumb定义了空的内容. 在master page中有content placeholders, 它们可以拥有默认的内容. 页面本身可以为content placeholders定义内容, 这会覆盖本来的内容, 这会使得我们默认的content breadcrumb从页面上消失. 然后, 它就定义了自己的breadcrumb, 其中包含有自己的内容. 很多页面这么做- 你collaboration站点的首页就是这样做的. 但是他们为什么会需要自己的breadcrumb呢?

 

嗯, 为了查明这一点, 我黑掉了页面中的一个, 黑掉之后, 这个页面永远都显示title breadcrumb. 我观察到我根站点的home页面上发生的第一件事儿就是: breadcrumb是“Site > Pages > Default.aspx“.  从技术上说, 这是正确的, 确实是显示的这个页面, 但是这并不与页面的URL匹配, 而且我能看得到这让用户比较迷惑. 每次他们点击首页的时候, 他们都被告诉说正处在一个两层深的页面里.

 

我不明白的是, 为什么页面不仅仅是用自己的breadcrumb来覆盖掉普通的Title Breadcrumb. 我的意思是, 它本可以这么做的, 然而, 我们的title breadcrumb被”nothing”给覆盖了, 所以它并不显示.  

 

Breadcrumb (navigation)

http://en.wikipedia.org/wiki/Breadcrumb_(navigation)

‘Breadcrumbs’ Articles Category

http://www.novolocus.com/category/sharepoint/branding/breadcrumbs/

Plan site navigation (Office SharePoint Server)

http://technet.microsoft.com/en-us/library/cc262951.aspx

What the heck is going on with SharePoint Breadcrumbs?

http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/110805.html原文链接:https://javaforall.net

(0)
上一篇 2021年8月5日 上午11:00
下一篇 2021年8月5日 下午12:00


相关推荐

  • Kali linux 安装pycharm及图标[通俗易懂]

    Kali linux 安装pycharm及图标[通俗易懂]解决方法:在终端输入以下命令行:sudogedit/usr/share/applications/Pycharm.desktop1进入gedit文档界面然后将里面的内容复制成:[DesktopEntry]Type=ApplicationName=PycharmGenericName=Pycharm3Comment=Pycharm3:ThePythonIDEExec=…

    2022年10月18日
    4
  • token实现验证登录(token如何使用)

    1.场景还原可能还有很多小伙伴对token概念朦朦胧胧,今天笔者以项目中的用户登录的token验证需求跟大家讲讲其中的来龙去脉,希望能够理清大伙的思路。2.需求分析这个需求可能早已是老生常谈,但我觉得它永远也不会过时①谷歌浏览器:login.html—->index.html;②然后复制index.html的地址在IE浏览器地址栏上,这时普遍网站都会使访问界面直接

    2022年4月14日
    292
  • 收藏几款好用的网页下载工具(网页下载器)「建议收藏」

    收藏几款好用的网页下载工具(网页下载器)「建议收藏」收藏几款好用的网页下载工具(网页下载器)引言webzipTeleportUltraTeleportUltra小飞兔下载MihovPictureDownloaderWinHTTrackHTTrack仿站小工具引言有的人利用网页下载工具下载网站到本地进行慢慢的欣赏,有的人利用下载工具创建垃圾站。不管你是出于什么样的目的,下面这些工具软件你可以会需要。webzip一款国外的网页下载器,把一个网站下载并压缩到一个单独的ZIP文件中,可以帮您将某个站台全部或部份之资料以ZIP格式压缩起来,可供你日后

    2022年6月11日
    1.0K
  • linux练习题

    观察系统当前进程的运行情况的命令是():A、freeB、dmesgC、topD、last答案:http://hovertree.com/tiku/bjag/foxg5n0q.htmLinux系统

    2021年12月28日
    36
  • CSS 伪类: 什么是 CSS 伪类?CSS 伪类怎么分类? CSS 伪类有哪些?以及分类对应的伪类

    CSS 伪类: 什么是 CSS 伪类?CSS 伪类怎么分类? CSS 伪类有哪些?以及分类对应的伪类本章讲解的内容为 CSS 伪类 废话不多说 直接上代码以及图例 为了让大家方便阅读 都有自己验证过程的一些图片作为分享 一 什么是 CSS 伪类 1 CSS 伪类是用来添加一些 选择器 的特殊效果 特殊状态 2 伪类实际使用场景举例 1 设置鼠标悬停在元素上时的样式 2 为已访问和未访问链接设置不同的样式 3 设置元素获得焦点时的样式 二 CSS 伪类选择器的分类 4 类 1 动态伪类选择器 2 UI 元素状态伪类选

    2026年3月17日
    2
  • GLM-4.5-Air深度解析:轻量级AI助手的新标杆

    GLM-4.5-Air深度解析:轻量级AI助手的新标杆

    2026年3月12日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号