Changer la page d'accueil SharePoint ne fonctionne pas tant que je clique sur le titre du site

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/59021

  •  10-12-2019
  •  | 
  •  

Question

J'installe un sous-site à SharePoint 2010 à l'aide de Powershell.Pour tous les sous-sites, nous avons configuré SharePoint pour lancer un sous-site de la page par défaut de sous-site en tant que page d'atterrissage après la connexion.Pour mon cas d'utilisation, je veux remplacer ce comportement en lançant une page créée en tant que partie d'une fonctionnalité utilisée dans ce sous-site.Je suis donc en train d'utiliser le code suivant dans l'événement de fonctionnalité de la fonctionnalité:

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
    using (var currentWeb = properties.Feature.Parent as SPWeb)
    {
        if (currentWeb != null)
        {
            var root = currentWeb.RootFolder;
            if (root != null)
            {
                root.WelcomePage = @"Management\Pages\LandingPage.aspx";
                root.Update();
            }

            //this.AddNavigationNodes(currentWeb);
        }
    }

    base.FeatureActivated(properties);
}

Le code ne fonctionne pas jusqu'à ce que je clique sur le titre du site (en haut à gauche) ou activez, puis réactivez la fonctionnalité.On dirait que le code a besoin d'une sorte d'événement déclencheur.Est-ce que je fais quelque chose de mal?S'il vous plaît aider ...

Était-ce utile?

La solution

Ce code dans votre fonctionnement Evénement récepteur fonctionnera après l'achèvement de l'activation de votre fonctionnalité.

de msdn SPFEAREUREVER.FEACTIVÉE MÉTHODE :

gère l'événement qui est soulevé une fois qu'une fonctionnalité est activée.

et

Cette méthode est appelée lorsqu'une fonctionnalité est activée.

Si vous souhaitez définir de manière arbitraire votre page d'accueil, vous pouvez utiliser l'utilisateur PowerShell comme:

$site = Get-SPSite -Identity "http://server:port/";
$web = $site.OpenWeb("WebName");
$web.RootFolder.WelcomePage = "/Path/Page.aspx";
$web.Update();
$web.Dispose();
$site.Dipose();
Write-Host "Successfully updated the Welcome Page"

Autres conseils

Une autre alternative serait d'attendre intentionnellement que l'utilisateur frappe le site et d'utiliser une commande injectée dans une tête de page supplémentaire qui définit la valeur, redirige l'utilisateur et se désactive.

fichier éléments:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Control
    Id="AdditionalPageHead"
    Sequence="1000"
    ControlSrc="~/_controltemplates/MySites.Branding/WebPartInjector.ascx">
  </Control>
</Elements>

code derrière pour l'injecteur.ascx:

public partial class WebPartInjector : UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
        using (new SPMonitoredScope("MySites.Branding WebPartInjector Page_Load"))
        {
            SPWeb curWeb = SPContext.Current.Web;

            try
            {
                //*******DO STUFF HERE********

                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    try
                    {
                        curWeb.Features.Remove(new Guid("This-is-where-you-put-the-guid-of-the-feature"));
                    }
                    catch
                    {
                        //swallowing deactivation of self error 
                    }

                });
                curWeb.AllowUnsafeUpdates = false;
                Context.Response.Redirect(curWeb.Url);

            }
            catch (Exception g)
            {

                Logger.LogError(g, "WebPartInjector"); ;
            }
        }
    }
}

Licencié sous: CC-BY-SA avec attribution
Non affilié à sharepoint.stackexchange
scroll top