MOSS 2007 Breadcrumb problem
https://stackoverflow.com/questions/240427
Question
I've got a page layout for a publishing site with an odd behaviour.
Imagine a publishing site (site) with a subsite (subsite1) which has the following pages (page1 [default], page2, and page3)
for page 2 and page three the breadcrumb renders correctly:
site > subsite1 > page2
site > subsite1 > page3
however for the default page the breadcrumb only renders as
site > subsite1
Any idea how to force it to display the title of the default page too?
Solution
After much searching and failing repeatedly I decided to use an AJAX include. Before anyone marks me down for using the devils language (VB.Net) I only used it as I had other developers who were using and maintaing this code so they had to be able to read it...
The include did the following:
- split the current url into its constituent parts
- For each part get the Sharepoint URL and Sharepoint Web
- Print the Title of the sharepoint web
- If the part is a page, get the page title and print it
This isnt the final code (i'm going to refactor it tonight):
Dim lsPage = Request.Item("CurrentPage")
Dim TravelURL as string = "http://site/"
Dim aryURLSections() = lsPage.Replace(TravelUrl, "").Split("/")
Dim i as integer
Response.Write("<span class='breadcrumbCurrent'>You are in ></span> <span class='ms-sitemapdirectional'><a href='" & TravelUrl & "' title='Home'>Home</a> > </span>")
for i = 0 to (aryURLSections.Length -1)
Dim PositionString as string = aryURLSections(i)
if PositionString.Contains(".aspx") then
'Render page
Dim psite as SPSite = new SPSite(TravelUrl)
Dim pobjSite As SPWeb = psite.OpenWeb()
Dim lList as SPList
Dim lPage As SPListItem
lList = pobjSite.Lists("Pages")
If Not lList Is Nothing Then
For Each lPage In lList.Items
IF lsPage.ToUpper.Contains(lPage.Url.ToUpper) Then
Response.Write("<span class='breadcrumbCurrent' >" & lPage.Title & "</span>")
Else
'Response.Write("<br>" & lPage.Url & " " & lsPage)
End If
Next
End if
Else if PositionString.Equals("Pages")
' do nothing
else
'render site
TravelUrl = TravelUrl & PositionString & "/"
'Response.Write(TravelUrl & " > ")
Dim site as SPSite = new SPSite(TravelUrl)
Dim objSite As SPWeb = site.OpenWeb()
Dim PubWeb = PublishingWeb.GetPublishingWeb(objSite)
Response.Write("<span class='ms-sitemapdirectional'><a href='" & TravelUrl & "' title='" & PubWeb.Title & "'>" & PubWeb.Title & "</a> > </span>")
End if
Next i
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow