【问题标题】:Umbraco publish date in xsltUmbraco 在 xslt 中的发布日期
【发布时间】:2011-06-21 14:15:21
【问题描述】:

各种 Umbraco references 指出 Umbraco 仅将节点 createDate 和 updateDate 存储在 umbraco.config 中(当您想要编写 Umbraco 内容的 xslt 转换时)。

但我需要能够在 xslt 转换中显示发布日期。

现在在 Umbraco 数据库中计算出 cmsContentVersion.VersionDate 是节点发布日期并且 cmdDocument.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 宏不是一种选择。

【问题讨论】:

标签: c# sql xslt umbraco


【解决方案1】:

您可以使用 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)" />
    

希望这会有所帮助。

【讨论】:

  • 非常感谢,它适用于发布日期 - 并公开了许多其他可能很有用的属性。
猜你喜欢
  • 1970-01-01
  • 2023-04-07
  • 1970-01-01
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多