SharePoint品牌按主题更改SiteLogoUrl,不存在主题应用事件

时间:2009-04-13 21:10:33

标签: c# visual-studio-2008 sharepoint events branding

到目前为止,我们尚未为SharePoint网站定义提供新的母版页。我们有一个主题,我们的一些客户将根据他们的企业SharePoint品牌推广使用。

目前,我使用以下代码在'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不是触发的最佳事件,我更喜欢主题应用事件,但我似乎找不到。也许我没有正确地接近这一点。

2 个答案:

答案 0 :(得分:1)

应用主题没有事件。

你可能会倒退(虽然显而易见)。如何以编程方式设置功能接收器activate the theme,以及设置徽标?

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

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

答案 1 :(得分:0)

您的代码应该可以正常工作。 FeatureActivated / FeatureDeactivating方法是您可以添加自定义代码的地方。

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

我的猜测是你要强制使用SiteLogoUrl,即使主题发生了变化(这样你的客户也可以为他们的网站选择一个时髦的主题,同时保留徽标)。

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

干杯,