3

到目前为止,我们还不需要为我们的 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 不是触发的最佳事件,我更喜欢主题应用事件,但我似乎找不到。也许我没有正确地解决这个问题。

4

2 回答 2

1

应用主题没有事件。

您可能正在向后执行此操作(尽管是显而易见的方式)。让您的功能接收器以编程方式激活主题以及设置您的徽标怎么样?

请注意,您可以将当前应用的主题存储在 SPWeb 的属性包中 - 请参阅此示例,但在更改它们之前存储当前母版页。

也值得考虑使用备用 CSS 而不是主题。这也可以在您的 SPWeb 对象 (AlternateCssURL) 上设置。

于 2009-04-14T13:20:49.457 回答
0

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

出于好奇,您为什么认为您没有使用正确的事件?sharepoint 的事件不多,主题功能也很有限。CSS 文件很广泛,但 .net 方面很小。

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

此外,母版页不是主题,所以我不确定您为什么说“到目前为止,我们还不需要为我们的 SharePoint 站点定义创建新的母版页”。

干杯,

马特。

于 2009-04-14T06:38:23.527 回答