在sitecore

时间:2016-01-20 05:56:07

标签: content-management-system sitecore sitecore8

问题:当一个CM服务器上的项目从一个存储区文件夹移动到另一个存储区文件夹时,它们会从第二个CM服务器上消失

简要介绍:

我们为我们的网站设置了两台CM服务器 - CM1和CM2。我们有一个Item存储桶,用于存储具有三个嵌套文件夹的项目:年,月,日。 该项目最初是使用创建日期创建的,我们有一个自定义路径解析器,它根据字段“截止日期”更新项目的路径,然后每当“截止日期”字段被修改时将项目移动到新的存储桶中该项目已保存。

以下代码在已保存的项目上运行:

         /*move the saved item according to release/due date*/
         BucketManager.MoveItemIntoBucket(savedItem, bucketItem);
        /*delete previous parent if it has no child (delete empty buckets)*/
        if (BucketManager.IsItemContainedWithinBucket(removeItem))
        {
            if (!removeItem.HasChildren)
            {
                removeItem.Delete();
            }
        }

完成以下设置以根据'截止日期'实现接口IDynamicBucketFolderPath(Sitecore.Buckets.dll)的GetFolderPath方法:

<setting name="BucketConfiguration.DynamicBucketFolderPath">
    <patch:attribute name="value">  FullyQualifiedPathOfTheClassWithGetFolderPathMethod, AssemblyName    </patch:attribute>
</setting>

问题描述:

  1. 当我们在CM1服务器上的项目桶中创建项目时,该项目将在使用当前日期创建的年,月和日文件夹中创建。 如果在CM2服务器上检查了相同的项目,则在那里可以看到它。 最初,“截止日期”字段为空白。

  2. 当在CM1服务器上使用新日期修改“截止日期”字段并保存该项目时,该项目将移至新创建的存储桶文件夹,其日期结构为“截止日期”。 如果在CM2服务器上检查了相同的项目,则它现在不存在。

  3. 使用Sitecore.Buckets.dll中存在的BucketManager类的MoveItemIntoBucket方法,两个服务器上的项似乎没有同步。

    如果我们现在从CM1的内容编辑器中的开发人员功能区为同一项目执行'更新项目',则相同的项目开始出现在CM2服务器上,但我们不希望每当新的存储桶都手动执行“更新项目”项目已创建。

    可能导致此行为的原因是什么?我怎样才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

根据您的说明我相信您尚未为内容管理服务器启用缩放设置。与Sitecore中的普通项目不同,Bucketed项目的界面在很大程度上依赖于搜索。假设您使用现成的Lucene实现,每个CM服务器都维护自己的索引。如果未启用Scaling配置,则只有进行更改的服务器才会更新其搜索索引。扩展配置将启用事件,因此远程服务器也可以识别这些更改。

Sitecore Search Scaling Guide的第24页介绍了如何启用Scaling配置以及可用的设置。请确保为两个Content Management服务器启用Sitecore.Buckets.Scaling.config。

如果您有多个CD服务器,则同样适用,因此请确保为这些服务器启用适当的缩放配置。