Umbraco在显示之前不执行代码

时间:2012-01-19 21:07:49

标签: image url umbraco

我正在做一个Umbraco网站(我的第一个),我在我的一个页面上加载图像时遇到了严重问题。

我创建了一个新模板和代码的一部分,我插入了以下内容:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">"
<xsl:value-of select="$currentPage/../@nodeName" />
</a>

当我在浏览器中查看结果时,它显示的结果完全相同,在渲染之前不会执行。也就是说,当我在浏览器中查看“查看源代码”时,我看到了这一点:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">
<xsl:value-of select="$currentPage/../@nodeName" />
</a>

令人困惑的部分是当我运行以下内容时:

<img src='<umbraco:Item field="articlePhoto" runat="server"></umbraco:Item>' />

它实际上会生成此标记:

<img src="~/media/554/bath.png">

我要做的主要是将动态字段/网址加载到图片代码中。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:1)

我假设你在这里实际上有两个问题而且它们没有联系。


第一个问题:代码未执行

您正在尝试直接在模板中执行XSLT代码。模板只接受您在ASPX页面中通常会找到的内容(例如HTML,服务器控件,注册的Umbraco控件等),并且不会解析任何XSLT结构,而是直接将它们输出到源代码中,如您的问题所示。

您需要在开发人员部分创建一个XSLT文件及其关联的宏,该宏通常与XSLT一起自动创建。然后,您只需将宏导入模板。

模板代码段:

<umbraco:Macro Alias="MyMacro" runat="server" />

XSLT代码段:

<a href="{umbraco.library:NiceUrl($currentPage/../@id)}">
    <xsl:value-of select="$currentPage/../@nodeName" />
</a>


第二个问题:图片未显示

奇怪的是,Umbraco预先发布了~符号,因为你的代码确实是正确的(它正在我的Umbraco上工作 - 版本4.7.1)。作为解决方法,尝试创建XSLT文件并使用以下XSLT代码。至少使用XSLT,您可以放入编码逻辑,当您的页面变得更加复杂时,这将需要编码。

XSLT代码段:

<xsl:if test="$currentPage/articlePhoto != ''">
    <img src="{$currentPage/articlePhoto}" />
</xsl:if>


希望有所帮助。