我已完全安装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}&as=1" />
有没有人知道在使用XSLT时防止使用〜渲染图像网址的方法?我的初始设置和配置是否有问题?
答案 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;
远非理想,但出于这些目的,这种解决方法起到了作用。