Дата публикации Umbraco в xslt - PullRequest
4 голосов
/ 21 июня 2011

Различные Ссылки Umbraco указывают, что Umbraco хранит только узлы createDate и updateDate в umbraco.config (когда вы хотите закодировать xslt-преобразования содержимого Umbraco).

Но мне нужночтобы иметь возможность отображать дату публикации в преобразованиях xslt.

Теперь, после выяснения, что в базе данных Umbraco cmsContentVersion.VersionDate - это дата публикации узла, а cmdDocument.updateDate - последняя обновленная дата, я могу создать триггер, который можетизменяет updateDate, чтобы соответствовать дате публикации всякий раз, когда изменяется дата публикации, и использовать следующий xsl:

<xsl:value-of select="umbraco.library:FormatDateTime(@updateDate, 'd MMM yyyy hh:mm')"/>

Но в идеале я не хочу менять определения базовой таблицы Umbraco.

Я нашел эту ссылку , в которой предлагалось расширить документ об узле, чтобы представить дату выпуска в C #, используя:

public static string ReleaseDate(int nodeId) {
    Document d = new Document(nodeId);
    return d.ReleaseDate.ToString();
}

... но как мне перевести этот C # в xslt?Переписать xslt как макрос ascx не вариант.

1 Ответ

2 голосов
/ 21 июня 2011

Вы можете использовать расширение XSLT. Смотрите этот урок (http://www.nibble.be/?p=60),, но я адаптировал его здесь.

  1. Поместите этот код .NET в класс с именем Extensions в сборку, которая собирается и копируется в папку bin вашей установки umbraco. Например, мы поместим его в MyProject.dll
  2. Откройте файл /config/xsltExtensions.config.
  3. Добавьте следующую строку в конфигурацию:

    <ext assembly=”\bin\MyProject” type=”MyProject.Extensions” alias=”MyExtensions”></ext> 
    
  4. В xslt добавьте ссылку на расширение и исключите префикс:

    <xsl:stylesheet 
      version=”1.0″ 
      xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” 
      xmlns:msxml=”urn:schemas-microsoft-com:xslt”
      xmlns:umbraco.library=”urn:umbraco.library”
      xmlns:BlogLibrary=”urn:MyExtensions”
      exclude-result-prefixes=”msxml umbraco.library MyExtensions”>
    
  5. Вы должны быть в состоянии использовать метод сейчас так же, как любой другой метод umbraco.library, например:

     <xsl:value-of select="MyExtensions:ReleaseDate($myNodeId)" />
    

Надеюсь, это поможет.

...