online - sharepoint server 2013
Enlace del logotipo del sitio de SharePoint Redirect a la página de inicio de la colección de sitios raíz (8)
Como mencionó Muawiyah Shannak , simplemente debe reemplazar SharePoint: SPSimpleSiteLink con el control SharePoint: SPLinkButton .
Si está utilizando la herramienta Fragmento de administrador de diseño de SharePoint, debe editar las siguientes dos líneas (etiquetas de inicio y finalización)
<!--MS:<SharePoint:SPSimpleSiteLink runat="server" CssClass="ms-siteicon-a" ID="x7917ecc8c38d4bd69f58e338eab54c8c">-->
[...]
<!--ME:</SharePoint:SPSimpleSiteLink>-->
a esto
<!--MS:<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" CssClass="ms-siteicon-a" ID="x7917ecc8c38d4bd69f58e338eab54c8c">-->
[...]
<!--ME:</SharePoint:SPLinkButton>-->
Es mejor usar un control dinámico que configurarlo como un enlace permanente, de modo que pueda reutilizar su plantilla en otras colecciones de sitio sin cambiar el enlace raíz estático.
Quiero que el enlace del logotipo del sitio en la página maestra siempre redirija a la página de inicio de la colección de sitios raíz. El comportamiento predeterminado es redirigir a la página de inicio de la web actual (spweb).
De vuelta en SharePoint 2010, pude lograr esto agregando el atributo NavigateUrl al control SPLinkButton en la página maestra con un valor de ~ colección de sitios como este:
<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" id="onetidProjectPropertyTitleGraphic">
<SharePoint:SiteLogoImage name="onetidHeadbnnr0" id="onetidHeadbnnr2" LogoImageUrl="/_layouts/images/siteIcon.png" runat="server"/>
</SharePoint:SPLinkButton>
Sin embargo, en SharePoint 2013, el control del enlace del logotipo del sitio ha cambiado en la página maestra a SPSimpleSiteLink. He intentado configurar la propiedad NavigateUrl para este control de la misma manera, pero parece que ya no funciona.
<div id="siteIcon" class="ms-tableCell ms-verticalAlignTop">
<SharePoint:AjaxDelta id="DeltaSiteLogo" BlockElement="true" runat="server">
<SharePoint:SPSimpleSiteLink NavigateUrl="~sitecollection/" CssClass="ms-siteicon-a" runat="server" id="onetidProjectPropertyTitleGraphic" >
<SharePoint:SiteLogoImage CssClass="ms-siteicon-img" name="onetidHeadbnnr0" id="onetidHeadbnnr2" LogoImageUrl="/_layouts/15/images/siteIcon.png?rev=23" runat="server"/>
</SharePoint:SPSimpleSiteLink>
</SharePoint:AjaxDelta>
</div>
Como solución alternativa, ahora he eliminado el control de envoltorio AjaxDelta y he cambiado el SPSimpleSiteLink al SPLinkButton antiguo con el atributo NavigateUrl agregado. Esto parece funcionar.
¿Hay formas mejores?
Con respecto a MSDN SharePoint: SPSimpleSiteLink es un "control muy simple que proporciona un enlace al sitio actual. Este control es compatible como control de cromo en una página maestra habilitada para MDS"
Si desea que el enlace del logotipo del sitio redirija siempre al sitio raíz de la colección de sitios, use SharePoint: SiteLogoImage (como se usó con SP 2010)
<SharePoint:AjaxDelta id="DeltaSiteLogo" BlockElement="true" runat="server">
<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" id="onetidProjectPropertyTitleGraphic">
<SharePoint:SiteLogoImage name="onetidHeadbnnr0" id="onetidHeadbnnr2" LogoImageUrl="images/logo.png" runat="server">
</SharePoint:SiteLogoImage>
</SharePoint:SPLinkButton>
Este es el sln más simple que podría encontrar para un logotipo simple que enlaza a la página de inicio.
<SharePoint:SPLinkButton id="index" ClientIDMode="Static" CssClass="page-logo" runat="server" NavigateUrl="~sitecollection/">
<img src="<asp:Literal runat=''server'' Text=''<%$SPUrl:~sitecollection/Style Library/images/logo.png%>'' />" alt="Logo" />
</SharePoint:SPLinkButton>
PS sí, tratando de hacer <%$SPUrl:~sitecollection...
fuera de <asp:Literal
lanzó una excepción.
Lo mismo me ocurre a mí, NavigateUrl
no funciona. Entonces, incluso si intentas cambiar la propiedad href
con JQuery, algún script posterior sobrescribe el href con la URL del sitio actual. La única forma es cambiar el id del elemento ''a'' para evitar que se sobrescriba. El cambio de ID causa el error de JavaScript de Sharepoint por lo que tiene que crear un elemento oculto ficticio con la misma identificación antigua del logotipo que a
elemento. Todo este trabajo utilizando la página maestra '' seattle ''.
Así que en $ (documento) .hacer algo como:
//read old link id
var oldLogoId = $("#DeltaSiteLogo > a").attr(''id'');
//change the id
$("#" + oldLogoId).attr(''id'',''CustomSiteLogo'');
//create dummy hidden element
$("#DeltaSiteLogo > a").after("<a id=''tmpDeltaSiteLogo'' href=''#'' style=''display:none''>Dummy</a>");
//set the dummy id with old id value
$("#tmpDeltaSiteLogo").attr("id",oldLogoId );
//alter the link to point to the webroot
$("#CustomSiteLogo").attr(''href'', window.location.protocol + "//" + window.location.host);
Para la opción de redireccionamiento de la colección de sitios, agregue el atributo NavigateUrl
a esta etiqueta y establezca el valor en "~ sitecollection" Para la opción de redireccionamiento del sitio actual del sitio, agregue el atributo NavigateUrl
a esta etiqueta y establezca el valor en "~site"
NavigateUrl="~sitecollection/"
NavigateUrl="~site/"
Si necesita un enlace dinámico, puede usar un UserControl en su página maestra. Si, por ejemplo, siempre desea apuntar a la dirección raíz, pero esa dirección raíz es diferente en varios entornos, podría hacer esto en el control del usuario:
<asp:HyperLink CssClass="ms-siteicon-a" runat="server" ID="TG_CustomSiteLink" ToolTip="Home">
<SharePoint:SiteLogoImage CssClass="ms-siteicon-img" name="onetidHeadbnnr0" id="onetidHeadbnnr2" LogoImageUrl="/_layouts/15/images/siteIcon.png?rev=23" runat="server" AlternateText="Home"/>
</asp:HyperLink>
Y en tu código detrás:
public partial class CustomSiteLogoLink : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
var uri = HttpContext.Current.Request.Url;
var url = uri.ToString();
var rootUrl = url.Replace(HttpUtility.UrlDecode(uri.PathAndQuery), String.Empty);
this.TG_CustomSiteLink.NavigateUrl = rootUrl;
}
}
Si necesita un enlace permanente, ¿por qué usa algunos controles de SharePoint / ASP.NET? Simplemente configure este enlace en la página maestra :))) Piense que es la forma más simple, que funcionará en cualquier versión de SharePoint.
utilizar ../ en el NavigateUrl. Esto llegará al sitio principal.