什么是生成Sitecore Broken Link报告的SQL脚本

时间:2014-06-02 19:07:08

标签: sitecore

我正在帮助我们的编辑清理断开的链接,并一直在寻找以下答案:

  1. 无法导出或排序断开链接报告,因此它不是很有用(我们有很多断链~2000)。是否有可以运行的SQL脚本来创建相同的报告?

  2. 如果编辑器修复了某个链接,则重新运行该报告似乎不会将该项目从报告中删除。她每次都要重建链接数据库吗?

  3. 菜单中的“链接”按钮很有用,但它列出了所有引荐来源的版本。是否有SQL脚本只能找到最新版本?

  4. 删除或归档项目并让Sitecore删除损坏的链接时,是否会发布所有受影响的项目?

  5. 由于没有勤勉地维护,我们正在处理一份大型报告(约2000项)。目标是将数量减少到100~200,并从现在开始控制它。任何有关如何清理损坏的链接报告的一般建议表示赞赏。

1 个答案:

答案 0 :(得分:2)

对于您的第一个(和部分第三个)问题:
Core数据库中,您可以检查点击“断开链接报告”时所执行的内容(定义它的项目位于:/sitecore/content/Documents and settings/All users/Start menu/Right/Reporting Tools/Scan for Broken Links。) 启动的应用程序是/Applications/Tools/Broken Links.aspx,因此,如果我们查看*webroot*/sitecore/shell/Applications/Tools/Broken Links/Broken links.xml,我们可以看到Sitecore.Shell.Applications.Tools.BrokenLinks.BrokenLinksForm程序集中使用的代码为Sitecore.Client

使用Reflector,您可以看到它正在执行的内容。根据您的要求,我想说的最简单的方法是创建自己的BrokenLinksForm版本,可能只是在其上添加导出功能,或者修改代码以便它只采用最新版本。通过快速查看,我认为要更改的代码(实际上是嵌套的Scanner类)是:

...
foreach (ItemLink link in Globals.LinkDatabase.GetBrokenLinks(database))
{
    list.Add(link);
}
...

您可以检查链接项是否是最新版本,可能使用类似

的内容
...
var version = link.GetSourceItem();
if (version.Versions.GetLatestVersion().Version == link.SourceItemVersion)
{
    list.Add(link);
}
...

当你在它时,你当然也可以提供一些排序功能:-)
它没有使用菜单中的“链接”按钮进行1对1翻译,但它应该为您提供正确方向的指示。

至于你的第二个问题:我相信是的,确实需要重建Link数据库。我不知道Sitecore是否默认设置了一个计划,但您可以在web.config中的agent节点中创建自己的<scheduling>,以便在X时间之后执行此操作。

您的上一个问题:如果您删除或归档某个项目并让Sitecore删除损坏的链接,默认情况下不会发布受影响的项目。如果您有自动发布设置,它当然会显示出来。