3

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

如果我在项目的 En 和 Fr 版本中使用版本化图像(媒体库中的一个项目具有 En 和 Fr 版本)然后发布站点并使用查询字符串 sc_lang=en 或 fr 切换站点中的语言,一切除图像外的页面变化。

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

知道为什么会这样吗?

谢谢

更新

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

4

2 回答 2

3

<sc:image />和控件似乎存在错误,FieldRenderer因为生成的 URL 在查询字符串中没有语言。

你可以尝试这样的事情:

<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);
于 2011-12-07T21:04:10.773 回答
1

Sitecore 支持确认这是一个错误,这是他们的临时解决方法:

  1. 复制Sitecore.Support.320556.dllwebsite\bin文件夹,这个dll还没有在SDN上,http ://tareknasser.com/projects/sitecore/Sitecore.Support.320556.dll

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

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

并在评论后添加以下内容:

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

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

于 2011-12-12T15:39:38.457 回答