代码之家  ›  专栏  ›  技术社区  ›  tekiegreg

在SharePoint上转换静态HTML文档的最简单方法

  •  2
  • tekiegreg  · 技术社区  · 14 年前

    目前,我面临着许多要转换为SharePoint的静态HTML文档(Moss 2007),基本上它们可以保持静态,但需要以SharePoint的外观和感觉迁移到SharePoint站点(每个页面至少需要用SharePoint的页眉和页脚更新),是否有任何工具可以帮助您有人知道这个吗?谢谢!

    编辑:答案必须是可行的,价格为500美元。

    3 回复  |  直到 13 年前
        1
  •  3
  •   TFD    14 年前

    问题的答案是创建500个自定义页面

    using (SPSite siteCollection = new SPSite("http://yoursite.com")) {
      using (SPWeb site = siteCollection.RootWeb) {
        MemoryStream fileStream = new MemoryStream();
        StreamWriter fileWriter = new StreamWriter(fileStream);
        fileWriter.WriteLine("<%@ Page MasterPageFile=\"~masterurl/default.master\"  meta:progid=\"SharePoint.WebPartPage.Document\" %>");
        fileWriter.WriteLine("<asp:Content ID=\"PageTitle\" runat=\"server\" contentplaceholderid=\"PlaceHolderPageTitle\">");
        fileWriter.WriteLine(...insert page title here...);
        fileWriter.WriteLine("</asp:Content>");
        fileWriter.WriteLine("<asp:Content ID=\"PageTitleInTitleArea\" runat=\"server\" contentplaceholderid=\"PlaceHolderPageTitleInTitleArea\">");
        fileWriter.WriteLine(...insert page title summary here...);
        fileWriter.WriteLine("</asp:Content>");
        fileWriter.WriteLine("<asp:Content ID=\"PageMain\" runat=\"server\" ContentPlaceHolderID=\"PlaceHolderMain\" >");
        fileWriter.WriteLine(...insert the html body mark up here...);
        fileWriter.WriteLine("</asp:Content>");
        fileWriter.Flush();
        site.Files.Add(... your page name .aspx here ..., fileStream);
        fileWriter.Close();
        fileWriter.Dispose();
        fileStream.Close();
        fileWriter.Dispose();
      } 
    } 
    
        2
  •  1
  •   Francisco Aquino    14 年前

    要手动将内容复制/粘贴到“外观”中,可以使用基本页(查看所有网站内容=>创建=>网页=>基本页)。您还可以将直接HTML文件上载到文档库,并将其作为这些基本页内容的“内容链接”。

        3
  •  0
  •   jsoverson    14 年前

    这些HTML页面是以相当标准的方式编写的吗?如果您知道需要从顶部删除前x行,从底部删除y行,则可以使用以下unix命令字符串来准备文件(例如,假定这些文件都命名为file01.html、file02.html等):

    for i in file*.html; do head -n -X $i | tail +Y > $i.stripped; done

    然后,您可以在适当命名的文件中使用标准的页眉和页脚,并运行如下命令:

    for i in num*.stripped; do cat header $i footer > $i.sharepoint; done

    这两个命令将用名为 header 以及文件的最后Y行,其中包含 footer 并将它们放入名为file01.html.striped.sharepoint的文件中,以便移动(和重命名)。

    如果这不起作用,但您知道需要剪切某个文本字符串上方或下方的所有行,则可以使用此脚本(粘贴到名为“trim”的文件中)执行第一个准备任务:

    #!/usr/bin/perl
    
    my $direction = shift;
    my $r = shift;
    my $file = shift;
    
    open(FILE,"<",$file) or die 'could not open file ' . $file;
    
    my $matched = 0;
    
    while(<FILE>) {
       $matched ||= m/$r/;
       if ($direction eq 'before') {
          next if not $matched;
       } else {
          last if $matched;
       }    
       print;
    }
    

    第一个参数是要剪切的方向,第二个参数是字符串(以正则表达式形式),第三个参数是文件名:

    跑得像:

    perl trim after '^STRING$' file.html

    对于所有文件:

    for i in file*.html; do perl trim after '^STRING$' $i > $i.stripped_header; done

    在准备好文件之后,上面的第二个命令就可以放到页眉和页脚上了。

    有点冗长,但重点是您应该能够通过一点脚本轻松地处理这个问题。