我遇到了sitecore 8.1中调整大小图片的问题。我在网上看了很多文章但是找不到我想要的东西,可能是我想到的不是正确的方法,但猜猜我还在这里发帖,希望有人可以指导我。
我们有基于WebApi的项目,我们实际上没有基于Json请求和响应的布局。看起来像这样
回复
"components": [
{
"type": "background",
"parallax": 0,
"data": {
"type": "image",
"value": "-/media/images/pages/home/section-2.jpg"
}
},
此Json响应正在缓存,因此不希望在此阶段返回散列图像。因此,当返回图像src传递到图像元素时,系统将检测设备类型并将其传递给查询字符串,如下所示
"-/media/images/pages/home/section-2.jpg?type=mobile"
基于查询字符串中的类型定义。 我正在从sitecore项加载调整大小图像的宽度和高度值。所有这一切都发生在MediaRequestHandler类和&下面的DoProcessRequest方法示例
public class MediaRequestHandler : Sitecore.Resources.Media.MediaRequestHandler
{
protected override bool DoProcessRequest(HttpContext context, MediaRequest request,
Sitecore.Resources.Media.Media media)
{
//Load sitecore item based on the type define in querystring
if (!string.IsNullOrEmpty(context.Request.QueryString["type"]))
{
var mediaItemHashedUrl = Sitecore.Resources.Media.HashingUtils.ProtectAssetUrl(
Sitecore.Resources.Media.MediaManager.GetMediaUrl(
media.MediaData.MediaItem,
new MediaUrlOptions()
{
Language = Context.Language,
Width = 100, // Width val would be coming from siteore item
Height = 75 // Height val is also coming from siteore item
}));
}
}
return base.DoProcessRequest(context, request, media);
}
现在的问题是如何在没有传递额外请求的情况下加载此散列图像?
任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
您可以在request.options中传递高度和宽度,如下所示。我自己没试过。但是,这应该有用。
public class MediaRequestHandler : Sitecore.Resources.Media.MediaRequestHandler
{
protected override bool DoProcessRequest(HttpContext context, Sitecore.Resources.Media.MediaRequest request,
Sitecore.Resources.Media.Media media)
{
if (!string.IsNullOrEmpty(context.Request.QueryString["type"]))
{
request.Options.Height = 120;//desired height here
request.Options.Width = 180;//desired width here
}
return base.DoProcessRequest(context, request, media);
}
}