Domanda

Ho un layout di pagina per un sito di pubblicazione con un comportamento strano.

Immagina un sito di pubblicazione (sito) con un sito secondario (sito secondario1) che ha le seguenti pagine (pagina1 [impostazione predefinita], pagina2 e pagina3)

per la pagina 2 e la pagina tre il breadcrumb viene visualizzato correttamente:

site > subsite1 > page2 
site > subsite1 > page3

tuttavia per la pagina predefinita il breadcrumb viene visualizzato solo come

site > subsite1

Hai idea di come forzarlo a visualizzare anche il titolo della pagina predefinita?

È stato utile?

Soluzione

Dopo molte ricerche e fallimenti ripetuti ho deciso di usare un AJAX include. Prima che qualcuno mi segnasse per aver usato il linguaggio devils (VB.Net) l'ho usato solo perché avevo altri sviluppatori che stavano usando e mantenendo questo codice in modo che dovessero essere in grado di leggerlo ...

L'inclusione ha fatto quanto segue:

  1. divide l'URL corrente nelle sue parti costitutive
  2. Per ogni parte ottenere l'URL di Sharepoint e Sharepoint Web
  3. Stampa il titolo del web sharepoint
  4. Se la parte è una pagina, ottieni il titolo della pagina e stampalo

Questo non è il codice finale (lo rifatterò stasera):

  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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top