Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sitecore查询或工具,用于查找损坏的项目/模板(不再存在)_Sitecore_Sitecore6 - Fatal编程技术网

sitecore查询或工具,用于查找损坏的项目/模板(不再存在)

sitecore查询或工具,用于查找损坏的项目/模板(不再存在),sitecore,sitecore6,Sitecore,Sitecore6,正在寻找一个快速且易于查询我的整个sitecore数据库(主数据库、web数据库或pub数据库),并确定某个项目的模板不再存在的位置 我正试图序列化我的整个树,我发现有很多项目的模板已经被删除,并希望得到一个列表,他们没有太多的头痛 当查看这些项目时,会显示template:template不再存在,下面是呈现该项目的代码 private static void RenderQuickInfoTemplate(HtmlTextWriter output, Sitecore.Data.Items.

正在寻找一个快速且易于查询我的整个sitecore数据库(主数据库、web数据库或pub数据库),并确定某个项目的模板不再存在的位置

我正试图序列化我的整个树,我发现有很多项目的模板已经被删除,并希望得到一个列表,他们没有太多的头痛

当查看这些项目时,会显示template:template不再存在,下面是呈现该项目的代码

private static void RenderQuickInfoTemplate(HtmlTextWriter output, Sitecore.Data.Items.Item item)
    {
        Sitecore.Data.Items.Item item2;
        Sitecore.Diagnostics.Assert.ArgumentNotNull(output, "output");
        Sitecore.Diagnostics.Assert.ArgumentNotNull(item, "item");
        output.Write("<tr><td>");
        output.Write(Translate.Text("Template:"));
        output.Write("</td><td>");
        using (new SecurityDisabler())
        {
            item2 = item.Database.GetItem(item.TemplateID);
        }
        bool flag = (item2 != null) && (CommandManager.QueryState("shell:edittemplate", item) == CommandState.Enabled);
        if (flag)
        {
            output.Write("<a href=\"#\" onclick=\"javascript:scForm.postRequest('','','','shell:edittemplate');return false\">");
        }
        if (item2 != null)
        {
            output.Write(item2.Paths.Path);
        }
        else
        {
            output.Write(Translate.Text("[template no longer exists]"));
        }
private static void RenderQuickInfoTemplate(HtmlTextWriter输出,Sitecore.Data.Items.Item)
{
Sitecore.Data.Items.item2;
Sitecore.Diagnostics.Assert.ArgumentNotNull(输出,“输出”);
Sitecore.Diagnostics.Assert.ArgumentNotNull(项,“项”);
输出。写入(“”);
output.Write(Translate.Text(“模板”);
输出。写入(“”);
使用(新的SecurityDisabler())
{
item2=item.Database.GetItem(item.TemplateID);
}
bool标志=(item2!=null)&&(CommandManager.QueryState(“shell:edittemplate”,item)=CommandState.Enabled);
国际单项体育联合会(旗)
{
输出。写入(“”);
}
if(item2!=null)
{
output.Write(item2.Path.Path);
}
其他的
{
output.Write(Translate.Text(“[模板不再存在]”);
}

谢谢

我认为基于已删除模板的项目不再从(标准)基础模板继承。在quickinfo中,您应该看到它们的模板ID类似于{000-0000-0000…}


您可以尝试根据此id查找所有项目。

我认为基于已删除模板的项目不再从(标准)基础模板继承。在quickinfo中,您应该看到它们的模板id类似于{000-0000-0000…}


您可以尝试根据此id查找所有项目。

想到的两个选项:

  • 检查断开链接报告
  • 您可以右键单击内容编辑器中的左侧“rail”,然后选择“断开的链接”以显示所有具有断开链接的项目

  • 我想到两个选择:

  • 检查断开链接报告
  • 您可以右键单击内容编辑器中的左侧“rail”,然后选择“断开的链接”以显示所有具有断开链接的项目

  • 使用流行的powershell模块,请尝试

    Get-ChildItem -Path "master:\sitecore" -Recurse | ForEach-Object {if (!$_.Template){        write-host $_.ItemPath    }}
    
    对我来说,它返回了很多我无法在内容编辑器中打开的项目

    如果只是几个项目,而您想手动执行所有操作,则可以使用dbbrowser:

    <yoursiteurl>/sitecore/admin/dbbrowser.aspx.
    

    若要实际删除项目,请删除最后一行中的“#”,风险由您自己承担。该脚本需要相当长的时间才能运行,并且您可能需要更改路径,以防您在内容之外损坏了项目。

    使用流行的powershell模块,请重试

    Get-ChildItem -Path "master:\sitecore" -Recurse | ForEach-Object {if (!$_.Template){        write-host $_.ItemPath    }}
    
    对我来说,它返回了很多我无法在内容编辑器中打开的项目

    如果只是几个项目,而您想手动执行所有操作,则可以使用dbbrowser:

    <yoursiteurl>/sitecore/admin/dbbrowser.aspx.
    

    若要实际删除项目,请删除最后一行中的“#”,风险由您自己承担。脚本需要相当长的时间才能运行,并且您可能需要更改路径,以防您在内容之外有断开的项目。

    另外,如果您发现断开的链接报告不起作用,请确保在adminis中重建链接索引更新控制台。虽然这适用于实际链接,但不确定它是否适用于模板问题,因为我在发布附加说明之前尝试了这种方法。如果发现“断开链接”报告不起作用,请确保在管理控制台中重建链接索引。虽然这适用于实际链接,但不确定它是否适用于模板在发布之前,我尝试了这种方法,但问题是模板id是一个有效的guid。这让我认为该值存储为一个没有任何引用完整性的字符串。这种假设是错误的(至少在sitecore 7.5中是这样):模板ID与项目一起存储,因此在删除模板时不必重置。OP和me存在模板ID与模板不对应的问题。基于链接数据库删除模板时,它应该得到更新。问题是模板ID是有效的guid。这让我觉得该值被存储为没有任何引用完整性的字符串。这种假设是错误的(至少在sitecore 7.5中是这样):模板ID与项目一起存储,因此删除模板时不必重置。OP和me存在模板ID与模板不对应的问题。在基于链接数据库删除模板时,应更新模板ID。