2

我刚刚将 Sitecore 6.5 解决方案升级到 Sitecore 7。这是一个非常基本的站点,所以没有大问题。我遇到了一个问题。

有几个地方我想在 xslt 中获取图像项的 src。我这样做是这样的;

sc:fld('myImage',.,'src')

这个的输出是~/media/folder/myimage.ashx

但由于某些原因,这不起作用 - 这意味着没有显示图像。当我复制 src 并尝试直接在新选项卡中打开我时,我会被重定向到 Sitecore 登录。并且图像上没有安全设置。

然后我发现,例如,当使用 sc:image 时,我得到了另一个 src,它可以工作: /sitecore/shell/~/media/folder/myimage.ashx 但上面的内容对我来说不合适吗?

发生了什么事,我该如何解决?除了站点定义和数据文件夹路径之外,我在 web.config 中没有更改任何内容。否则,它完全是库存。

4

3 回答 3

4

Prefix the output of sc:fld with a slash '/' so the full path becomes

/~/media/folder/myimage.ashx
于 2013-11-04T09:16:33.833 回答
0

现在您可以使用sc:field而不是,sc:fld您将获得友好的网址

于 2015-07-15T12:57:31.180 回答
0

对于人们来说,这通常是一个困惑点,所以让我们来看看 Sitecore 生成和处理媒体请求的方式。这将使您了解它在 sc:field() 的“引擎盖下”是如何工作的。

首先,检查您的配置。MediaLinkPrefix 指定您的媒体前缀将在 HTML 呈现时使用。

<setting name="Media.MediaLinkPrefix" value="~/media/" />

第二步,一旦 HTML 形成并且链接在 href 属性中包含您想要的媒体前缀,您的下一步将是设置一个处理程序来处理这些链接。可以在 customHandlers 节点中的以下配置设置中完成:

<handler trigger="~/media/" handler="sitecore_media.ashx" />

最后,您需要将您的处理程序与将服务您的请求的确切代码相关联。Than 在 httpHandlers 节点中配置,如下所示:

<add verb="*" path="sitecore_media.ashx" type="Namespace.ClassName, YourLibrary" />

如果您的 MediaPrefix 正在生成相对链接,请确保生成的路径相对于您网站的根目录是正确的。以“/”开头的相对路径将确保这一点。

希望这可以很好地解释该机制,但是请随时询问有关它如何在 Sitecore 中工作的进一步问题。

干杯!

于 2015-07-17T15:29:11.503 回答