创建时根据日期字段存储的项目

Item to be bucketed according to a date field when created

我在 /sitecore/Home/FootballFever/A​​rticles 创建了一个内容项,并提供了插入选项,以便我们可以仅添加模板项“A​​rticle ”。截至目前,这些文章项目可根据字段创建日期进行分桶。

现在,我在主页功能区 "Insert" 块中插入了选项 "Add Article" 和 "Insert from Template" 按钮。当我通过 "Insert from Template" 创建一个项目时,该项目会自动添加到相应的存储桶中,路径为创建日期。例如,如果项目创建日期为“7/21/2014”,则路径将为“/Articles/2014/7/21/”。

但是当我点击 "Add Article" 时,该项目被添加到 /Articles 中,我必须每次都同步才能使其进入正确的路径。 我怎样才能拥有与 "Insert from Template" 相同的行为,但路径具有 发布日期 这是模板字段 "Article"?

请确保 Article 模板在其 Standard values 中检查了 Bucketable 字段(用于文章模板)。

如果不是,当您将新项目添加到 buckets 文件夹时,新添加的项目本身是不可存储的,这与同一存储桶文件夹中其他已经存在的项目不同。

我刚刚在我的沙箱环境中进行了概念验证,并且可以确认如果您添加一个新项目,并通过标准值检查 Bucketable - 它会立即进入一个存储桶,您 不需要执行 Sync.

希望对您有所帮助。

更新:我专门写了一篇博客post来解决你的问题,描述很全面。

http://blog.martinmiles.net/post/understanding-buckets-adding-new-items-to-buckets-correctly

默认情况下,项目将在存储桶文件夹中构建,根据项目创建的日期和时间,深度为五层。您可以使用一些其他内置规则,例如使用部分 Guid 或部分名称。这里需要注意的是,这些都是在物品创建时可用的东西。如果您想根据自定义 'Release Date' 构建您的文章,那么您将需要编写自定义规则,并且还必须实施 OnItemSaved 事件处理程序。 Here is a article关于如何编写自定义规则。

通常您不必担心项目在您的存储桶中的结构。编辑应该使用搜索选项卡来查找他们需要的项目。

话虽如此,this SO post 讨论了如何根据自定义字段构建存储桶项目。这里需要注意的是,这通常是全局更改。有一些方法可以让你对不同的桶有不同的策略,但是你必须做额外的工作来覆盖 LinkProvider 和其他可能的东西。