2

我在 umbraco xslt 代码中的 url 末尾使用“?alttemplate=TemplateName”

这是示例:<a href="{umbraco.library:NiceUrl(@id)}?alttemplate=CommunityVideo">Click here</a>

当用户单击链接时,将触发一个弹出窗口(fancybox),并在其中呈现适当的内容。

此弹出窗口运行良好 - 唯一的问题是与 umbraco 中的节点关联的模板具有 RTE(富文本编辑器)。我在 RTE 中输入的内容没有显示,这很奇怪,因为我在“CommunityVideo”模板上有 umbraco 字段选择项。

从理论上讲,内容应该呈现,但事实并非如此。

这是填充内容的代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title><umbraco:Item field="pageName" runat="server" /></title>
  <link rel="stylesheet" href="/css/main.css" type="text/css" />
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
</head>
<body id="popup">
  <div id="comm-video-wrap">
    <umbraco:Item field="bodyText" runat="server" />
  </div>
</body>

有任何想法吗?

4

2 回答 2

1

有很多不太可能的原因。

首先,您在项目上拼错了别名-我猜文档类型上的名称是“Body Text”或“BodyText”或“bodyText”-所有这些都会生成bodyText的别名-如果不是这样可以成为问题。

其次,是否有隐藏渲染项目的样式表设置 - 使用萤火虫检查出来。

使用 alttemplate 应该可以工作 - 但您需要确保它运行您认为的模板。

可能是 RTE 中没有可用的文本,您可以通过添加textIfEmpty 属性来验证。

<umbraco:item field="bodyText" textIfEmpty="There is no commentary text" runat="server" />

还有其他 umbraco:item 属性可能有助于调试,尝试将 umbraco:item 语句调整为:

<umbraco:item field="bodyText" insertTextBefore="**BEFORE**" insertTextAfter="**AFTER**" htmlEncode="true" textIfEmpty="There is no commentary text" runat="server"/>

如果您看不到任何文本,那么您认为正在运行的模板根本就不是。

于 2012-08-02T09:06:37.267 回答
0

另一种可能性是您的模板名称不准确(大小写和全部)。fancybox 是否在执行 AJAX 调用来获取页面?它是在响应中从上面获取标记还是空白?

于 2012-08-02T19:57:16.690 回答