Umbraco/参考/umbraco.library/RenderMacroContent
运行宏并将输出插入您的 XSLT。
RenderMacroContent(String Text, Int32 PageId)
Text:模板“宏”代码的编码版本(有关正确编码,请参见下文)
PageId:您要用于宏内容的节点的 NodeID
当您将宏代码放在模板中时,它看起来像这样
<?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>
要为 RenderMacroContent 函数编码此内容,请执行以下步骤
1. 将“<”更改为“<”
- <?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>
2. 将“>”更改为“>”
- <?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>
3. 将“"”更改为“"”
- <?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>
4. 将其放入 XSLT 时,将整个内容用单引号括起来
- umbraco.library:RenderMacroContent('<?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>'...
<xsl:value-of select="umbraco.library:RenderMacroContent('<?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>', @id)" disable-output-escaping="yes"/>
此字符串当然应该被编码,所以它看起来像这样
<xsl:value-of select="umbraco.library:RenderMacroContent('<?UMBRACO_MACRO macroAlias="LatestNews" numberOfItems="3"></?UMBRACO_MACRO>', @id)" disable-output-escaping="yes"/>
如果您希望能够将标准模板宏代码“剪切并粘贴”到您的 XSLT 中并让它正确编码,请将这段代码添加到一个新的 XSLT 中
<xsl:variable name="Macro"> <xsl:value-of select="{将您的模板宏代码粘贴到这里}"/> </xsl:variable> <xsl:variable name="MacroEncoded"> <xsl:value-of select="umbraco.library:Replace(umbraco.library:Replace(umbraco.library:Replace($Macro, '"', '"'), '>', '>'), '<', '<')"/> </xsl:variable>
然后使用它将编码后的 XSLT 呈现到浏览器中的测试页面(然后您可以将它剪切并粘贴到您的 XSLT 代码中)
<xsl:value-of select="$MacroEncoded" />
警告,Umbraco 4 中带有新模板的宏具有不同的语法,但是 XSLT 扩展仍然需要旧的 v3 语法,因此如果您将插入 v 4 模板中的宏复制过来,则需要将其更改为 v3
例如
<umbraco:Macro Alias="Name" runat="server"></umbraco:Macro>
变为
<?UMBRACO_MACRO macroAlias="Name" runat="server"></?UMBRACO_MACRO>
(带转义)