MOSS 2007 Problema Breadcrumb
-
04-07-2019 - |
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?
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:
- divide l'URL corrente nelle sue parti costitutive
- Per ogni parte ottenere l'URL di Sharepoint e Sharepoint Web
- Stampa il titolo del web sharepoint
- 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 ></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