我正在使用umbraco v4.7.0。我为Usercontrol.ascx创建了一个宏,并以通常的方式添加它,并勾选“在编辑器中使用”选项。
它在RTE中渲染得很好,但是在查看页面时它不会加载宏。
我已经google了一段时间了,无法找到解决这个问题的方法,我也一直在umbraco论坛/ bug列表上看到有各种各样的帖子,但我还没有找到解决方案。
我在这里错过了一些简单的东西吗?这在之前的版本中运行良好。
答案 0 :(得分:5)
最后得到答案........在模板主页中使用:
<umbraco:Item field="bodyContent" runat="server"></umbraco:Item>
而不是
@Model.bodyContent
因此宏(通过RTE添加的宏)本身不会被另一个宏添加(在这种情况下是显示“bodyContent”字段的宏)。
答案 1 :(得分:5)
如初始问题中所述,如果您在HTML中看到的内容类似于
<?UMBRACO_MACRO macroAlias="macroNameHere" />
...而且你没有看到任何渲染。那么这是一个解决方案:
在处理文档类型的XSLT(宏)中,您可能会遇到以下情况:
<xsl:value-of select="$currentPage/bodyText" />
将其更改为:
<xsl:value-of select="umbraco.library:Item($currentPage/@id,'bodyText')" />
这将渲染bodyText中包含的宏。
请注意,umbraco将在宏输出周围创建一个DIV。要摆脱那个DIV,你要么修改umbraco源代码,要么做例如jQuery搜索和替换以摆脱它。
答案 2 :(得分:1)
您可能需要用户控制
<form runat="server">
尝试将其插入模板中 - 这为我创建了一个服务器错误,我发现了问题!
这样的事情:
<form runat="server">
<asp:ContentPlaceHolder ID="mainContent" runat="server" />
</form>
您将usercontrol放在占位符中的位置。
答案 3 :(得分:0)
在Richtext框中使用宏
您必须选中“宏属性”标签下的“在编辑器中使用”复选框。
在XSLT中打印
后使用的宏值<xsl:value-of select="umbraco.library:Item(@id,'bodyContent')" />
渲染宏值。
而不是
<xsl:value-of select="bodyContent" />