<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andy Burns' SharePoint Blog &#187; Breadcrumbs</title>
	<atom:link href="http://www.novolocus.com/tag/breadcrumbs/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.novolocus.com</link>
	<description>Whatever I'm working on, really...</description>
	<lastBuildDate>Mon, 08 Feb 2010 08:00:22 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Breadcrumbs in Central Admin and Application Pages</title>
		<link>http://www.novolocus.com/2010/02/05/breadcrumbs-in-central-admin-and-application-pages/</link>
		<comments>http://www.novolocus.com/2010/02/05/breadcrumbs-in-central-admin-and-application-pages/#comments</comments>
		<pubDate>Fri, 05 Feb 2010 08:22:31 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Application Pages]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Central Admin]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=1779</guid>
		<description><![CDATA[This is a reminder of a couple of problems that I&#8217;ve come across a few times &#8211; that the breadcrumbs in LAYOUTS pages and central admin are a bit tricky.
Breadcrumbs in Layouts pages are driven by an XML file in your IIS web app. Now, you can add entries which are merged into that &#8211; a [...]]]></description>
			<content:encoded><![CDATA[<p>This is a reminder of a couple of problems that I&#8217;ve come across a few times &#8211; that the breadcrumbs in LAYOUTS pages and central admin are a bit tricky.</p>
<p>Breadcrumbs in Layouts pages are driven by an XML file in your IIS web app. Now, you can add entries which are merged into that &#8211; a described by Jan Tielens&#8217; <a href="http://weblogs.asp.net/jan/archive/2008/04/16/adding-breadcrumb-navigation-to-sharepoint-application-pages-the-easy-way.aspx">Adding Breadcrumb to application pages in SharePoint &#8211; the easy way</a>. However, this doesn&#8217;t cover the whole problem &#8211; he goes on to describe <a href="http://weblogs.asp.net/jan/archive/2008/10/10/adding-breadcrumb-navigation-to-application-pages-in-sharepoint-central-administration.aspx">dealing with Central Admin </a>too.</p>
<p>However, the really tricky bit of this that though we can define our own sitemap.xml file, it&#8217;s kind of hard to merge with the existing one. Specifically, the problem is that to merge &#8216;our additions&#8217; and the &#8216;existing file&#8217;, we have to call a function <strong><a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebservice.applyapplicationcontenttolocalserver.aspx">ApplyApplicationContentToLocalServer</a></strong>, and as <a href="http://sharepointinterface.com/2009/06/06/the-applyapplicationcontenttolocalserver-method-and-why-it-comes-up-short/">brilliantly described by Sean McDonough</a>, the word &#8216;local&#8217; is a problem in this method &#8211; it only forces a merge of the files on one server. Not much use in a server farm.</p>
<p>Sean&#8217;s article describes his attempt at a fix &#8211; <a href="http://blobcachefarmflush.codeplex.com/SourceControl/changeset/view/53851#856355">using a one-time timer job</a>, and a fair bit of reverse engineering of the <strong>ApplyApplicationContentToLocalServer</strong> function. Also, it seems like Vince Rothwell has come up with <a href="http://blog.thekid.me.uk/archive/2007/01/17/configuring-the-breadcrumb-for-pages-in-layouts.aspx">a similar solution</a>, so it&#8217;s likely that this is a good approach.</p>
<p>A real pain to have to build so much to do such a simple task, though.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2010/02/05/breadcrumbs-in-central-admin-and-application-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using jQuery to fix the removal of the Title column of a list</title>
		<link>http://www.novolocus.com/2009/06/02/using-jquery-to-remove-the-title-of-a-list/</link>
		<comments>http://www.novolocus.com/2009/06/02/using-jquery-to-remove-the-title-of-a-list/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 12:20:52 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=1491</guid>
		<description><![CDATA[SharePoint List items all have a Title column (although it&#8217;s display name might be changed to something else). This Title column is a string, which is unfortunate as sometimes you really don&#8217;t need a string column on a list; this was the need I faced.
You can make a Title column not required:

Also, if you go [...]]]></description>
			<content:encoded><![CDATA[<p>SharePoint List items all have a <em>Title</em> column (although it&#8217;s display name might be changed to something else). This <em>Title</em> column is a string, which is unfortunate as sometimes you really don&#8217;t need a string column on a list; this was the need I faced.</p>
<p>You can make a <em>Title</em> column not required:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/turn-off-title-requirement.png"><img class="alignnone size-medium wp-image-1492" title="turn-off-title-requirement" src="http://www.novolocus.com/wp-content/uploads/2009/06/turn-off-title-requirement-300x205.png" alt="turn-off-title-requirement" width="300" height="205" /></a></p>
<p>Also, if you go to the &#8216;Advanced Settings&#8217; page of your list and &#8216;Allow management of Content Types&#8217; you can then go into your content types and <em>Hide</em> the <em>Title</em> column. This is okay &#8211; but the <em>Title</em> column is still there &#8211; it&#8217;s just being displayed with &#8220;(no title)&#8221;&#8230;<span id="more-1491"></span></p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/start.png"><img class="alignnone size-medium wp-image-1493" title="List View Showing Title" src="http://www.novolocus.com/wp-content/uploads/2009/06/start-300x71.png" alt="List View Showing Title" width="300" height="71" /></a></p>
<p>That&#8217;s not such a problem for views on a list &#8211; you can simply choose to not show the <em>Title</em> column. But unfortunately, some other pages (such as <em>EditForm.aspx</em> and <em>DispForm.aspx</em>) use the <em>Title</em> column in their title and navigation:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/original-edit-form.png"><img class="alignnone size-medium wp-image-1494" title="original-edit-form" src="http://www.novolocus.com/wp-content/uploads/2009/06/original-edit-form-300x113.png" alt="original-edit-form" width="300" height="113" /></a></p>
<p>&#8220;(no title)&#8221; sucks a bit, especially as we probably do have something better to use as a title. I decided to use jQuery to replace the &#8220;(no title)&#8221;s in the Edit and Display forms:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/code.png"><img class="alignnone size-medium wp-image-1495" title="code" src="http://www.novolocus.com/wp-content/uploads/2009/06/code-300x131.png" alt="code" width="300" height="131" /></a></p>
<p>Or, as text:</p>
<p><code>&lt;script language="javascript" type="text/javascript"&gt;<br />
$(document).ready(function() {<br />
var user = $("span[class='ms-entity-resolved'] &gt; span[id='content']");<br />
var userText = user.text();<br />
document.title = "Users - " + userText;<br />
var pageTitle = $("h2[class='ms-pagetitle']");<br />
var pageTitleHtml = pageTitle.html();<br />
pageTitle.html(pageTitleHtml.replace("(no title)",userText));<br />
var pageLink = $("td[class='ms-titlearea']");<br />
var pageLinkHtml = pageLink.html();<br />
pageLink.html(pageLinkHtml.replace("(no title)",userText));<br />
});<br />
&lt;/script&gt;</code></p>
<p>Here I&#8217;m getting the new title from my user field &#8211; but you might want to use another field. Whatever, the same principle of using jQuery to get the value would work.</p>
<p>Then I update the Browser&#8217;s title bar with the new title.</p>
<p>Next, I select the page title and replace &#8220;(no title)&#8221; with my new title, before writing the html back, and finally I repeat this with the &#8220;(no title)&#8221; link in the breadcrumb. The end result is:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/modified-edit-form.png"><img class="alignnone size-medium wp-image-1496" title="modified-edit-form" src="http://www.novolocus.com/wp-content/uploads/2009/06/modified-edit-form-300x114.png" alt="modified-edit-form" width="300" height="114" /></a></p>
<p>Nice. I repeated this for my <em>Dispform.aspx</em> too, though not the new Item form &#8211; it doesn&#8217;t display the title at all (as a new item doesn&#8217;t have one yet!) I also added an edit button to my list so that users can still edit these items:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/06/modified-list-view.png"><img class="alignnone size-medium wp-image-1497" title="modified-list-view" src="http://www.novolocus.com/wp-content/uploads/2009/06/modified-list-view-300x67.png" alt="modified-list-view" width="300" height="67" /></a></p>
<p>(And yes, there are other ways of dealing with this &#8211; building  proper custom edit and display forms, for example &#8211; but this is quite low effort)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2009/06/02/using-jquery-to-remove-the-title-of-a-list/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What do out-of-box pages do with their Breadcrumbs?</title>
		<link>http://www.novolocus.com/2009/04/01/what-do-out-of-box-pages-do-with-their-breadcrumbs/</link>
		<comments>http://www.novolocus.com/2009/04/01/what-do-out-of-box-pages-do-with-their-breadcrumbs/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 16:52:27 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Breadcrumbs]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=1210</guid>
		<description><![CDATA[As I&#8217;ve described before (and repeatedly bemoaned!) some page layouts hide the page level breadcrumb and display their own. Worse &#8211; they don&#8217;t all do this in the same way! All of this continues to feed my idea that you shouldn&#8217;t use any of the OOB publishing sites if you can help it.
However, sometimes we [...]]]></description>
			<content:encoded><![CDATA[<p>As I&#8217;ve described before (and repeatedly bemoaned!) <a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/">some page layouts hide the page level breadcrumb and display their own</a>. Worse &#8211; they don&#8217;t all do this in the same way! All of this continues to feed my idea that you<a href="http://www.novolocus.com/2009/03/02/pla-your-publishing-pages/"> shouldn&#8217;t use any of the OOB publishing sites if you can help it</a>.</p>
<p>However, sometimes we don&#8217;t have that luxury (i.e. I&#8217;ve never had that option) &#8211; so what do those crazy out-of-the-box page layouts do with their breadcrumbs? Well, Martijn Molegraaf has been <a href="http://martijnmolegraaf.blogspot.com/2009/01/sharepoint-breadcrumb-ignore-page-level.html">kind enough to provide a chart</a>. Nice one. And I feel your pain.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2009/04/01/what-do-out-of-box-pages-do-with-their-breadcrumbs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build page layouts without Breadcrumbs or a Title</title>
		<link>http://www.novolocus.com/2009/01/22/build-page-layouts-without-breadcrumbs-or-a-title/</link>
		<comments>http://www.novolocus.com/2009/01/22/build-page-layouts-without-breadcrumbs-or-a-title/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 17:19:22 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Page Layouts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=997</guid>
		<description><![CDATA[Right, so SharePoint uses pages and page layouts &#8211; I won&#8217;t talk about the different types, but ask a couple of questions that&#8217;ve come up a few times.

If I create a new page layout in SharePoint, how do I get rid of the breadcrumbs?
How can I get breadcrumbs, but like the home page?

Here&#8217;s how&#8230;
Some page [...]]]></description>
			<content:encoded><![CDATA[<p>Right, so SharePoint uses pages and page layouts &#8211; I won&#8217;t talk about the different types, but ask a couple of questions that&#8217;ve come up a few times.</p>
<ul>
<li>If I create a new page layout in SharePoint, how do I get rid of the breadcrumbs?</li>
<li>How can I get breadcrumbs, but like the home page?</li>
</ul>
<p>Here&#8217;s how&#8230;<span id="more-997"></span></p>
<p>Some page layouts don&#8217;t have space above the main content for a title, or for breadcrumbs.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/no-breadcrumbs-oob.png"><img class="alignnone size-medium wp-image-998" title="Out-of-box page with no title or breadcrumbs above the main content" src="http://www.novolocus.com/wp-content/uploads/2009/01/no-breadcrumbs-oob-300x94.png" alt="" width="300" height="94" /></a></p>
<p>By contrast, a lot of other pages do:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/with-breadcrumbs-oob-page-layout.png"><img class="alignnone size-medium wp-image-999" title="Out-of-box page layout with title and breadcrumbs" src="http://www.novolocus.com/wp-content/uploads/2009/01/with-breadcrumbs-oob-page-layout-300x79.png" alt="" width="300" height="79" /></a></p>
<p>So what happens when we create a new page layout in SharePoint Designer? Well, they have breadcrumbs, and room for a title:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-layout-in-ie.png"><img class="alignnone size-medium wp-image-1000" title="New Page Layout showing space for title, and breadcrumbs" src="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-layout-in-ie-300x155.png" alt="" width="300" height="155" /></a></p>
<p>So, how do I fix that? Well, go back to SharePoint Designer (you just created the page layout with it, right?) Let&#8217;s look at the code:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-layout.png"><img class="alignnone size-medium wp-image-1001" title="New Page Layout in SharePoint Designer" src="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-layout-300x258.png" alt="" width="300" height="258" /></a></p>
<p>Right, pretty straight forward &#8211; some content controls overriding the master page&#8217;s content placeholders. I&#8217;m assuming that you&#8217;re familiar with Master Pages in ASP.NET. Now, we can get rid of the breadcrumbs, title and the page image (which is sometimes shown on the left) by overriding those content controls. Paste this code into your page:</p>
<p><code>&lt;asp:Content ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" /&gt;<br />
&lt;asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"&gt;&lt;IMG SRC="/_layouts/images/blank.gif" width=1 height=1 alt=""&gt;&lt;/asp:Content&gt;<br />
&lt;asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server"/&gt;</code></p>
<p>What we&#8217;re doing there is setting those to empty content (or, for the Page image, an invisible 1 pixel image. No, I don&#8217;t know why, but that seems to be how SharePoint always does it)</p>
<p>Fine, what does this give?<br />
<a href="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-no-breadcrumbs-or-title.png"><img class="alignnone size-medium wp-image-1002" title="new-page-no-breadcrumbs-or-title" src="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-no-breadcrumbs-or-title-300x132.png" alt="" width="300" height="132" /></a></p>
<p>No breadcrumbs or title, but still a big gap. How do we get rid of that? Well, we can use CSS to shrink the gap. This CSS is inserted into the <strong>PlaceHolderAdditionalPageHead</strong></p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server"&gt;<br />
&lt;style&gt;<br />
TD.ms-titleareaframe, .ms-pagetitleareaframe { height: 10px; }<br />
Div.ms-titleareaframe { height: 100%;}<br />
.ms-pagetitleareaframe table { background: none; height: 10px; }<br />
&lt;/style&gt;<br />
&lt;/asp:Content&gt;</code></p>
<p>This CSS gets inserted in the header, and it&#8217;s just setting the height of that region to 10 pixels or so. Now we get:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-no-gap-at-top.png"><img class="alignnone size-medium wp-image-1003" title="new-page-no-gap-at-top" src="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-no-gap-at-top-300x94.png" alt="" width="300" height="94" /></a></p>
<p>Hmm. Nearly there &#8211; but the border isn&#8217;t right. There should be a 1pixel blue border at the top and left of the main content area. How does SharePoint normally do that?</p>
<p>Well, it cheats. The blue border comes from a table that is put into the main content area, and is set to fill the content area. For an example, put this code into your main content area:</p>
<p><code>&lt;table style="padding-top:0px;" border="0" cellpadding="0" cellspacing="0" ID="OuterZoneTable" width="100%"&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;<br />
Test Content<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;</code></p>
<p>It shows:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-looking-correct.png"><img class="alignnone size-medium wp-image-1004" title="new-page-looking-correct" src="http://www.novolocus.com/wp-content/uploads/2009/01/new-page-looking-correct-300x114.png" alt="" width="300" height="114" /></a></p>
<p>Now you can change this table to show the content you want!</p>
<p><strong>What if I want the breadcrumb in the main content area?</strong> Sort of like the home page to a collaboration site? Or even a team site?</p>
<p>Well, there are a couple of more steps. First off, replace the text you just put into your main content area with this:</p>
<p><code>&lt;table style="padding-top:0px;" border="0" cellpadding="0" cellspacing="0" ID="OuterZoneTable" width="100%"&gt;<br />
&lt;tr&gt;<br />
&lt;td class="ms-pagebreadcrumb"&gt;<br />
&lt;asp:SiteMapPath ID="ContentMap" Runat="server" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional"/&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;<br />
Test Content<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/table&gt;</code></p>
<p>This will show:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/breadcrumb-added-but-padded-within-the-page.png"><img class="alignnone size-medium wp-image-1005" title="breadcrumb-added-but-padded-within-the-page" src="http://www.novolocus.com/wp-content/uploads/2009/01/breadcrumb-added-but-padded-within-the-page-300x115.png" alt="" width="300" height="115" /></a></p>
<p>Nearly, but not quite. The breadcrumb is there, and styled right, but it is padded in from the edge of the page.</p>
<p>To get rid of the padding, we have to insert CSS content into another content placeholder. Add this to your page:</p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderBodyAreaClass" runat="server"&gt;<br />
&lt;style type="text/css"&gt;<br />
.ms-bodyareaframe { padding: 0px; }<br />
&lt;/style&gt;<br />
&lt;/asp:Content&gt;</code></p>
<p>And this produces:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2009/01/completed-page.png"><img class="alignnone size-medium wp-image-1006" title="completed-page" src="http://www.novolocus.com/wp-content/uploads/2009/01/completed-page-300x68.png" alt="" width="300" height="68" /></a></p>
<p>A completed page, with the breadcrumb in the main content area, and no title breadcrumb or title. Sure, I&#8217;ll have to build some padding into the table in my main content area, but this is simple HTML, and I&#8217;ll leave for the reader to figure out.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2009/01/22/build-page-layouts-without-breadcrumbs-or-a-title/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Limiting the levels shown in SharePoint Breadcrumbs</title>
		<link>http://www.novolocus.com/2008/06/11/limiting-the-levels-shown-in-sharepoint-breadcrumbs/</link>
		<comments>http://www.novolocus.com/2008/06/11/limiting-the-levels-shown-in-sharepoint-breadcrumbs/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 17:09:33 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=659</guid>
		<description><![CDATA[This was such a good question, I thought I&#8217;d reply in a post about it:
I am trying to limit the depth of the breadcrumbs. I have a sub sub sub subsite that I want breadcrumbs to show from that site and down one more level. I can make the breadcrumbs invisible using SPD but I [...]]]></description>
			<content:encoded><![CDATA[<p>This was <a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/#comment-1881">such a good question</a>, I thought I&#8217;d reply in a post about it:</p>
<blockquote><p>I am trying to limit the depth of the breadcrumbs. I have a sub sub sub subsite that I want breadcrumbs to show from that site and down one more level. I can make the breadcrumbs invisible using SPD but I wonder if I can make them limited … like we could in WSS 2. <em>- Jo Arnspiger</em></p></blockquote>
<p>Well, there are a couple of ways that spring to mind (there are many approaches, but these are probably the best two) &#8211; one that uses SharePoint Designer, and one that uses SharePoint&#8217;s own navigation configuration.</p>
<p>First off, let&#8217;s look at the SharePoint Designer route. If you go to your master page or page layout, you&#8217;ll see an ASP control called the <strong>SiteMapPath </strong>control. It has a property called <a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.sitemappath.parentlevelsdisplayed.aspx">ParentLevelsDisplayed</a>.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/06/breadcrumblevels.png"><img class="alignnone size-medium wp-image-660" title="breadcrumblevels" src="http://www.novolocus.com/wp-content/uploads/2008/06/breadcrumblevels-300x107.png" alt="A SiteMapPath control showing the ParentLevelsDisplayed property." width="300" height="107" /></a></p>
<p>Set that to a number, and that should be the maximum number of levels shown. If you set it to -1, it will show however many levels there are, which is it&#8217;s default.  (I&#8217;ve not tried it, but I&#8217;m pretty sure that&#8217;s the case). That&#8217;s probably what you want, but there is a problem &#8211; it&#8217;s not just your master page which defines the <strong>SiteMapPath </strong>control. There is one on most of the Publishing Page layouts that come out of the box too. Still, if you&#8217;re happy taking a little time to change all of them, then that&#8217;s probably fine.</p>
<p>The other problem is a little more fundamental &#8211; <strong>this setting will apply across your entire site collection.</strong> Well, okay, maybe not, but it&#8217;ll apply for all pages using that master page or page layouts&#8230;</p>
<p>Alternatively, you could change the Site&#8217;s navigation settings to get what you want. At the &#8216;<em>sub sub sub subsite</em>&#8216; you could change the site&#8217;s navigation setting to not inherit it&#8217;s top navigation settings from the parent site. This will add a level to the &#8216;Global Navigation&#8217; breadcrumb, but also make all URLs below the &#8216;<em>sub sub sub subsite</em>&#8216; start at that level. See my <a href="http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/">previous article</a> for an explanation.</p>
<p>The down side about this approach, though, is that it means <strong>all of your top navigation tabs will change</strong> &#8211; you really are breaking with the &#8216;navigation context&#8217; of the parent site. (That&#8217;s my term &#8211; I didn&#8217;t know what else to call it.) There is an example of this on the article linked to above.</p>
<p>A final note, these approaches do have two slightly different results &#8211; the first route is a &#8216;only show the last X items&#8217;, while the second is &#8216;chop all breadcrumbs below this site to start here&#8217;.</p>
<p>Anyway Jo, I hope that one of those is suitable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/06/11/limiting-the-levels-shown-in-sharepoint-breadcrumbs/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Breadcrumb Path Separator and Path Direction</title>
		<link>http://www.novolocus.com/2008/05/16/breadcrumb-path-separator-and-path-direction/</link>
		<comments>http://www.novolocus.com/2008/05/16/breadcrumb-path-separator-and-path-direction/#comments</comments>
		<pubDate>Fri, 16 May 2008 07:31:45 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=568</guid>
		<description><![CDATA[There are several settings you can apply to breadcrumbs in MOSS, although really some of these are really ASP.NET settings rather than most specific. Previously I&#8217;ve mentioned using different SiteMapProviders and rendering the current location as a link. Let&#8217;s have a look at another couple of settings:

(Yes, this screenshot shows some other settings &#8211; they&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>There are several settings you can apply to breadcrumbs in MOSS, although really some of these are really ASP.NET settings rather than most specific. Previously I&#8217;ve mentioned <a href="http://www.novolocus.com/2008/05/07/my-breadcrumbs-have-pages-default-aspx-in-them/">using different SiteMapProviders</a> and <a href="http://www.novolocus.com/2008/05/08/breadcrumbs-rendering-the-current-link/">rendering the current location as a link</a>. Let&#8217;s have a look at another couple of settings:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/05/breadcrumb-settings.png"><img class="alignnone size-medium wp-image-543" title="breadcrumb-settings" src="http://www.novolocus.com/wp-content/uploads/2008/05/breadcrumb-settings-300x127.png" alt="Examples of various breadcrumb settings and different SiteMapProvider\'s output" width="300" height="127" /></a></p>
<p><em>(Yes, this screenshot shows some other settings &#8211; they&#8217;re mentioned in the other articles)</em></p>
<p>Looking at the screenshot we can see how the Path Separator setting allows us to set what we want shown between nodes &#8211; rather than &#8221; &gt; &#8221; I&#8217;ve used &#8220;:&#8221;. Not sure when/why you&#8217;d want to change that, but I&#8217;m sure I&#8217;ll be given a design where that is useful sometime!</p>
<p>There&#8217;s also the Path Direction setting, which allows us to set whether the breadcrumb should have the current node on the left or right of the breadcrumb &#8211; hence the two settings, <em>RootToCurrent</em> and <em>CurrentToRoot</em>. Note, though, that the default path separator doesn&#8217;t swap from &#8221; &gt; &#8221; to &#8221; &lt; &#8220;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/05/16/breadcrumb-path-separator-and-path-direction/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Breadcrumbs &#8211; Rendering the current link</title>
		<link>http://www.novolocus.com/2008/05/08/breadcrumbs-rendering-the-current-link/</link>
		<comments>http://www.novolocus.com/2008/05/08/breadcrumbs-rendering-the-current-link/#comments</comments>
		<pubDate>Thu, 08 May 2008 09:00:51 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=542</guid>
		<description><![CDATA[So one of yesterdays posts brought up a question about rendering the link to the current site. This sort of set me investigating.
There are a number of settings you can use with the ASP:SiteMapPath control. One is the RenderCurrentLink option. This defines whether the current location indicator in the breadcrumb should be shown as a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.novolocus.com/2008/05/07/my-breadcrumbs-have-pages-default-aspx-in-them/">So one of yesterdays posts</a> brought up a question about rendering the link to the current site. This sort of set me investigating.</p>
<p>There are a number of settings you can use with the ASP:SiteMapPath control. One is the RenderCurrentLink option. This defines whether the current location indicator in the breadcrumb should be shown as a link.</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/05/breadcrumb-settings.png"><img class="alignnone size-medium wp-image-543" title="breadcrumb-settings" src="http://www.novolocus.com/wp-content/uploads/2008/05/breadcrumb-settings-300x127.png" alt="Examples of various breadcrumb settings and different SiteMapProvider\'s output" width="300" height="127" /></a></p>
<p><em>(Yes, this screenshot shows other settings &#8211; I&#8217;ll discuss them in other posts)</em></p>
<p>Looking at the top 4 rows you can see the effect of the the <em>RenderCurrentLink </em>option &#8211; it determines whether the last item is displayed as a link or not.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/05/08/breadcrumbs-rendering-the-current-link/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My Breadcrumbs have &#8220;&gt; Pages &gt; default.aspx&#8221; in them</title>
		<link>http://www.novolocus.com/2008/05/07/my-breadcrumbs-have-pages-default-aspx-in-them/</link>
		<comments>http://www.novolocus.com/2008/05/07/my-breadcrumbs-have-pages-default-aspx-in-them/#comments</comments>
		<pubDate>Wed, 07 May 2008 12:59:23 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Page Layouts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=533</guid>
		<description><![CDATA[I&#8217;ve written about this before, but really it was just an addendum to another point I was trying to make. It might be worth bringing out as a post in itself.
ASP.NET navigation controls take data from a navigation provider, and render it into HTML. The breadcrumbs used in SharePoint use the one navigation control, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/">I&#8217;ve written about this before</a>, but really it was just an addendum to another point I was trying to make. It might be worth bringing out as a post in itself.</p>
<p>ASP.NET navigation controls take data from a navigation provider, and render it into HTML. The breadcrumbs used in SharePoint use the one navigation control, but give it different navigation providers&#8230;</p>
<blockquote><p>&#8230; the point relevant to whether or not the “&gt; Pages &gt; default.aspx” is displayed in the breadcrumbs is the <em>SiteMapProvider</em>. The <em>CurrentNavSiteMapProviderNoEncode </em>provider doesn’t seem to include the ‘Pages’ bit of the path &#8211; hence it is used by the page layouts. The Default.master’s <em>SPContentMapProvider </em>provides a breadcrumb that includes the ‘Pages’.</p></blockquote>
<p>So, if your page is using a breadcrumb such as&#8230;</p>
<p><code> &lt;asp:SiteMapPath</code><code> id="ContentMap"</code><code> SiteMapProvider="SPContentMapProvider" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/&gt;</code></p>
<p>&#8230; then your breadcrumb will include the &#8220;&gt; Pages &gt; default.aspx&#8221;. <strong>Note that this is the default content of the breadcrumb in default.master.</strong> Thus, if you&#8217;re creating a brand new page layout, you&#8217;ll probably want to override that content using an ASP.NET Content control something like this&#8230;</p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server"&gt; </code></p>
<p><code>&lt;asp:SiteMapPath ID="siteMapPath" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional"</code><code> Runat="server"</code><code>/&gt; </code></p>
<p><code>&lt;/asp:Content&gt;</code></p>
<p>This code defines a content control that overrides the default content for the Title Breadcrumb. It uses the <em>CurrentNavSiteMapProviderNoEncode </em>(nice name!) navigation provider, and so won&#8217;t show the &#8220;&gt; Pages &gt; default.aspx&#8221; bit in the breadcrumb.</p>
<p>So, in short, when you&#8217;re creating a new Page Layout, make sure you override the Title Breadcrumb with something that uses the <em>CurrentNavSiteMapProviderNoEncode</em> provider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/05/07/my-breadcrumbs-have-pages-default-aspx-in-them/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Are SharePoint Breadcrumbs completely wrong?</title>
		<link>http://www.novolocus.com/2008/05/02/are-sharepoint-breadcrumbs-completely-wrong/</link>
		<comments>http://www.novolocus.com/2008/05/02/are-sharepoint-breadcrumbs-completely-wrong/#comments</comments>
		<pubDate>Fri, 02 May 2008 11:39:46 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Branding]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=528</guid>
		<description><![CDATA[I upgraded the version of Wordpress I&#8217;m running recently and I enabled statistics on the blog. It&#8217;s been a bit of an eye-opener. My posts on &#8216;What the heck is going on with SharePoint Breadcrumbs&#8216; and &#8216;More SharePoint Breadcrumbs WTF&#8216; have together more hits that any of my other articles, and both are visited about [...]]]></description>
			<content:encoded><![CDATA[<p>I upgraded the version of Wordpress I&#8217;m running recently and I enabled statistics on the blog. It&#8217;s been a bit of an eye-opener. My posts on &#8216;<a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/">What the heck is going on with SharePoint Breadcrumbs</a>&#8216; and &#8216;<a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/">More SharePoint Breadcrumbs WTF</a>&#8216; have together more hits that any of my other articles, and both are visited about evenly.</p>
<p>This is pretty interesting. Breadcrumbs <em>should</em> be pretty simple. I mean, we all use them on the web, probably every day, and often without noticing. So how come people are clearly looking up information about SharePoint breadcrumbs? Clearly something is wrong with them.</p>
<p>So this set me thinking &#8211; what&#8217;s wrong with them? And here&#8217;s what I could think of:</p>
<ul>
<li>There are two breadcrumbs. You&#8217;ve got the Global breadcrumb, and then the PlaceholderTitle breadcrumb. Seriously, how many websites do you come across that have two?<br />
<img src="http://www.novolocus.com/wp-content/uploads/2008/02/ownnav-doc.png" alt="Image showing the Global and Title Breadcrumbs" width="408" height="260" /></li>
<li>&#8216;Site&#8217; levels of the hierarchy can appear in one or the other breadcrumb. Depending on whether or not your navigation inherits it&#8217;s navigation from it&#8217;s parent site, <a href="http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/">the &#8216;Site&#8217; links can appear in the global or title breadcrumbs</a>. Thus, there&#8217;s no consistency as to where a site appears &#8211; if it appears at all! I can see <em>why</em> it&#8217;s been built this way &#8211; essentially it allows us to &#8217;skip&#8217; levels in the site hierarchy as shown on the global breadcrumb, and it shortens the title breadcrumb. I wonder if this wouldn&#8217;t be better facilitated by a &#8217;show in Global breadcrumb&#8217; site setting. Or just show all sites in the path to the site?</li>
<li>Why is what is shown in the breadcrumbs tied to what is shown in the site&#8217;s top navigation? That&#8217;s just confusing.</li>
<li>Having some breadcrumbs in the Page Layout (i.e. in the main content area) and others coming from the master page is just plain confusing.</li>
</ul>
<p>I don&#8217;t quite know what the answer to this is; after all, we need a way to navigate back up the site hierarchy, though we might not <em>always</em> want to allow that. And breadcrumbs could get very long, so yes, maybe we want to skip levels. But I think I&#8217;d be tempted by showing all sites in the Global navigation. This would also divorce the breadcrumb from the top navigation settings, and I think would be easier.</p>
<p>And if the Global navigation gets too long? Well, that seems quite possible. In that case, how about a setting on each site to &#8216;Display in Menu in the Breadcrumb&#8217; to give something like this:</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/05/single-breadcrumb-concept.png"><img class="alignnone size-medium wp-image-529" title="single-breadcrumb-concept" src="http://www.novolocus.com/wp-content/uploads/2008/05/single-breadcrumb-concept-300x158.png" alt="Concept of single breadcrumb using drop down menus" width="300" height="158" /></a></p>
<p>This way you can still have your &#8216;Main&#8217; sites in the hierarchy, but all levels are still available. Of course, you might want to make it that all the subsites of last &#8216;Main&#8217; site are always visible irrespective of that setting. I think that would work, and would require less getting used to.</p>
<p>It&#8217;s a bit like the Vista breadcrumb in Windows Explorer &#8211; but a bit different, which might count against it&#8230;</p>
<p><a href="http://www.novolocus.com/wp-content/uploads/2008/05/vista-breadcrumb-in-internet-explorer.png"><img class="alignnone size-medium wp-image-530" title="vista-breadcrumb-in-internet-explorer" src="http://www.novolocus.com/wp-content/uploads/2008/05/vista-breadcrumb-in-internet-explorer-300x184.png" alt="The breadcrumb in Windows Explorer in Vista" width="300" height="184" /></a></p>
<p>That said, I&#8217;m open to thoughts from others! Comment if you&#8217;ve got an idea of how breadcrumbs should work!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/05/02/are-sharepoint-breadcrumbs-completely-wrong/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Page Layouts, Breadcrumbs, and the space above the main content area of a page.</title>
		<link>http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/</link>
		<comments>http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 13:48:57 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Page Layouts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/</guid>
		<description><![CDATA[Previously, I&#8217;ve blogged about some of my investigations into how breadcrumbs work in SharePoint &#8211; and how sometimes they&#8217;re shown in the &#8216;Page Title Area&#8217;, and sometimes they&#8217;re put into the &#8216;Main Content Area&#8217;.
One of our customers was building a page layout, and wanted the breadcrumbs inside the Main content area. They put the following [...]]]></description>
			<content:encoded><![CDATA[<p>Previously, I&#8217;ve blogged about some of my investigations into <a href="http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/">how breadcrumbs work in SharePoint</a> &#8211; and how sometimes they&#8217;re shown in the &#8216;Page Title Area&#8217;, and sometimes they&#8217;re put into the &#8216;Main Content Area&#8217;.</p>
<p>One of our customers was building a page layout, and wanted the breadcrumbs inside the Main content area. They put the following content controls into the page layout file:<br />
<code><br />
&lt;%-- This content tag blanks the 'title' placeholder, which is above the white 'main content area' of a page --%&gt;<br />
&lt;asp:Content ContentPlaceHolderID="PlaceHolderPageTitleInTitleArea" runat="server" /&gt;</code></p>
<p><code>&lt;%-- This content tag blanks the 'title breadcrumbs' placeholder, which is above the white 'main content area' of a page --%&gt;<br />
&lt;asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server"/&gt;</code></p>
<p><code>&lt;%-- This is the main content for a page. This content tag is an example only.<br />
Usually there is more formatting and web part zones, other controls, etc.--%&gt;</code></p>
<p><code>&lt;asp:Content ContentPlaceHolderID="PlaceHolderMain" runat="server"&gt;</code></p>
<p><code>&lt;!-- This tag defines the breadcrumb to display. On a normal page (such as defaultlayout.aspx) it is a contained within a table --&gt;<br />
&lt;asp:SiteMapPath ID="ContentMap" Runat="server" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional"/&gt;</code></p>
<p><code>&lt;!-- This tag displays the text of the page's 'Title' that is given when it is created.  --&gt;<br />
&lt;SharePoint:FieldValue id="PageTitle" FieldName="Title" runat="server"/&gt;</code></p>
<p><code>&lt;/asp:Content&gt;</code></p>
<p>Unfortunately, this resulted in a gap between the top of the page content area, and the bottom of the top navigation:</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/03/page-layout-gap.JPG" alt="Page Layout Gap" /></p>
<p>So, what was missing?</p>
<p>Well, it turns out that another couple of content controls are relevant:</p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderPageImage" runat="server"&gt;&lt;IMG src="/_layouts/images/blank.gif" width=1 height=1 alt=""&gt;&lt;/asp:Content&gt;</code></p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderAdditionalPageHead" runat="server"&gt;<br />
&lt;style&gt;<br />
TD.ms-titleareaframe, .ms-pagetitleareaframe {<br />
height: 10px;<br />
}<br />
Div.ms-titleareaframe {<br />
height: 100%;<br />
}<br />
.ms-pagetitleareaframe table {<br />
background: none;<br />
height: 10px;<br />
}<br />
&lt;/style&gt;<br />
&lt;/asp:Content&gt;</code></p>
<p>The first content tag blanks the &#8216;page icon&#8217; placeholder, which is above and to the left the white &#8216;main content area&#8217; of a page. It is set to show a 1 pixel transparent image, and it appears that this is to maintain page structure, where setting the content to nothing might allow the table cell to collapse. And I thought that 1 pixel transparent gifs were so 1992.</p>
<p>The second content tag reduces the space available for the &#8216;page title area&#8217; through CSS. It overrides some of the styles to do this. Of course, this relies on your master page using those styles, or having that structure &#8211; so if you&#8217;re planning on creating a custom master page, you&#8217;d better think of all custom page layouts too. I&#8217;m not really convinced about that as design &#8211; it seems to me that this makes creating a new, radically different master page even harder, as the page layouts must be rebuilt too.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>More SharePoint Breadcrumb WTF</title>
		<link>http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/</link>
		<comments>http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 16:32:11 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Page Layouts]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/</guid>
		<description><![CDATA[Previously I&#8217;d posted about SharePoint Breadcrumbs and how they were confusing as hell. I&#8217;d discussed how SharePoint publishing pages override the &#8216;PlaceHolderTitleBreadcrumb&#8217; content control, filling it with blankness, and then supplying their own breadcrumb as part of the page content. That seemed pretty dumb to me&#8230;   &#8230;much more sensible would be to override [...]]]></description>
			<content:encoded><![CDATA[<p>Previously <a href="http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/">I&#8217;d posted about SharePoint Breadcrumbs</a> and how they were confusing as hell. I&#8217;d discussed how SharePoint publishing pages override the &#8216;PlaceHolderTitleBreadcrumb&#8217; content control, filling it with blankness, and then supplying their own breadcrumb as part of the page content. That seemed pretty dumb to me&#8230;   &#8230;much more sensible would be to override the &#8216;PlaceHolderTitleBreadcrumb&#8217; with the breadcrumb we want.</p>
<p>Well, it transpires that I was wrong. What I&#8217;ve described is true for some page layouts&#8230; and not for others. The Default Master page defines its PlaceHolderTitleBreadcrumb ContentPlaceHolder control as:</p>
<p><code>&lt;asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server"&gt;<br />
&lt;asp:SiteMapPath SiteMapProvider="SPContentMapProvider" id="ContentMap" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional" runat="server"/&gt;<br />
&lt;/asp:ContentPlaceHolder&gt;</code></p>
<p>This is defining the default breadcrumb on the master page.</p>
<p>For the DefaultLayout.aspx layout page, it defines the content for the page to have:</p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server"/&gt;</code></p>
<p>That will empty the placeholder on the master page, so no breadcrumb will appear in the usual location &#8211; in fact, nothing will. (<strong>Note: <a href="http://www.novolocus.com/2008/03/10/page-layouts-breadcrumbs-and-the-space-above-the-main-content-area-of-a-page/">you will probably want to reduce the blank space that the breadcrumb occupied</a></strong> &#8211; otherwise you&#8217;ll have a bit gap above your main content area). It then goes on to define (in the PlaceHolderMain Content control):</p>
<p><code>&lt;td class="ms-pagebreadcrumb" colspan="2"&gt;<br />
&lt;asp:SiteMapPath ID="ContentMap" Runat="server" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" NodeStyle-CssClass="ms-sitemapdirectional"/&gt;&lt;/td&gt;<br />
&lt;/tr&gt;</code></p>
<p>There we can see the breadcrumb that appears in the page content.</p>
<p>However, if we look at a different page layout, such as BlankWebPartPage.aspx, we see:</p>
<p><code>&lt;asp:Content ContentPlaceHolderId="PlaceHolderTitleBreadcrumb" runat="server"&gt; </code></p>
<p><code>&lt;div class="breadcrumb"&gt;<br />
&lt;asp:SiteMapPath ID="siteMapPath" Runat="server" SiteMapProvider="CurrentNavSiteMapProviderNoEncode" RenderCurrentNodeAsLink="false" SkipLinkText="" CurrentNodeStyle-CssClass="breadcrumbCurrent" NodeStyle-CssClass="ms-sitemapdirectional"/&gt; </code></p>
<p><code>&lt;/div&gt; </code></p>
<p><code>&lt;/asp:Content&gt;</code></p>
<p>Okay, interesting. So, what&#8217;s different about the breadcrumbs? Well, a few things, but the point relevant to whether or not the &#8220;<em>&gt; Pages &gt; default.aspx</em>&#8221; is displayed in the breadcrumbs &#8211; the SiteMapProvider. The CurrentNavSiteMapProviderNoEncode provider doesn&#8217;t seem to include the &#8216;Pages&#8217; bit of the path &#8211; hence it is used by the page layouts. The Default.master&#8217;s SPContentMapProvider provides a breadcrumb that includes the &#8216;Pages&#8217;.</p>
<p>It is a bit mystifying why some page layouts blank the PlaceHolderTitleBreadcrumb while other override it &#8211; it would have been really nice if they worked consistently. And, as a side note, if you create a page layout and find that your breadcrumbs include the &#8220;<em>&gt; Pages &gt; default.aspx</em>&#8221; bit, then 1) make sure you&#8217;re providing content to override the PlaceHolderTitleBreadcrumb, and 2) make sure that it uses the CurrentNavSiteMapProviderNoEncode navigation provider.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/02/22/more-sharepoint-breadcrumb-wtf/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>What the heck is going on with SharePoint Breadcrumbs?</title>
		<link>http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/</link>
		<comments>http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/#comments</comments>
		<pubDate>Thu, 21 Feb 2008 16:19:36 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[SharePoint 2007]]></category>
		<category><![CDATA[Navigation]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/</guid>
		<description><![CDATA[Like many web applications, SharePoint uses &#8216;Breadcrumbs&#8217; for navigation. This is a set of links that both tell you where in a hierarchy you are, and were you can go to. SharePoint, though, uses two:

You can see them here at the top left, and then above the word &#8216;Documents&#8217;. But wait, the master page shows [...]]]></description>
			<content:encoded><![CDATA[<p>Like many web applications, SharePoint uses &#8216;Breadcrumbs&#8217; for navigation. This is a set of links that both tell you where in a hierarchy you are, and were you can go to. SharePoint, though, uses two:</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/02/ownnav-doc.png" alt="WSS-Breadcrumbs-OwnNav" /></p>
<p>You can see them here at the top left, and then above the word &#8216;Documents&#8217;. But wait, the master page shows us <strong>two</strong> breadcrumbs? You&#8217;re only in one hierarchy, so how does that work? The Planning &amp; Architecture documentation on Technet says:</p>
<blockquote><p>The default.master master page, which displays form and view pages, includes two breadcrumb controls, a global breadcrumb which contains sites only, and a content breadcrumb, which contains sites and the current page. Some collaboration site templates, such as the Team Site template, also include two breadcrumbs on all Web pages</p></blockquote>
<p>However, this isn&#8217;t quite the complete story.<span id="more-344"></span></p>
<p>I found myself looking at navigation similar to this:</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/02/parent-nav-doc.png" alt="WSS-Breadcrumbs-ParentNav" /></p>
<p>So, I&#8217;m in a document library, in a subsite called &#8216;Parent Nav&#8217;. The &#8216;global&#8217; breadcrumbs still just shows the top site though, and the &#8216;content&#8217; breadcrumbs has 2 sites in its links. This left me more than a little confused &#8211; <strong>what the heck made a site appear on the top breadcrumbs or the bottom one?</strong></p>
<p>Well, the names in my site give you a clue as to what is different about where the site ends up being shown &#8211; whether it inherits the parent site&#8217;s navigation, or whether is has its own. This is set during site creation:</p>
<p><a title="WSS-Breadcrumbs-Setting-Publishing" href="http://www.novolocus.com/wp-content/uploads/2008/02/menu1.png"><img src="http://www.novolocus.com/wp-content/uploads/2008/02/menu1.thumbnail.png" alt="WSS-Breadcrumbs-Setting-Publishing" /></a></p>
<p>Or from the Site Settings page. What you see then, though, depends on whether you&#8217;re using the publishing features or not:</p>
<p><a title="WSS-Breadcrumbs-Setting-Publishing" href="http://www.novolocus.com/wp-content/uploads/2008/02/menu1.png"><img src="http://www.novolocus.com/wp-content/uploads/2008/02/menu1.thumbnail.png" alt="WSS-Breadcrumbs-Setting-Publishing" /></a></p>
<p>or</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/02/topnavsettings1.png" alt="WSS-Breadcrumbs-Setting-Team" /></p>
<p>If you select that you <strong>don&#8217;t</strong> want to use the parent&#8217;s links, then it&#8217;s like you&#8217;re breaking out of the &#8216;navigational context&#8217; of the parent. The &#8216;Content Breadcrumbs&#8217; (or &#8216;Title Breadcrumbs&#8217;) (the things that go in the <strong>PlaceHolderTitleBreadcrumb </strong>placeholder in the master page) only start from this context, so they are shorter. However, the &#8216;Global Breadcrumbs&#8217; now show both the parent &#8216;context&#8217; and the current site. This is shown below, where both sites are at the same level. The bottom image does not inherit the parent&#8217;s navigation:<br />
<img src="http://www.novolocus.com/wp-content/uploads/2008/02/parent-nav-doc.png" alt="WSS-Breadcrumbs-ParentNav" /><br />
<img src="http://www.novolocus.com/wp-content/uploads/2008/02/ownnav-doc.png" alt="WSS-Breadcrumbs-OwnNav" /></p>
<p>Now, the observant will have noticed that I talk about &#8216;contexts&#8217; rather than sites. That&#8217;s because I tried a hierarchy of sites 4 deep &#8211; lets call it <em>A &gt; B &gt; C &gt; D</em>. I made <em>B</em> and <em>D</em> use their own navigation (i.e. not inherit their parent&#8217;s). This meant that <em>C</em> would inherit from <em>B</em>. If we view the bottom site, <em>D</em>, what would be shown in the navigation? Would the global breadcrumb contain &#8220;<em>A &gt; B &gt; C &gt; D</em>&#8220;, or &#8220;<em>A &gt; B &gt; D</em>&#8220;?</p>
<p>Well, it turned out to be the latter. It appears that the <strong>SPSiteMapProvider </strong>(which supplies the entries for the global breadcrumbs) provides a trail of the sites up the hierarchy which use their own navigation. The <strong>SPContentMapProvider </strong>(which supplies the &#8216;Title Breadcrumbs&#8217;), provides a trail of the sites up the hierarchy which <strong>do</strong> inherit from the parent.</p>
<p>Thus, confusingly you can end up with sites in each of the two breadcrumbs. However, this does hav the advantage that, with deep hierarchies, you can kind of &#8216;hide&#8217; some of the intermediate layers, as we did with &#8220;<em>C</em>&#8221; in our test above.</p>
<p><strong>An Added Complexity &#8211; Page&#8217;s own Breadcrumbs</strong></p>
<p>So, we&#8217;ve talked about the 2 breadcrumbs typically found on the master page. There is another one, of course, just to make life confusing. This is actually found in some of the content pages themselves, rather than in the master page. In the screenshot below, everything below and right of the red line is page content, not part of the master page.</p>
<p><img src="http://www.novolocus.com/wp-content/uploads/2008/02/third-breadcrumb.png" alt="WSS-Breadcrumbs-Page-Breadcrumb" /></p>
<p>Okay, so what&#8217;s going on there? Well, first off, the page is defining empty content for the &#8216;<strong>PlaceHolderTitleBreadcrumb</strong>&#8216;. In Master pages there are content placeholders, and these can have default content. Pages themselves can defined content for that placeholder, and this overrides the content that was there. That&#8217;s what is happening here, and this is making our default content &#8211; the breadcrumb &#8211; disappear from our page. Then, it is defining it&#8217;s own breadcrumb within it&#8217;s own content. Lots of pages do this &#8211; the home page of your collaboration site does.  But why does it need it&#8217;s own breadcrumb?</p>
<p>Well, to find out, I hacked one of the pages so it always displayed the Title Breadcrumb. The first thing I noticed on going to the home page of my root site was that the breadcrumb read &#8220;<em>Site &gt; Pages &gt; Default.aspx</em>&#8220;. Technically that is correct, that is the page being shown, but it doesn&#8217;t really match up with the URL for the page and I could see that it would confuse users. Every time they clicked for the home page they are given a page which appears to be two &#8216;levels down&#8217;.</p>
<p>What I don&#8217;t understand, though, is why the page doesn&#8217;t just override the normal &#8216;Title Breadcrumb&#8217; with its own. I mean, it could. Instead, though, we have the Title Breadcrumb being overridden with &#8216;nothing&#8217; so it doesn&#8217;t display, and then another navigation control! I don&#8217;t know what that&#8217;s about&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2008/02/21/what-the-heck-is-going-on-with-sharepoint-breadcrumbs/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>The stupidity of Search boxes when branding SharePoint</title>
		<link>http://www.novolocus.com/2007/11/02/the-stupidity-of-search-boxes-when-branding-sharepoint/</link>
		<comments>http://www.novolocus.com/2007/11/02/the-stupidity-of-search-boxes-when-branding-sharepoint/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 09:11:49 +0000</pubDate>
		<dc:creator>Andy</dc:creator>
				<category><![CDATA[Branding]]></category>
		<category><![CDATA[Search]]></category>
		<category><![CDATA[Breadcrumbs]]></category>

		<guid isPermaLink="false">http://www.novolocus.com/?p=10</guid>
		<description><![CDATA[Okay, so I just made an interesting discovery. In the master pages on SharePoint there is a content placeholder called PlaceHolderTitleBreadcrumb. A slightly odd name &#8211; I&#8217;m not sure it should have &#8216;title&#8217; in it, as that seems to make assumptions about how you&#8217;re going to use it &#8211; but in fairness, it is a [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, so I just made an interesting discovery. In the master pages on SharePoint there is a content placeholder called <em>PlaceHolderTitleBreadcrumb</em>. A slightly odd name &#8211; I&#8217;m not sure it should have &#8216;title&#8217; in it, as that seems to make assumptions about how you&#8217;re going to use it &#8211; but in fairness, it is a placeholder for breadcrumbs. Great!</p>
<p>Except if you go the search page. Then, the search box is shown in the breadcrumb placeholder. WTF! Who the hell designed that? I mean, what idiot decided to put a large control, with LOTS of padding (discussed wonderfully by <a href="http://www.heathersolomon.com/blog/articles/6170.aspx">Heather Solomon</a>).</p>
<p>Speaking of padding &#8211; that padding is hard coded into the control. It is fucking CSS, but they put it into the control. Nobody would <em>ever</em> want to get rid of that 50px padding above this control, right? Nobody would have designed space for the nice little breadcrumbs only to be caught out when the stonking search control sticks it&#8217;s flabby ass there, right?</p>
<p>Wrong. I&#8217;ve been caught, and I&#8217;m <a href="http://tomblog.insomniacminds.com/2007/10/16/sharepoint-branding-issues-moss-search-center/"> not the only one</a>. As Tom says, the solution isn&#8217;t complicated &#8211; but I shouldn&#8217;t have to solve it. He&#8217;s right when he discusses the &#8216;contract&#8217; of the master page. This design bug is just wrong.</p>
<p>And I don&#8217;t believe that I should have to write my own delegate controls all the time &#8216;cos someone was too lazy to write theirs in a generic way. I mean, this is supposed to be the office <span style="text-decoration: underline;">platform</span>. Don&#8217;t hardcode styles into your delegate controls, <a href="http://www.novolocus.com/display.php?id=472">don&#8217;t assume your control will be in a table row</a>, and, in fact, could we stop using tables so we might make an accessible system? It&#8217;s kind of important in many countries&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.novolocus.com/2007/11/02/the-stupidity-of-search-boxes-when-branding-sharepoint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
