0

我在 sitecore 中有一般字段,可以有内部或外部链接。我只需要为外部链接添加 target="_blank" 。

我尝试在 Sitecore 中单击“插入外部链接”时将目标窗口设置为新浏览器,但没有用。

如果我也从代码中添加 target=_blank 也没关系。

代码 :

        UrlOptions urlOptions = new UrlOptions();
        urlOptions.LanguageEmbedding = LanguageEmbedding.Never;                        

        Title = FieldRenderer.Render(item, "Title");            
        Summary = FieldRenderer.Render(item, "Short Description");
        Details = FieldRenderer.Render(item, "Details");
        Sitecore.Data.Fields.LinkField lf = item.Fields["TitleUrl"];

        if (lf.Url != "")
        {                              
            ItemUrl = EFI.Library.SitecoreDataUtil.GetUrlForLinkField(lf, item, urlOptions);                

        }
        else
        {
            ItemUrl = LinkManager.GetItemUrl(item);
        }
4

3 回答 3

5

您是否尝试过以下操作?

在 Sitecore 中使用 target="_blank" 呈现一般链接

如果您不想嵌入语言,您可以通过设置为 web.config 中的所有链接设置它languageEmbedding="never"

<linkManager defaultProvider="sitecore">
  <providers>
    <clear />
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="true" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="never" languageLocation="filePath" shortenUrls="true" useDisplayName="false" />
  </providers>
</linkManager>

或者,您可以在所有以 http 开头的锚标记上使用 jQuery 在新窗口中打开链接

$(document).ready(function(){
  $('a[href^=http]').click(function(){
    window.open(this.href);
    return false;
  });
});
于 2013-05-16T06:31:04.453 回答
2

我同意 jammykam,如果你不想嵌入语言,最好在 web.config 中设置它。这样一来,它将全面保持一致(您不会忘记)。

您可以使用 . 检查您的链接是内部链接还是外部链接lf.IsInternal。我想你可能会做类似的事情:

UrlOptions urlOptions = new UrlOptions();
urlOptions.LanguageEmbedding = LanguageEmbedding.Never;                        

Title = FieldRenderer.Render(item, "Title");            
Summary = FieldRenderer.Render(item, "Short Description");
Details = FieldRenderer.Render(item, "Details");
Sitecore.Data.Fields.LinkField lf = item.Fields["TitleUrl"];

if (!lf.IsInternal)
{
    lf.Target = "_blank";
}

ItemUrl = FieldRenderer.Render(item, "TitleUrl");
于 2013-05-16T08:07:52.047 回答
0

有趣的是,我没有看到 <sc:link /> 控件的提及:

<sc:link runat="server" field="TitleUrl" />

而且……就是这样。在 CMS 中选择的链接目标将适用 - 当然,这取决于您的内容作者选择正确的目标,但为“规则的例外”提供了足够的灵活性。无论如何,只是在那里抛出另一个选择。祝你好运。

于 2013-05-16T13:30:21.117 回答