2012-02-01 10 views
1

私は大規模なインターネットに直面しているWebサイトを構築するためにSharePoint 2010を使用していますが、今は匿名ユーザー向けにサイトを最適化しています。 スタートページのhtmlソースコードを見ると、SharePointのさまざまなコンポーネントが不必要なものをページに追加しています。 (私たちは完全にカスタムブランディングを使用しているので、少なくとも彼らは、匿名ユーザーに不要です。)SharePoint 2010の匿名ユーザー用のhtml出力を整理する

いくつかの例:頭で

:体の上部に

<style type="text/css"> 
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_TopWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; } 
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_LeftWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; } 
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_RightWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; } 
.ctl00_PlaceHolderOuterWrap_DialogPlaceHolder_PlaceHolderOuterMain_ctl01_SocialWebPartZone_0 { border-color:Black;border-width:1px;border-style:Solid; } 
.ctl00_wpz_0 { border-color:Black;border-width:1px;border-style:Solid; } 

<script type="text/javascript"> 
//<![CDATA[ 
var MSOWebPartPageFormName = 'aspnetForm'; 
var g_presenceEnabled = true; 
var g_wsaEnabled = false; 
var g_wsaLCID = 1033; 
var g_wsaSiteTemplateId = 'XXX#1'; 
var g_wsaListTemplateId = 850; 
var _fV4UI=true;var _spPageContextInfo = {webServerRelativeUrl: "\u002fen-gb", webLanguage: 1033, currentLanguage: 1033, webUIVersion:4,pageListId:"{28b31ecf-221c-4a5f-94e2-6b97af0cfd61}",pageItemId:1, alertsEnabled:true, siteServerRelativeUrl: "\u002f", allowSilverlightPrompt:'True'};//]]> 
</script> 
<script type="text/javascript"> 
<!-- 
var L_Menu_BaseUrl="/en-gb"; 
var L_Menu_LCID="1033"; 
var L_Menu_SiteTheme=""; 
//--> 
</script> 
<script type="text/javascript"> 
//<![CDATA[ 
document.onreadystatechange=fnRemoveAllStatus; function fnRemoveAllStatus() {removeAllStatus(true)};var _spWebPartComponents = new Object();//]]> 
</script> 

javasのようなページの下部にはたくさんのものがたくさんあります文章機能など

これらのものをすべて削除しようとしている人はいますか?

可能な限りクリーンな方法を探していますが、httpモジュールフィルタでHTMLを解析することはあまり魅力的ではありません。

ありがとうございます!

答えて

2

できるだけ多くの混乱を避けるために、匿名ユーザー専用のマスターページを使用し、必要のないすべてのユーザー/サーバーコントロールを削除することをお勧めします。初期段階では、独自の匿名のマスターページを割り当てる基本クラスを実装するページレイアウトを持つことができます。

代わりの解決方法は、認証された唯一のコントロールテンプレート内でクラッタ/未知のhtmlを担当するWebコントロール/コンポーネントをラップすることです。

/// <summary> 
/// Base Abstract control for conditionally (permissions, querystring, audience, anonymous, etc.) visible content 
/// </summary> 
[ParseChildren(true)] 
public abstract class ConditionallyVisibleControl : Control 
{ 
    public ITemplate ContentTemplate { get; set; } 
    public abstract bool ShouldBeVisible { get; } 

    protected override void CreateChildControls() 
    { 
     base.CreateChildControls(); 

     if (ShouldBeVisible && ContentTemplate != null) 
     { 
      Control container = new Control(); 
      ContentTemplate.InstantiateIn(container); 
      Controls.Add(container); 
     } 
    } 
} 

し、それらそれがdupliacte masterpagesの形で余分なメンテナンスにつながるものの、素敵なアイデアです

/// <summary> 
/// Hide some content to anonymous user 
/// </summary> 
/// <example> 
///  <UC:AnonymousTrimmedControl runat="server"> 
///   <ContentTemplate> 
///    <!-- Any content over there that will not be rendered/visible for anonymous users --> 
///   </ContentTemplate> 
///  </UC:AnonymousTrimmedControl> 
/// </example> 

public class AnonymousTrimmedControl : ConditionallyVisibleControl 
{ 
    public override bool ShouldBeVisible 
    { 
     get 
     { 
      return (HttpContext.Current.Request.IsAuthenticated); 
     } 
    } 
} 
+0

のようなものを持っています。私はそれをupvoteしますが、実際には物事を取り除く方法について私の質問に答えていません... –

+0

あなたの認証されたマスターページを継承することができます/両面で最初からそれを再作成することを避けるために公共のものを使用することができます。そして、それらを取り除くために、それらのほとんどは、あなたが匿名のマスターページで却下/削除できるSharePoint Webコントロールから来ています。別の解決方法は、認証されたテンプレートコントロール内でそれらをラップすることです。私は上記の私の返信を更新します。 –

+0

(継承することによって、私はプライベートのものをMasterPageFile属性を使って匿名のものとして指し示すことを意味します) –

関連する問題