我很擅长Razor/MVC,但对Umbraco很陌生。我有一个源代码设计,其中包含一个Jpeg和一个用SVG封装的灰度PNG,这样我就可以在比平常少得多的内存中拥有透明的背景图像。
只是想知道如何在Umbraco中设置一个媒体类型,将SVG文件和支持的位图放在同一个文件夹中。
我已经尝试创建一个新的媒体类型与3上传槽,它创建新的类型作为文件夹类型,但当我看我的文件夹/media/1071,它只包含SVG。
是否有一种方法可以让Umbraco将所有3个文件上传到同一个文件夹,以便SVG文件可以找到支持文件?
谢谢,马克
我不确定这是否是Umbraco中正确的方法,但我确实设法让我的透明JPeg类型的东西工作。
我没有新建媒体类型,而是新建文档类型。我还为文档类型创建了一个默认模板。
通过向文档类型添加两个媒体选择器属性,并在模板中将Content-Type设置为"image/svg+xml",我就能够从模板动态生成适当的svg文件了。
所以这就是我的新DocType的模板。
@inherits Umbraco.Web.Mvc.UmbracoTemplatePage
@{
Layout = null;
UmbracoContext.HttpContext.Response.ContentType = "image/svg+xml";
var colourLayer = Umbraco.Media(Umbraco.Field("colourLayer").ToString());
var maskLayer = Umbraco.Media(Umbraco.Field("maskLayer").ToString());
}<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 @colourLayer.umbracoWidth @colourLayer.umbracoHeight" enable-background="new 0 0 @colourLayer.umbracoWidth @colourLayer.umbracoHeight" xml:space="preserve">
<image overflow="visible" width="@colourLayer.umbracoWidth" height="@colourLayer.umbracoHeight" mask="url(#imgmask)" xlink:href="@colourLayer.umbracoFile" />
<mask id="imgmask">
<image overflow="visible" width="@colourLayer.umbracoWidth" height="@colourLayer.umbracoHeight" xlink:href="@maskLayer.umbracoFile" />
</mask>
</svg>
请让我知道如果这不是怎么做的事情在Umbraco。