Sitecore版本化图像未加载

时间:2011-12-07 20:24:36

标签: sitecore sitecore6 sitecore-media-library

我正在运行Sitecore 6.5并且拥有一个数据模板,其中包含一个图像字段和一个基于该模板的项目。该网站有两种语言。

如果我在项目的En和Fr版本中使用版本化图像(媒体库中包含En和Fr版本的一个项目),则使用查询字符串sc_lang = en或发布网站并在网站中切换语言fr,除了图像之外,页面中的所有内容都会发生变化。

但如果我使用两个不同的图像(媒体库中的两个项目),则在语言之间切换时会加载正确的图像。

知道为什么会这样吗?

由于 Ť

更新

我尝试使用共享选项但是没有用。我还注意到,如果我只是添加查询参数并按Enter键,页面将更改为正确的语言,但图像不会直到我点击刷新按钮。这似乎是一个缓存问题,但为什么它只发生在版本化的图像上。

2 个答案:

答案 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支持确认这是一个错误,这是他们的临时解决方法:

  1. Sitecore.Support.320556.dll复制到website\bin文件夹,dll尚未在SDN上,http://tareknasser.com/projects/sitecore/Sitecore.Support.320556.dll

  2. 在web.config文件中查找并注释掉以下节点:

  3. <processor type="Sitecore.Pipelines.RenderField.GetImageFieldValue, Sitecore.Kernel"/>
    

    并在注释后面添加以下内容:

    <processor type="Sitecore.Support.Pipelines.RenderField.GetImageFieldValue, Sitecore.Support.320556"/>
    

    在发布网站和页面编辑器中,这对我有用。