我正在运行Sitecore 6.5并且拥有一个数据模板,其中包含一个图像字段和一个基于该模板的项目。该网站有两种语言。
如果我在项目的En和Fr版本中使用版本化图像(媒体库中包含En和Fr版本的一个项目),则使用查询字符串sc_lang = en或发布网站并在网站中切换语言fr,除了图像之外,页面中的所有内容都会发生变化。
但如果我使用两个不同的图像(媒体库中的两个项目),则在语言之间切换时会加载正确的图像。
知道为什么会这样吗?
由于 Ť
更新
我尝试使用共享选项但是没有用。我还注意到,如果我只是添加查询参数并按Enter键,页面将更改为正确的语言,但图像不会直到我点击刷新按钮。这似乎是一个缓存问题,但为什么它只发生在版本化的图像上。
答案 0 :(得分:3)
<sc:image />
和FieldRenderer
控件似乎存在错误,因为生成的网址在查询字符串中没有语言。
您可以尝试这样的事情:
<asp:Literal ID="image" runat="server"><img src="{0}" /></asp:Literal>
Sitecore.Resources.Media.MediaUrlOptions options = new Sitecore.Resources.Media.MediaUrlOptions
{
Language = Sitecore.Context.Language
};
Sitecore.Data.Fields.ImageField imgField = (Sitecore.Data.Fields.ImageField)Sitecore.Context.Item.Fields["Image"];
string url = Sitecore.Resources.Media.MediaManager.GetMediaUrl(imgField.MediaItem, options);
image.Text = string.Format(image.Text, url);
答案 1 :(得分:1)
Sitecore支持确认这是一个错误,这是他们的临时解决方法:
将Sitecore.Support.320556.dll
复制到website\bin
文件夹,dll尚未在SDN上,http://tareknasser.com/projects/sitecore/Sitecore.Support.320556.dll
在web.config文件中查找并注释掉以下节点:
<processor type="Sitecore.Pipelines.RenderField.GetImageFieldValue, Sitecore.Kernel"/>
并在注释后面添加以下内容:
<processor type="Sitecore.Support.Pipelines.RenderField.GetImageFieldValue, Sitecore.Support.320556"/>
在发布网站和页面编辑器中,这对我有用。