以xslt表示的Umbraco发布日期
本文关键字:日期 布日期 xslt 表示 Umbraco | 更新日期: 2023-09-27 17:59:57
各种Umbraco引用指出,Umbraco只在Umbraco.config中存储节点createDate和updateDate(当您想要对Umbraco内容的xslt转换进行编码时)。
但是我需要能够在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();
}
但是我该如何翻译xslt中的C#呢?不能将xslt重写为ascx宏。
您可以使用XSLT扩展。请参阅本教程(http://www.nibble.be/?p=60),但我在这里进行了调整。
- 将该.NET代码放在程序集中名为Extensions的类中,该程序集已构建并复制到umbraco安装的bin文件夹中。例如,我们将把它放在MyProject.dll中
- 打开/config/xsltExtension.config文件
-
在配置中添加以下行:
<ext assembly=”'bin'MyProject” type=”MyProject.Extensions” alias=”MyExtensions”></ext>
-
在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”>
-
你现在应该可以像使用任何umbraco.library方法一样使用该方法,例如:
<xsl:value-of select="MyExtensions:ReleaseDate($myNodeId)" />
希望这能有所帮助。