2015-02-23 72 views
0

我试图使用生成opengraph标签以下内容:上Sitecore的渲染URL没有代码文件的背后7.0

<meta content="<%= ((Sitecore.Data.Fields.LinkField)Sitecore.Context.Item.Fields["Open Graph URL"]).Url %>" property="og:url" /> 
<meta content="<%= ((Sitecore.Data.Fields.LinkField)Sitecore.Context.Item.Fields["Open Graph Image"]).Url %>" property="og:image" /> 

返回:

<meta content="/Site/Site/Home/Page Directory/Page Name property="og:url"> 
<meta content="/sitecore/media library/Images/Social Image Directory/Image" property="og:image"> 

我希望能得到 “http://www.example.com/page-directory/page-name”和“http://www.example.com/media-library/images/social-image-directory/image.jpg”作为输出。

使用Sitecore 7.0而不访问.cs文件,这可能吗?

回答

2

您需要使用ServerUrl为URL设置LinkManager选项,并使用.MediaItem获取目标MediaItem。对于像场 尝试出头:

<%@ Import Namespace="Sitecore.Resources.Media" %> 
    <% 
     var ogImage = string.Empty; 
     Sitecore.Data.Fields.ImageField ogImageField = Sitecore.Context.Item.Fields["Open Graph Image"]; 
     if (ogImageField != null && ogImageField.MediaItem != null) 
     { 
      var options = new MediaUrlOptions(); 
      options.AbsolutePath = true; 
      options.AlwaysIncludeServerUrl = true; 
      ogImage = MediaManager.GetMediaUrl(ogImageField.MediaItem, options); 
     } 

     %><meta content="<%= ogImage %>" property="og:image"> 

您可以定义在web.config中targetHostName或包含文件<sites><site ..... targetHostName="www.yoursite.com">

#Tip 20 Url with hostname for example a og:image

1

的URL属性不会产生正确的URL的内部项目。媒体项目

<%= LinkManager.GetItemUrl(Sitecore.Context.Item.Fields["Open Graph URL"].TargetItem) %> 

<%= Sitecore.Resources.Media.MediaManager.GetMediaUrl(Sitecore.Context.Item.Fields["Open Graph Image"].TargetItem) %> 

但是,你要注意,这个假设链接域肯定指向一个内部项目(据:

你也可以使用这个可能指向外部URL)。如果您能够编写的内容不仅仅是独立的内联语句,那么我会建议使用LinkField的IsInternal属性来执行此检查。

对此SO问题的回答非常全面:GeneralLink in Sitecore