SharePoint 2010: Logotipo en la masterpage que dependa del sitio en el que nos encontremos dentro de la colección

Escenario:

Supongamos que tenemos una colección de sitios tal que así

  • Sitio principal
    • Subsitio 1
    • Subsitio 2

Tenemos una única Masterpage en la que establecemos el logotipo dentro de la masterpage

<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/">

    <SharePoint:SiteLogoImage  LogoImageUrl="/Style Library/NombreProyecto/Images/logo.png" runat="server"/>

</SharePoint:SPLinkButton>    

 

Pero, si queremos que el logotipo sea diferente para cada sitio, esto no nos valdría.

 

Solución:

Tenemos que conseguir que la ruta del logotipo sea relativa al sitio en cuestión, para lo que sólo es necesario obtener de alguna forma dicha ruta.

Esto lo podemos conseguir de la siguiente forma.

LogoImageUrl="<% $SPUrl:~sitecollection/Style Library/NombreProyecto/Images/logo.png%>"

 

Hecho esto, “~sitecollectio” se sustituiría por la ruta relativa al sitio en el que nos encontremos.

 

Código completo:

<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/">

    <SharePoint:SiteLogoImage  LogoImageUrl="<% $SPUrl:~sitecollection/Style Library/NombreProyecto/Images/logo.png%>" runat="server"/>

</SharePoint:SPLinkButton>