Автоматически создавать ссылки на контент в папке - PullRequest
0 голосов
/ 31 августа 2011

У меня создается 2-3 HTML-файла в неделю, которые будут загружены через FTP в папку на веб-сервере. Файлы представляют собой обычный HTML-файл с результатами моего местного Bridge Club.

Прежде чем я начну тратить время на создание «причудливого» решения в .Net, для этого лучше спросить, есть ли в Umbraco встроенная поддержка для этого.

По сути, я хочу, чтобы в главном меню был пункт «Результаты», а на этой странице должно быть дополнительное меню со ссылками на каждый файл .HTML в определенной папке.

Есть идеи?

Ура, Stefan

1 Ответ

2 голосов
/ 31 августа 2011

Сначала убедитесь, что вы указали путь, по которому загружаются html-файлы, в настройке приложения umbracoReservedPaths в файле web.config.

Далее я бы создал расширение XSLT (или пользовательскую функцию , которое возвращает XPathNodeIterator, содержащее каждое имя файла HTML. Метод должен будет создать XmlDocument, который выглядит примерно так: :

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

Затем вызовите CreateNavigator() в XmlDocument и верните его из метода расширения XSLT. Используйте Directory.GetFiles , чтобы получить список имен файлов HTML и преобразовать их в готовый веб-URL, например /htmlfiles/file1.html.

Затем отобразите все это с помощью простого макроса XSLT, который повторяет результат вашего расширения XSLT в for-each. Это будет выглядеть примерно так:

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

Хороший пример метода расширения: здесь

...