4

render xslt でマルチメディア コンポーネントの URL を取得しようとしていますが、それでも失敗します。

tcm URI を取得できます。そこからURLを取得する方法はありますか?

tcmse:PublishBinary 関数を試してみましたが、「名前空間 'http://www.tridion.com/ContentManager/5.1/TcmScriptAssistant' には関数が含まれていません」というエラーで失敗します。

<table cellspacing="0px" cellpadding="0px" style="border: 0; padding: 0px; width: 100%"> 
    <xsl:for-each select="twf:items/twf:item">
        <tr>
            <td colspan="2">
                <!-- <xsl:value-of select="twf:webformscomponentlink/@xlink:href" /> -->
                <!-- <xsl:value-of select="tcmse:PublishBinary(string(twf:webformscomponentlink/@xlink:href))" /> -->
                <span>
                    <xsl:call-template name="replace-new-lines">
                        <xsl:with-param name="string">
                            <xsl:value-of select="twf:linklabel" />
                        </xsl:with-param>
                    </xsl:call-template>
                    <xsl:text> </xsl:text>
                </span>
                <xsl:element name="a">
                    <xsl:attribute name="href">
                        <xsl:choose>
                            <xsl:when test="twf:webformscomponentlink/@xlink:href">
                                <xsl:value-of select="twf:webformscomponentlink/@xlink:href" /> 
                            </xsl:when>
                            <xsl:otherwise>#</xsl:otherwise>
                        </xsl:choose>
                    </xsl:attribute>
                    <xsl:value-of select="twf:linktext" />
                </xsl:element>    
            </td>
        </tr>
    </xsl:for-each>
</table> 

どうもありがとうございました

4

1 に答える 1

1

Render XSLT でマルチメディア コンポーネントを解決しようとしているとおっしゃいましたが、タグに WebForms が表示されているので、SDL Tridion WebForms コンポーネント テンプレートの Render XSLT であると想定しています。

Web フォームは動的コンポーネント プレゼンテーションであり、そのコンポーネント テンプレートは 2 つの XSLT を使用します。1 つは [ソース] タブ (展開 XSLT) にあり、パブリッシュ時にパブリッシャーが CMS でテンプレート コードをレンダリングするときに実行されます。もう 1 つの動的テンプレートには XSLT が含まれており、公開時にそのまま Content Broker にコピーされます。WebForms コンポーネント プレゼンテーションの要求時に、動的テンプレートを使用して Expand XML を WebForm に変換します。

そのため、動的テンプレートは要求時に実行されるため、その時点で TcmScriptAssistant は使用できなくなります (発行時にコンテンツ マネージャー側にのみ存在します)。解決策は、展開テンプレートでマルチメディア コンポーネントを解決するtcmse:PublishBinary()ことです。レンダリング テンプレートでは、展開テンプレートの結果を変換/表示することしかできませんが、その時点で CM 機能にアクセスすることはできません。

于 2012-11-29T11:39:45.417 に答える