SharePoint Redirect site logo lien vers la page d'accueil de la collection du site root

je veux que le lien du logo du site dans la page principale soit toujours redirigé vers la page d'accueil de la collection du site racine. Le comportement par défaut est de rediriger vers la page d'accueil du web actuel (spweb).

de retour dans SharePoint 2010 je pourrais accomplir ceci en ajoutant L'attribut NavigateUrl au contrôle SPLinkButton dans la page principale avec une valeur de ~sitecollection comme ceci:

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

cependant dans SharePoint 2013 la commande pour le lien logo du site a changé dans le master page à SPSimpleSiteLink. J'ai essayé de configurer la propriété NavigateUrl pour ce contrôle de la même manière, mais cela ne semble plus fonctionner.

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

comme solution de contournement, j'ai maintenant supprimé le contrôle AjaxDelta wrapper et changé le lien Spsimplesit en L'ancien bouton Splink avec L'attribut NavigateUrl ajouté. Cela semble fonctionner.

existe-il des meilleures façons?

18
demandé sur gurkan 2012-11-27 14:57:59

8 réponses

concernant MSDN SharePoint: SPSimpleSiteLink est un "contrôle très simple, qui fournit un lien vers le site actuel de Ce contrôle est conforme par un chrome de contrôle dans un SDM-activé master page"

si vous voulez le lien du logo du site toujours rediriger vers le site de la collection du site racine, utilisez SharePoint: SiteLogoImage (comme nous l'a été utilisé avec 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>

19
répondu Shannak 2013-04-30 09:17:02

Muawiyah Shannak mentionné il suffit de remplacer le SharePoint: SPSimpleSiteLinkSharePoint:SPLinkButton de contrôle.

Si vous utilisez le Conception SharePoint-Manager outil Snippet vous devez éditer les deux lignes suivantes (étiquette de début et de fin)

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

de cette

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

il est préférable d'utiliser un contrôle dynamique puis de le configurer comme un lien permanent, de sorte que vous pouvez réutilisez votre modèle sur d'autres sitecollections sans changer le lien racine statique.

5
répondu DaviideSnow 2017-05-23 10:30:49

si vous avez besoin de lien permanent, pourquoi utiliser SharePoint/ASP.Net controls-il suffit de définir ce lien dans la page principale :))) pensez que c'est la manière la plus simple, qui fonctionnera dans n'importe quelle version de SharePoint.

1
répondu Dmitriy 2013-01-31 15:41:04

sur Le même appens pour moi, NavigateUrl ne fonctionne pas. Donc, même si vous essayez de changer href propriété avec JQuery quelques scripts plus tard écrasent le href avec l'url actuelle du site. La seule façon est de changer l'id de l'élément " a " pour éviter la réécriture. Changement D'ID cause Sharepoint erreur javascript vous devez donc créer un élément caché factice avec le même ancien id du logo a élément. Tout ce travail à l'aide de ' seattle' page maître.

Donc dans $(document).prêt faire quelque chose comme:

//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);
1
répondu Vito 2013-05-29 13:48:13

utilisation ../ dans le NavigateUrl. Ça va nous mener au site parent.

1
répondu Casey Govero 2013-10-03 17:10:32

Si vous avez besoin d'un lien dynamique, vous pouvez utiliser un UserControl dans votre masterpage. Si vous voulez par exemple toujours pointer vers l'adresse racine, mais que cette adresse racine est différente dans plusieurs environnements, vous pouvez faire comme ceci dans le contrôle de l'utilisateur:

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

Et dans ton code-behind:

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
répondu Andreas Zetterström 2013-10-18 13:34:05

pour l'option de redirection de la collection du site, Ajouter l'attribut NavigateUrl à cette balise et définissez sa valeur à " ~sitecollection" Pour l'option de redirection du site actuel, ajouter l'attribut NavigateUrl pour ce tag et définir la valeur de "~site"

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

Cliquez Ici Voir Plus De Détails

1
répondu Tamilan 2015-10-30 03:20:52

c'est le sln le plus simple que j'ai pu trouver pour un logo simple qui renvoie à la page d'accueil

<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. oui, essaie de faire <%$SPUrl:~sitecollection... en dehors de la <asp:Literal jeté une exception.

0
répondu bresleveloper 2018-01-16 09:34:57