0

我试图让内容编辑者能够通过 Media Picker 属性选择页面上的主横幅图像。

我尝试了以下标准内联 XSLT:

<umbraco:Item runat="server" field="banner" xslt="concat('&lt;img src=&quot;', umbraco.library:GetMedia({0},0)/umbracoFile, '&quot; /&gt;')" xsltDisableEscaping="true" />

但在我的简单模板中:

<asp:Content ContentPlaceHolderID="ContentPlaceHolderDefault" runat="server">
<header class="home-header">
    <div class="logo-wrapper">
        <umbraco:Item runat="server" field="banner" xslt="concat('&lt;img src=&quot;', umbraco.library:GetMedia({0},0)/umbracoFile, '&quot; /&gt;')" xsltDisableEscaping="true" />
    </div>
</header>
</asp:Content>

呈现的 HTML 出现在:

<header class="home-header">
    <div class="logo-wrapper">

    </div>
</header>

我读过关于使用宏来渲染图像的文章,但我的 Umbraco 知识有限。如果有人可以提供实际添加 XSLT 宏的步骤,我很乐意尝试一下。

不幸的是,我们现在也被困在 Umbraco v4.9 上,所以<umbraco:Image />对我来说没有标签。

4

2 回答 2

1

我建议你使用 ac# Umbraco 宏而不是 xslt。Umbraco 4.9 可以做到这一点。宏可以在不同的文件中,也可以简单地使用内联宏:

<umbraco:Macro  runat="server" language="cshtml">   
    @if (@Model.visual != "")
    {
        <img src="@Model.Media("banner", "umbracoFile")" class="foto" />
    }
</umbraco:Macro>

如同 <img src="@node.Media("banner", "umbracoFile")" />

于 2015-03-30T11:02:02.317 回答
0

如果其他人发现了这个并且你没有使用 MVC,你可以在你的模板中使用这个方法来获取你从媒体选择器中选择的图像路径

<umbraco:Item field='headerImage' runat='server'xslt='umbraco.library:GetMedia({0},true())/umbracoFile'xsltDisableEscaping='true'></umbraco:Item>

其中 headerImage 是文档类型中属性名称的别名。例如,这将呈现类似“/media/1002/sample.jpg”的内容

于 2015-11-03T13:02:27.367 回答