我刚刚将Sitecore 6.5解决方案升级到Sitecore 7.这是一个非常基本的网站,所以没有重大问题。 我遇到了一个问题。
我希望在xslt中获取图像项的src。我是这样做的;
sc:fld('myImage',.,'src')
此输出为~/media/folder/myimage.ashx
但由于某些原因,这不起作用 - 意味着没有显示图像。当我复制src并尝试直接在新选项卡中打开i时,我会被重定向到Sitecore登录。并且图像上没有安全设置。
然后我发现,例如,当使用sc:image时,我得到另一个src,它有效:
/sitecore/shell/~/media/folder/myimage.ashx
但上述对我来说不合适?
发生了什么,我该如何解决?除了网站定义和数据文件夹路径之外,我在web.config中没有更改任何内容。否则它完全是库存。
答案 0 :(得分:4)
使用斜杠'/'作为sc:fld的输出前缀,以便完整路径变为
/~/media/folder/myimage.ashx
答案 1 :(得分:0)
现在您可以使用sc:field
代替sc:fld
,您将获得友好的网址
答案 2 :(得分:0)
对于大家来说,这通常是一个混乱点,所以让我们来看看Sitecore生成和处理媒体请求的方式。这将使您了解它如何在sc:field()的“引擎盖下”工作。
首先,检查您的配置。 MediaLinkPrefix指定HTML呈现时的媒体前缀。
<setting name="Media.MediaLinkPrefix" value="~/media/" />
第二步,只要HTML形成并且链接在href属性中包含您想要的媒体前缀,您的进一步步骤就是设置处理这些链接的处理程序。可以在customHandlers节点中的以下配置设置中完成:
<handler trigger="~/media/" handler="sitecore_media.ashx" />
最后,您需要将处理程序与将为您的请求提供服务的确切代码相关联。比在httpHandlers节点中配置,如下所示:
<add verb="*" path="sitecore_media.ashx" type="Namespace.ClassName, YourLibrary" />
如果您的MediaPrefix正在生成相对链接,请确保生成的路径是正确的网站根目录。用'/'开始相对路径将确保。
希望这能很好地解释这个机制,但是请随意询问有关它如何在Sitecore中运行的进一步问题。
干杯!