2012-02-01 4 views
1

Я использую SharePoint 2010 для создания большого интернет-сайта, и теперь я ищу оптимизацию сайта для анонимных пользователей. Как я вижу в исходном коде html исходной страницы, я обнаружил, что различные компоненты ootb SharePoint добавляют на страницу множество ненужных материалов. (По крайней мере, они не нужны для анонимного пользователя, так как мы используем полностью настраиваемый брендинг.)Очистка вывода html для анонимных пользователей в SharePoint 2010

Некоторых примеров:

В голове:

<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 криптографические функции и т. д.

Любой, кто попытался удалить все это?

Я ищу как можно более чистый путь, разбор html в модуле http-module не очень привлекателен.

Спасибо!

ответ

2

Мое предложение удалить как можно больше беспорядка, чтобы использовать выделенную главную страницу для анонимного пользователя (и удалить все пользовательские/серверные элементы управления, которые вам не нужны). У вас может быть макет страницы, который реализует базовый класс, в котором на этапе инициализации вы назначаете свою собственную анонимную главную страницу.

Альтернативное решение состоит в том, чтобы обернуть элементы управления/компоненты веб-сайта, ответственные за беспорядок/неизмененный html в рамках шаблона управления, прошедшего проверку подлинности.

/// <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); 
     } 
    } 
} 

и им есть что-то вроде

/// <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

Это хорошая идея, но это приведет к дополнительному обслуживанию в виде dupliacte MasterPages. Я подниму его, но на самом деле я не отвечаю на мой вопрос о том, как избавиться от материала ... –

+0

Вы можете получить свою аутентифицированную главную страницу, наследующую/использующую ваш общедоступный, чтобы избежать повторного создания его с нуля с обеих сторон , И чтобы избавиться от этого материала, большинство из них поступают из веб-элементов управления SharePoint, которые можно удалить или удалить на анонимной главной странице. Альтернативным решением было бы обернуть их в аутентифицированные только элементы управления шаблонами. Я обновлю свой ответ выше. –

+0

(по умолчанию я имел в виду использование атрибута MasterPageFile на личном, указывающее на одно для анонимного, которое будет действовать как базовое.) –

Смежные вопросы