2011-06-21 43 views
4

各種 Umbraco references指出Umbraco只在umbraco.config中存儲節點createDate和updateDate(當您想要編碼Umbraco內容的xslt轉換時)。Umbraco在xslt中發佈日期

但我需要能夠在xslt轉換中顯示發佈日期。

現在工作了,在一把umbraco數據庫cmsContentVersion.VersionDate在節點發布日期和cmdDocument.updateDate是最後的更新日期,我可以創造改變updateDate匹配每當每當發佈日期更改發佈日期後觸發並使用以下xsl:

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

但理想情況下,我不想更改核心Umbraco表定義。

我發現this reference這表明延長節點文檔暴露在C#中的發佈日期,使用:

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

...但我怎麼翻譯的XSLT是C#?將xslt重寫爲ascx宏不是一個選項。

+1

請注意,通過使用Document API,您將在每次獲取發佈日期時擊中數據庫,這會影響性能。有關更多詳細信息,請參閱[節點和文檔之間的區別](http://our.umbraco.org/wiki/reference/api-cheatsheet/difference-between-a-node-and-a-document)。 – JMason

回答

2

您可以使用XSLT擴展。請參閱本教程(http://www.nibble.be/?p=60),但我已在此調整它。

  1. 將.NET代碼放在名爲Extensions的類中,該程序集被構建並複製到您的umbraco安裝的bin文件夾中。例如,我們將它放在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)" /> 
    

希望這有助於。

+0

非常感謝,該版本適用於發佈日期 - 並且公開了一些其他可能有用的屬性。 – amelvin