3

SDL tridion2011SP1を使用しています。

XSLT Mediatorを使用して、特定のカテゴリのキーワードのリストを取得したいと思います。

誰かがこの状況に遭遇しましたか?はいの場合、あなたの意見を共有してください。

しかし、実際にカテゴリアイテムXMLを調べたところ、キーワードに関連する情報はありません。

4

1 に答える 1

3

カテゴリキーワードをパッケージに挿入するために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メディエーターを呼び出すときに、「パッケージパラメーターを含める」の値を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-06-26T12:59:04.217 に答える