2009-04-13 6 views
3

Jusqu'à présent, nous n'avons pas encore eu besoin d'une nouvelle page maquette pour notre définition de site SharePoint. Nous avons un thème que certains de nos clients utiliseront en fonction de leur image de marque SharePoint.La stratégie de marque SharePoint modifie SiteLogoUrl par thème, aucun événement appliqué de thème n'existe

Actuellement, je modifie le 'SiteLogoUrl' dans mon 'FeatureReceiver' sur l'événement 'FeatureActivated' en utilisant le code suivant.

public override void FeatureActivated(SPFeatureReceiverProperties properties) { 
     AddThemeToSpThemes(THEME_ID, THEME_NAME, THEME_DESC, THEME_IMAGE, THEME_IMAGE); 
     SPWeb site = properties.Feature.Parent as SPWeb; 
     if (site != null) { 
      site.AllowUnsafeUpdates = true; 
      site.SiteLogoUrl = site.Url + "images/thLogo.gif"; 
      site.Update(); 
     } 
    } 

FeatureActivated n'est pas le meilleur événement pour déclencher sur, je préférerais un événement appliqué à thème, mais je ne peux pas sembler trouver un. Peut-être que je ne m'approche pas de cela correctement.

Répondre

1

L'application d'un thème n'a pas d'événement.

Vous pouvez faire ceci en arrière (bien que la voie évidente). Que diriez-vous d'avoir votre récepteur de fonctionnalité activate the theme par programme, ainsi que de définir votre logo?

Notez que vous pouvez stocker le thème actuellement appliqué dans le sac de propriétés de SPWeb - voir this for an example, mais en conservant les pages maîtres actuelles avant de les modifier.

Il est également utile d'utiliser le Alternate CSS instead of Themes. Cela peut également être défini sur votre objet SPWeb (AlternateCssURL).

0

Votre code devrait fonctionner correctement. Les méthodes FeatureActivated/FeatureDeactivating sont les endroits où vous pouvez ajouter du code personnalisé. Par curiosité, pourquoi avez-vous pensé que vous n'utilisez pas le bon événement? Il n'y a pas trop d'événements dans sharepoint, et la fonctionnalité du thème est assez limitée. Les fichiers CSS sont étendus, mais le côté .net est petit. Je suppose que vous voulez forcer le SiteLogoUrl, même si le thème change (afin que vos clients puissent choisir un thème génial pour leur site, tout en gardant le logo).

En outre, une page maître n'est pas un thème, donc je ne sais pas pourquoi vous avez dit: "Jusqu'à présent, nous n'avons pas encore eu besoin d'une nouvelle page maître pour notre définition de site SharePoint".

Cheers,

Matt.

+0

L'activation d'une fonction et l'application d'un thème sont deux choses complètement différentes. Je voudrais changer l'image quand un thème est appliqué. –