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

19

我希望主页面上的网站标志链接始终重定向到根网站集首页。默认行为是重定向到当前网站(SPWeb)的主页。

在SharePoint 2010中,我可以通过在主页面上将SPLinkButton控件的NavigateUrl属性添加到~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中,站点 Logo 链接的控件已经在主页面更改为 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包装控件,并将SPSimpleSiteLink更改为具有添加了NavigateUrl属性的旧SPLinkButton。这似乎起作用了。

还有更好的解决方法吗?

8个回答

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>

需要翻译的内容为:


6

正如Muawiyah Shannak所提到的,您只需将SharePoint:SPSimpleSiteLink替换为SharePoint:SPLinkButton控件。

如果您正在使用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>-->

使用动态控件总是比设置为永久链接更好,这样您可以在其他站点集合上重用模板,而无需更改静态根链接。


1

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

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

点击此处查看更多详情


1
如果您需要一个动态链接,您可以在您的母版页中使用用户控件。例如,如果您想始终指向根地址,但是该根地址在多个环境中不同,您可以在用户控件中这样做:
<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;
    }
}


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

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


0

这是我能找到的最简单的解决方案,用于一个链接到主页的简单标志

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

顺便说一句,尝试在<asp:Literal之外执行<%$SPUrl:~sitecollection...会抛出异常。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接