如何防止sitecore在图像路径中添加〜?

时间:2013-01-08 23:48:17

标签: 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时防止使用〜渲染图像网址的方法?我的初始设置和配置是否有问题?

3 个答案:

答案 0 :(得分:4)

约翰·韦斯特在这里给出了一个很好的细分:http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2012/12/Sitecore-Idiosyncrasies-Media-URLs.aspx

重要信息是“Media.MediaLinkPrefix”的配置。您可以创建补丁文件,或修改Web.config以将其更改为其他内容。我读过的地方让人们把它改成一个短划线“ - / media”

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <settings>
      <setting name="Media.RequestExtension">
        <patch:attribute name="value"></patch:attribute>
      </setting>
      <setting name="Media.MediaLinkPrefix">
        <patch:attribute name="value">-/media</patch:attribute>
      </setting>
    </settings>
    <customHandlers>
      <handler trigger="-/media/" handler="sitecore_media.ashx"/>
    </customHandlers>
  </sitecore>
</configuration>

答案 1 :(得分:0)

我能想到的另一个解决方案就是改变你的web.config:

InvalidItemNameChars: Add “~“

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

答案 2 :(得分:0)

这更像是一种解决方法,而不是一种解决方案。由于我是为了演示而设置的,所以它会做得很好。

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

<img src="//sitecore.local/~/media/Images/Ecommerce/Examples/Products/Digital%20SLR/D200.jpg /&gt;

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