2009-04-13 75 views
3

到目前为止,我们还没有需要一个新的母版页为我们的SharePoint网站定义。我们有一个主题,我们的一些客户将根据他们的企业SharePoint品牌使用。SharePoint品牌更改主题的SiteLogoUrl,没有主题应用事件存在

目前我使用以下代码在“FeatureActivated”事件的“FeatureReceiver”中更改'SiteLogoUrl'。

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不是最好的事件触发,我宁愿主题应用事件,但我似乎无法找到一个。也许我没有正确处理这个问题。

回答

1

应用主题没有事件。

你可能会做这个倒退(尽管显而易见的方式)。如何以编程方式让您的功能接收器activate the theme,以及设置您的标志?

请注意,您可以将当前应用的主题存储在SPWeb的资产包中 - 请参阅this for an example,但在更改它们之前存储当前的母版页。

也值得考虑使用Alternate CSS instead of Themes。这也可以在你的SPWeb对象(AlternateCssURL)上设置。

0

你的代码应该工作得很好。 FeatureActivated/FeatureDeactivating方法是您可以添加自定义代码的地方。

出于好奇,你为什么认为你没有使用正确的事件? sharepoint中没有太多的事件,主题功能非常有限。 CSS文件很广泛,但.net端很小。

我的猜测是,即使主题发生变化(因此您的客户可以选择一个时髦的主题为他们的网站,同时保持标志),你要强制SiteLogoUrl。

另外,母版页不是主题,所以我不确定为什么说“到目前为止,我们还没有为我们的SharePoint网站定义需要一个新的母版页”。

干杯,

马特。

+0

激活一个功能并应用主题是两个完全不同的事情。我想在应用主题时更改图像。 – 2009-04-14 15:39:36