更新项目中的链接?

时间:2012-09-11 16:58:17

标签: sitecore

我有以下小脚本

Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
    using (new Sitecore.SecurityModel.SecurityDisabler())
    {
            foreach (Sitecore.Data.Items.Item child in item.Children)
            {
                foreach (ItemLink link in child.Links.GetAllLinks())
                {
                    Item itm = link.GetTargetItem();
                    if (itm != null) {
                        Response.Write(link.TargetPath + " (" + itm.Paths.IsMediaItem + ", " + itm.ID + ")" + "<br/>");
                    } else
                    {
                        Response.Write("<span style='color:red;font-weight:bold;'>NULL ITEM ("+ link.TargetPath + ")</span><br/>");
                    }
                }           

                if (item.Paths.ContentPath.Split("/".ToCharArray()).Length <= 10)
                    RecurseLinks(child, reset);
            }
    }

这将遍历指定的起始路径中的所有项目(和子项),并获取项目中定义的所有链接。

我需要更新一些链接,因为其中一些链接目前使用绝对路径定义,而不是链接到的项目的ID(媒体或内容项目)。

我将如何在上述脚本中实现这一目标?

1 个答案:

答案 0 :(得分:0)

“重建链接数据库”操作应该有效。 空ID可能是由链接断开引起的(在更新链接时未在数据库中找到目标项)。 因此,通过控制面板或代码重建链接(请参阅LinkDatabaseHelper)应该有效。

相关问题