Uno de los problemas con los que me he encontrado cuando se cargan documentos html en una biblioteca de documentos es que cuando Sharepoint indexa el contenido de dichos documentos, al cárgalos  se pierde toda la estética del portal, esto también ocurre cuando abrimos los documentos desde una biblioteca de documentos.

Por lo general estos documentos los cargamos dentro de un webpart de contenido para que el usuario pueda navegar por estas páginas de manera que lo ideal sería que el documento se visualizará en el site del cual proviene.

Si os fijáis en el MSDN (msdn.microsoft.com) ellos utilizan un truco para que indexar páginas asp que después se visualizan dentro de un frame con el contexto del MSDN.

Lo primero que he hecho es un pequeño script que debo añadir a todas las páginas .html

<script type="text/javascript">
   if (self == top) {     
        topUrl = 'sites/pruebas';     
        posUrl = location.href.lastIndexOf(topUrl);
        qs = location.href.lastIndexOf('?');  
        if (qs < 0) {         
            qs = location.href.length;     
        }     
        newUrl = location.href.substring(posUrl+1+topUrl.length,qs);
         window.location.href = topUrl+'/default.aspx?Load='+encodeURI(newUrl);   
    }   
</script>`

El script comprueba si el documento es el principal en la página en cuyo caso lo que hace es redirigirse automáticamente a su destino, la página principal del Site. Para que este sepa que página debe cargar se lleva como parámetro el nombre del archivo y su camino dentro del sitio. 

Generalmente estas páginas provienen de una plantilla .dwt con lo que podéis actualizar la plantilla.

topUrl, contiene la dirección del site donde se quiere visualizar la página.

Después hay que modificar el default.aspx del site de manera que cargue la página que se ha seleccionado.

En vez de usar un webpart de contenido he usado directamente un iframe, también podéis usar  un webpart de contenido que acepte querystrings como este de Mad Nissen con unos retoques.

<iframe frameBorder="0" onload=”iframeOnLoad();” id="miIframe" name="miIframe" width="100%" height="100%" src=" " />

En el src del iframe deberemos poner el documento .html que se cargará por defecto.

Por último este pequeño script en el default.aspx (yo lo he puesto antes de la etiqueta )

<script type="text/javascript">
   function iframeOnLoad()   {
         var params = window.location.search.substring(1).split("=");
         if (params[1]!=null && document.getElementById("miIframe").src != params[1]) {   
             document.getElementById("miIframe").src = params[1];     
        }   
    }   
<script>

Este script recoge el querystring y carga en el iframe la página que le hemos pasado.

Ahora solo queda probar a buscar un documento desde el portal principal pinchar sobre el y ver que pasa