将target =“_ blank”添加到Sitecore中的常规链接

时间:2013-05-16 05:48:08

标签: sitecore sitecore6

我在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);
        }

3 个答案:

答案 0 :(得分:5)

您是否尝试过以下操作?

Render a General Link in Sitecore with target="_blank"

如果您不想嵌入语言,可以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>

$(document).ready(function(){
  $('a[href^=http]').click(function(){
    window.open(this.href);
    return false;
  });
});

或者您可以set it for all links in web.configopen the link in a new window

的所有锚标记上使用jQuery
{{1}}

答案 1 :(得分: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");

答案 2 :(得分:0)

有趣的是,我没有看到提及&lt; sc:link /&gt;控制:

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

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