如何防止sitecore将~添加到映像路径?

如何防止sitecore将~添加到映像路径?,sitecore,Sitecore,我已经完全安装了Sitecore 6.5、DMS 2.0以及电子商务模块和示例站点(v1.2)。当我安装了示例站点时,大多数图像似乎都被破坏了。呈现的HTML包含img src属性,这些属性包含以/~/开头的路径。例如: http://~/media/Images/Ecommerce/Examples/Products/Digital%20SLR/D200.ashx?w=250&as=1 现在,我假设这是因为示例站点已经有一段时间没有更新以保持Sitecore更改的最新状态,或者存在从

我已经完全安装了Sitecore 6.5、DMS 2.0以及电子商务模块和示例站点(v1.2)。当我安装了示例站点时,大多数图像似乎都被破坏了。呈现的HTML包含img src属性,这些属性包含以/~/开头的路径。例如:

http://~/media/Images/Ecommerce/Examples/Products/Digital%20SLR/D200.ashx?w=250&as=1
现在,我假设这是因为示例站点已经有一段时间没有更新以保持Sitecore更改的最新状态,或者存在从中返回的媒体路径的配置。下面是一个用于编写图像的XSLT呈现示例:

<img id="product_shot" class="fix" alt="{sc:fld('alt',.)}" title="{sc:fld('alt',.)}" src="/{sc:GetMediaUrl(.)}?w={$ImageWidth}&amp;as=1" />


有人知道在使用XSLT时如何防止图像url被~呈现吗?我的初始设置和配置有问题吗?

John West在这里给出了一个很好的分类:

重要信息是“Media.MediaLinkPrefix”的配置。您可以创建修补程序文件,或修改Web.config以将其更改为其他内容。我读过的地方有人把它改成了单破折号“-/media”


-/媒体

约翰·韦斯特在这里给出了一个很好的分类:

重要信息是“Media.MediaLinkPrefix”的配置。您可以创建修补程序文件,或修改Web.config以将其更改为其他内容。我读过的地方有人把它改成了单破折号“-/media”


-/媒体

我能想到的另一个解决方案是更改web.config,如下所示:

InvalidItemNameChars: Add “~“

但这不仅适用于图像,也适用于Sitecore内容树中的任何内容项

我能想到的另一个解决方案是更改web.config,如下所示:

InvalidItemNameChars: Add “~“

但这不仅适用于图像,也适用于Sitecore内容树中的任何内容项

这与其说是一种解决方案,不如说是一种变通办法。因为我是为了演示而设置的,所以它会很好

在web.config中,我更改了
Media.MediaLinkPrefix
的值,以包括主机名媒体前缀。由于Sitecore电子商务示例站点XSLT呈现使用
/
字符启动对
sc:GetMediaUrl(.)
的所有调用,并且
sc:GetMediaUrl(.)
本身将其第一个字符返回为
/
,这将导致使用完整主机名写入src属性值,然后正确解析:

/>


远非理想,但出于这些目的,此解决方案成功了。

与其说是解决方案,不如说是解决方案。因为我是为了演示而设置的,所以它会很好

在web.config中,我更改了
Media.MediaLinkPrefix
的值,以包括主机名媒体前缀。由于Sitecore电子商务示例站点XSLT呈现使用
/
字符启动对
sc:GetMediaUrl(.)
的所有调用,并且
sc:GetMediaUrl(.)
本身将其第一个字符返回为
/
,这将导致使用完整主机名写入src属性值,然后正确解析:

/>


远非理想,但出于这些目的,此解决方案起到了作用。

通常,当我使用XSLT时,我有没有理由不在这里使用它?嗯,仔细想想,您是否在IIS中设置了通配符映射?我以前也看到过这会导致媒体库项目出现问题。您是否有任何可用的媒体文件URL?@patrickmjones xslt模板是由sitecore开发的,它是电子商务入门网站示例包。问题是src属性文件以src=“//~/”开头,这是不正确的。它只能是一个“/”字符。我的想法是,防止sc:GetMediaUrl(.)返回以“/”开头的值是一种sitecore配置,但我不确定在使用XSLT时通常会在哪里设置该值。我有任何理由不在这里使用它吗?嗯,再想想,您是否在IIS中设置了通配符映射?我以前也看到过这会导致媒体库项目出现问题。您是否有任何可用的媒体文件URL?@patrickmjones xslt模板是由sitecore开发的,它是电子商务入门网站示例包。问题是src属性文件以src=“//~/”开头,这是不正确的。它只能是一个“/”字符。我的想法是,防止sc:GetMediaUrl(.)返回以“/”开头的值是一种sitecore配置,但我不确定该设置在哪里。我认为您的做法是正确的,但我认为这并不能解决问题。即使进行了这些更改,将URL写入img标记的结果也是以src=“/-/media/Images/Ecommerc…”开头,这等同于尝试查找主机名“-”(而不是我在下面设置的sitecore.local)。因此,我需要删除XSLT中的所有前导“/”,我假设这不是正确的解决方案,或者有没有办法使sc:GetMediaUrl(.)的返回值不以“/”字符开头?我可以确认删除第一个“/”会使src=”“属性正确,并且图像显示良好,因此,我很有信心这里应该有一个配置更改,以防止sc:GetMediaUrl(.)返回以“/”开头的字符。我希望Sitecore在发布他们的示例站点时,会附带一些您在web.config中设置的坏XSLT(或补丁覆盖)?是alwaysIncludeServerUrl=“false”吗?“网站”(或任何网站)部分中的hostName属性是什么?是的,alwaysIncludeServerUrl处于其默认值(“false”),示例e-com网站的站点条目不包含hostName属性。我认为您的思路是正确的,但我认为这并不能解决问题。即使进行了这些更改,URL也会被写入img标记,最终会停止