MOSS 2007 Breadcrumb problem
-
04-07-2019 - |
Pregunta
Tengo un diseño de página para un sitio de publicación con un comportamiento extraño.
Imagine un sitio de publicación (sitio) con un subsitio (subsitio1) que tenga las siguientes páginas (página1 [predeterminado], página2 y página3)
para la página 2 y la página tres, la ruta de navegación se muestra correctamente:
site > subsite1 > page2
site > subsite1 > page3
sin embargo, para la página predeterminada, la ruta de navegación solo se procesa como
site > subsite1
¿Alguna idea de cómo forzarla para que muestre también el título de la página predeterminada?
Solución
Después de mucho buscar y fallar repetidamente, decidí usar un AJAX. Antes de que alguien me marcara por usar el lenguaje de los demonios (VB.Net), solo lo usaba porque tenía otros desarrolladores que usaban y mantenían este código, así que tenían que poder leerlo ...
La inclusión hizo lo siguiente:
- divide la url actual en sus partes constituyentes
- Para cada parte, obtenga la URL de Sharepoint y la web de Sharepoint
- Imprima el título de la web de sharepoint
- Si la parte es una página, obtenga el título de la página e imprímala
Este no es el código final (voy a refactorizarlo esta noche):
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