SharePoint重定向站点徽标链接到根网站集主页

时间:2012-11-27 10:58:00

标签: sharepoint sharepoint-2013

我希望母版页中的网站徽标链接始终重定向到根网站集主页。默认行为是重定向到当前Web(spweb)的主页。

回到SharePoint 2010中,我可以通过将NavigateUrl属性添加到母版页中的SPLinkBut​​ton控件来实现此目的,其值为~sitecollection,如下所示:

<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" id="onetidProjectPropertyTitleGraphic">
<SharePoint:SiteLogoImage name="onetidHeadbnnr0" id="onetidHeadbnnr2" LogoImageUrl="/_layouts/images/siteIcon.png" runat="server"/>
</SharePoint:SPLinkButton>

但是,在SharePoint 2013中,站点徽标链接的控件已在主页面中更改为SPSimpleSiteLink。我已尝试以相同的方式为此控件设置NavigateUrl属性,但它似乎不再起作用。

<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>

作为一种解决方法,我现在已经删除了AjaxDelta包装器控件,并使用添加的NavigateUrl属性将SPSimpleSiteLink更改为旧的SPLinkBut​​ton。这似乎有效。

有没有更好的方法?

8 个答案:

答案 0 :(得分:20)

关于MSDN SharePoint:SPSimpleSiteLink 是一个“非常简单的控件,它提供了指向当前站点的链接。此控件在启用MDS的母版页中兼容为chrome控件”

如果您希望网站徽标链接始终重定向到网站集根网站,请使用 SharePoint:SiteLogoImage (因为我们在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>

答案 1 :(得分:6)

正如Muawiyah Shannak所述,您只需将 SharePoint:SPSimpleSiteLink 替换为 SharePoint:SPLinkBut​​ton 控件。

如果您使用 SharePoint Design-Manager 代码段工具,则必须编辑以下两行(开始和结束标记)

<!--MS:<SharePoint:SPSimpleSiteLink runat="server" CssClass="ms-siteicon-a" ID="x7917ecc8c38d4bd69f58e338eab54c8c">-->
[...]
<!--ME:</SharePoint:SPSimpleSiteLink>-->

到这个

<!--MS:<SharePoint:SPLinkButton runat="server" NavigateUrl="~sitecollection/" CssClass="ms-siteicon-a" ID="x7917ecc8c38d4bd69f58e338eab54c8c">-->
[...]
<!--ME:</SharePoint:SPLinkButton>-->

使用动态控件然后将其设置为永久链接更好,这样您就可以在其他网站集上重复使用模板,而无需更改静态根链接。

答案 2 :(得分:1)

如果您需要永久链接,为什么使用某些SharePoint / ASP.NET控件 - 只需在母版页中设置此链接:)))认为这是最简单的方法,可以在任何版本的SharePoint中使用。

答案 3 :(得分:1)

同样适合我,NavigateUrl不起作用。因此,即使您尝试使用JQuery更改href属性,稍后某些脚本也会使用当前站点URL覆盖href。 唯一的方法是更改​​'a'元素的id以防止覆盖。 ID更改导致Sharepoint javascript错误,因此您必须使用徽标a元素的相同旧ID创建虚拟隐藏元素。所有这些都使用' seattle '母版页。

所以在 $(document).ready 中执行以下操作:

//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);

答案 4 :(得分:1)

在NavigateUrl中使用../。这将到达父站点。

答案 5 :(得分:1)

如果您需要动态链接,可以在主页中使用UserControl。例如,如果您希望始终指向根地址,但在多个环境中该根地址不同,则可以在用户控件中执行以下操作:

<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>

在您的代码隐藏中:

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;
    }
}

答案 6 :(得分:1)

对于网站集重定向选项,将属性NavigateUrl添加到此标记并将其值设置为“~sitecollection” 对于网站当前网站重定向选项,请将属性NavigateUrl添加到此代码并将其值设置为"~site"

NavigateUrl="~sitecollection/"
NavigateUrl="~site/"

Click Here See More Details

答案 7 :(得分:0)

这是我找到的最简单的sln链接到主页的简单徽标

<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>

P.S。 是的,试图在<%$SPUrl:~sitecollection...之外<asp:Literal提出异常。