2009-04-13 8 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つを見つけるように見えることはできません。おそらく私はこれに正しく近づいていないでしょう。

答えて

1

テーマの適用にはイベントがありません。

あなたはこれを後方に行っているかもしれません(明らかな方法ですが)。どのようにあなたのフィーチャー受信機activate the themeを持つことは、あなたのロゴを設定するだけでなく、プログラム的には?

現在適用されているテーマをSPWebのプロパティバッグに保存することができます(this for an exampleを参照)。ただし、変更する前に現在のマスターページを保存してください。

Alternate CSS instead of Themesもご検討ください。これはSPWebオブジェクト(AlternateCssURL)で設定することもできます。

0

コードは正常に動作するはずです。 FeatureActivated/FeatureDeactivatingメソッドは、カスタムコードを追加できる場所です。

好奇心で、なぜあなたは正しいイベントを使用していないと思いましたか?共有ポイントには多すぎるイベントはなく、テーマの機能は非常に限定されています。 CSSファイルは広範囲ですが、.net側は小さいです。

私の推測では、テーマが変更された場合でも、SiteLogoUrlを強制したいと考えています(顧客がロゴを保持したままサイトのファンキーなテーマを選択できるようにする)。

また、マスターページはテーマではないため、「今までは、SharePointサイト定義の新しいマスターページが必要ではありませんでした。

乾杯、

マット。

+0

フィーチャーのアクティブ化とテーマの適用は、全く異なる2つのことです。テーマが適用されたときにイメージを変更したいと思います。 –

関連する問題