0
votes

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?

1

1 Answers

0
votes

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:

  1. split the current url into its constituent parts
  2. For each part get the Sharepoint URL and Sharepoint Web
  3. Print the Title of the sharepoint web
  4. 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 &gt;</span> <span class='ms-sitemapdirectional'><a href='" & TravelUrl & "' title='Home'>Home</a> &gt; </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> &gt; </span>")
    End if

    Next i