自动创建指向文件夹中内容的链接

时间:2011-08-31 10:10:20

标签: umbraco

我每周创建2-3个HTML文件,这些文件将通过FTP上传到Web服务器上的文件夹。这些文件只是纯HTML,包含我当地Bridge Club的结果。

在我继续花时间为.Net创建一个“奇特”解决方案之前,我最好先询问Umbraco是否有内置支持。

基本上我想要一个名为Results的主菜单项,该页面应该有一个辅助菜单,其中包含指向特定文件夹中每个.HTML文件的链接

有什么想法吗?

干杯, 斯蒂芬

1 个答案:

答案 0 :(得分:2)

首先,请确保将html文件上传的路径放在web.config中的umbracoReservedPaths应用设置中。

接下来,我将创建一个XSLT extension(或custom function,返回包含每个HTML文件名的XPathNodeIterator。该方法需要构建一个类似于:

<files>
  <file>/htmlfiles/file1.html</file>
  <file>/htmlfiles/file2.html</file>
  <file>/htmlfiles/file3.html</file>
</files>

然后在XmlDocument上调用CreateNavigator()并从XSLT扩展方法返回它。使用Directory.GetFiles获取HTML文件名列表,并将其转换为网络就绪网址,例如/htmlfiles/file1.html

然后使用一个简单的XSLT宏显示它,该宏在for-each中迭代XSLT扩展的结果。这看起来像是:

<xsl:for-each select="customExtensions:GetFiles()//file">
    <a>
      <xsl:attribute name="href">
        <xsl:value-of select="." />
      </xsl:attribute>
      <xsl:text>File #</xsl:text>
      <xsl:value-of select="position()" />
    </a>
</xsl:for-each>

这将生成类似

的列表
File #1
File #2
File #3

所有链接到xml中的各自值。

扩展方法的一个很好的例子是here