2017-04-19 56 views
0

我正在使用sitecore 7单个站点实例。 内容编辑器生成链接到其他网页Sitecore的这种格式Sitecore 7,链接管理器,alwaysIncludeServerUrl不工作

<a href="~/link.aspx?_id=C136420D804946BA83DEF823817F5944&amp;_z=z">Agriculture</a> 

后发布链接不会转化为实际的服务器相关的URL。 我已经chnaged链接管理器设置“alwaysIncludeServerUrl”为true,但仍然没有得到正确的URL。

我已发布该页面,但仍未显示实际的网址。

更新:我不能在这里使用字段控制,因为有一些额外的逻辑控制着什么文本需要被渲染。例如,如果定义了页面数据源,则使用该数据源,否则使用当前项目的“ContentBlock”字段。

 public string ContentBlockContent = ""; 
     Sitecore.Data.Items.Item currentItem; 

     if (Parent is Sublayout && !string.IsNullOrEmpty(((Sublayout) Parent).DataSource)) 
     { 
      currentItem = Sitecore.Context.Database.GetItem(((Sublayout) Parent).DataSource); 
     } 
     else 
     { 
      currentItem = Sitecore.Context.Item; 
     } 

     if (currentItem.Fields["ContentBlock"] != null) 
     { 
      ContentBlockContent = currentItem.Fields["ContentBlock"].ToString(); 
     } 
     if (currentItem.Fields["PageContentSource"] != null) 
     { 
      var contentPageSource = currentItem.Fields["PageContentSource"]; 
      var sourceItem = Sitecore.Context.Database.GetItem(contentPageSource.ToString()); 
      if (sourceItem != null && sourceItem.Fields["ContentBlock"] != null) 
      { 
       ContentBlockContent = sourceItem.Fields["ContentBlock"].ToString(); 
      } 
     } 

这就是“ContentBlockContnet”属性如何呈现在页面上。

<%= ContentBlockContent %> 

回答

1

>>发布后链接没有转换为与服务器实际相关的URL。 它在发布后不会被转换,它在页面呈现时被转换。 确保您使用Sitecore呈现控件呈现内容字段,例如sc:text, sc:link or FieldRenderer。通过这种方式,Sitecore将运行“renderField”管道,该管道注意链路转换。

+0

我已经添加了一点点细节。 – Ali

+0

终于奏效了。我使用了FieldRenderer.Render(sourceItem,“ContentBlock”) – Ali