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>
(帶轉義)