【问题标题】:how to get the list of keywords if we have category tcm id in XSLT TBB(XSLT Mediator)如果我们在 XSLT TBB(XSLT Mediator)中有类别 tcm id,如何获取关键字列表
【发布时间】:2012-06-26 12:48:48
【问题描述】:

我正在使用 SDL tridion 2011 SP1。

我想使用 XSLT Mediator 获取给定类别下的关键字列表。

有没有人遇到过这种情况,如果有,请分享您的看法。

但是当我实际查看 Category Item XML 时,它没有任何与其关键字相关的信息。

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案1】:

    您需要创建一个 C# TBB 以将类别关键字插入到包中,然后将其作为 XSLT 中的参数进行访问。

    你可以像下面这样使用一段c#:

    class GetCategoryKeywords : TemplateBase
        {
            public override void Transform(Engine engine, Package package)
            {
                Initialize(engine, package);
                String webDavPathCategory = package.GetValue("CategotryWebDavPath");
                Category cat = (Category)engine.GetObject(webDavPathCategory);
                XmlDocument keywordsXml = new XmlDocument();
                keywordsXml.LoadXml(cat.GetListKeywords().OuterXml);
                Item output = package.CreateXmlDocumentItem(ContentType.Xml, keywordsXml);
                package.PushItem("CategoryKeywords", output);
            }
        }
    

    这将在包含关键字的名为 CategoryKeywords 的包中放置一个 XML 文档。然后,当您调用 XSLT 中介时,将“Include Package Paramters”值设置为 true,并在 XSLT 顶部添加一个参数,如下所示:

    <xsl:param name="CategoryKeywords"/>
    

    然后,您可以将新参数作为变量循环遍历,对它执行所需的任何 XPath 查询。以下示例可能会有所帮助:

    <xsl:variable name="URI" select="$CategoryKeywords//tcm:ListUsedItems/tcm:Item[@Title=$VALUE]/@ID" />
    
    <xsl:for-each select="$CategoryKeywords//tcm:ListItems/tcm:Item">
        Do something
    <xsl:for-each>
    

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多