2015-10-05 85 views
0

我很擅长Razor/MVC,但对Umbraco来说很新。我有一个源代码设计,其中包含一个Jpeg和一个包含在SVG中的灰度PNG,这样我可以在比通常少得多的内存中获得透明背景图像。Umbraco媒体类型中的多个图像SVG文件

只是想知道我怎么能成立一个一把umbraco媒体类型是放置SVG文件,并且支持位图到同一文件夹。

我试图创建具有3个上传通道一个新的媒体类型,并创建新的类型的文件夹类型,但是当我看着我的文件夹/媒体/ 1071,它仅包含了SVG。

有没有办法让一把umbraco所有3个文件上传到同一个文件夹,这样的SVG文件可以找到支持文件?

感谢,

马克

回答

0

我不知道这是一把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做的事情。我更喜欢用系统来对付它。