【问题标题】:How do I get an item path from the Sitecore Master DB?如何从 Sitecore Master DB 获取项目路径?
【发布时间】:2014-11-02 04:45:34
【问题描述】:

我有一个直接的 SQL 查询来从数据库中提取一些特定的项目。可以获得我感兴趣的 ItemID 和 Field 名称...但我想为我的编辑提供项目的路径,而不是让他们搜索项目 ID。如何使用 SQL 查询获取此路径?作为记录,这是我当前的查询:

SELECT ItemId, Language, Value, I.Name FROM Fields F 
JOIN Items I ON F.FieldId = I.ID
WHERE Value LIKE '%style="color: #999999%' 
ORDER BY Language, ItemID

我让一些翻译人员在内容编辑器中错误地复制并粘贴了 HTML,而这些多余的样式标签在许多地方都出现了。我想获得受影响的项目的完整列表(带有内容树路径)。数据库架构是 Sitecore 6.6。

【问题讨论】:

    标签: sitecore sitecore6


    【解决方案1】:

    我强烈建议编写一个利用 Sitecore 的 API 进行此类工作的实用程序。如果您已经安装了类似 Sitecore PowerShell (https://marketplace.sitecore.net/en/Modules/Sitecore_PowerShell_console.aspx) 的工具,那也是一个不错的选择。

    话虽如此,下面的博文将为您提供一个在 SQL 中创建函数以轻松获取 ItemPath 的示例。

    http://blogs.perficient.com/microsoft/2014/05/sql-querying-sitecore-database-directly-get-fullpath-of-item/

    【讨论】:

      【解决方案2】:

      实际上,非常不建议对 MS SQL 级别的 Sitecore 数据进行任何操作。最好通过 Sitecore API 找到解决此问题的方法。

      但是,您可以使用递归 SQL 查询获取项目的路径:

      with Items1 (nm, id1, pathstr)
      as (select Name, id, cast('/sitecore' as nvarchar(MAX)) 
         from Items
         where ParentID = '00000000-0000-0000-0000-000000000000'
      union all
         select Items.Name, Items.id, Items1.pathstr +'/'+ Items.Name
         from Items 
           inner join Items1 on Items1.id1 = Items.ParentID) 
      select id1 as ItemId, nm as Name, pathstr as [Path], F.Id as FieldId, F.Value as FieldValue
      from Items1 I
      JOIN Fields F ON F.ItemId = I.id1
      WHERE Value LIKE '%style="color: #999999%' 
      ORDER BY Language, ItemID
      

      需要递归查询,因为路径不保存为字段。

      附:查询是针对 Sitecore 7.2,我的机器上没有 Sitecore 6.6。如果有任何差异,您可以针对 Sitecore 6.6 调整此查询。

      【讨论】:

        【解决方案3】:

        正如@Anton 所说,Sitecore 不支持直接查询数据库,因此通常不建议这样做。

        如果您使用的是 Sitecore 桌面,则可以使用开发人员中心内的 XPath Builder 执行查询以检索这些项目。在下面的示例中,将 @YourFieldName 更改为相关的字段名称。

        /sitecore/content//*[contains(@YourFieldName, 'style="color: #999999')]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-05
          • 1970-01-01
          • 2014-11-20
          • 2016-08-24
          相关资源
          最近更新 更多