加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Umbraco在xslt中发布日期

发布时间:2020-12-15 17:17:54 所属栏目:百科 来源:网络整理
导读:各种 Umbraco references指出,Umbraco只在umbraco.config中存储节点createDate和updateDate(当你想编写Umbraco内容的xslt转换时). 但我需要能够在xslt转换中显示发布日期. 现在经过研究,在Umbraco数据库中cmsContentVersion.VersionDate是节点发布日期,cmdDo
各种 Umbraco references指出,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表定义.

我发现this reference建议扩展节点文档以在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/xsltExtensions.config文件.
>将以下行添加到配置中:

<ext assembly=”binMyProject” 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)" />

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读