Umbraco 4.9 在模板中显示媒体选择器图像

Umbraco 4.9 Display Media Picker Image in Template

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

我已经尝试了标准内联 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 /> 标签。

我建议您使用 c# 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")" />

相同

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

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

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