我一直在想是否有人知道为什么默认情况下会在所有语言和版本中共享演示文稿详细信息(存储在Renderings字段中)?
我已经确认这是“共享”字段与这些链接的预期行为:
这个帖子: In Sitecore, when adding a field to a template, there's a checkbox called "shared". What's it for?
作为一名作者,我创建了一个新页面并将其推送到工作流程审批中。一切都很棒,页面也已发布。第二天,我想做一些更改,所以我打开页面编辑器,创建了一个新版本,然后我开始在页面上添加和删除组件。
只要点击“保存”,我的页面的已批准和已发布版本也会受到影响。我之前布局的历史已经消失。一旦某人执行了Site Publish(或执行了预定的PublishAgent),我的Web数据库页面就会更新。
当然,我添加的新组件的数据源可能尚未发布,但如果我添加了已批准的现有数据源,该怎么办?我的删除也是即时的。
我希望能够对这些更改进行版本控制,并且将字段更改为不再共享似乎是正确的方法。在我的情况下,使用单语网站,这不会影响它的多语言方面。
有人知道为什么这个字段在不同版本之间共享?如果我取消共享,我是否完全打破升级路径?
答案 0 :(得分:2)
我刚刚在这个问题上与Sitecore支持“聊天”。这个共识似乎是 - 解释他们所说的一点 - “我们认为如果你改变它就没关系。你应该彻底测试它,渲染增量,页面编辑工作等等。”
我可以添加一些我自己的评论;取消选中__renderings上的“共享”,似乎确实有效。至少在最初的一瞥。我之前听说过这个问题已在解决方案中完成,我从来没有听说过任何不良影响。
然而;每当你提到它;你得到了很多紧张的回应和评论,比如“你真的不应该搞乱Sitecore标准设置”。虽然确实是一个有效的观点,但我想在这场辩论中加上我自己的观点:
鉴于这一点,从API的角度来看,从“共享”字段中读取字段值而不是版本化字段时,很少有不同的东西 - 我也相信很少有“取消共享”的潜在案例这会造成问题。
或换句话说 - 我认为风险很低。但我从来没有在现场环境中运行真实生活解决方案,这个设置已经改变了: - )
我很抱歉,但我没有直接回答你的问题 - 为什么Sitecore会这样设置,我相信它会成为Sitecore遗产的一部分:一个网站的多语言版本应该只是完全相同页面的“分层”版本,因此也可以共享演示细节 - 大概是为了获得一些性能提升。我并不完全相信这个愿景今天仍然存在 - 编辑每日“编辑”新版本的新组件,并提前几周设置特殊销售横幅和相关内容。
答案 1 :(得分:1)
我完全同意并感谢Mark Cassidy 2014年3月3日对此的回答。从那时起,在Sitecore 8.0中,他们添加了“Versioned Layouts”。
请参阅:
https://sandbox.authorize.net/“版本化布局 - 针对同一项目在不同语言的不同版本上设置不同的演示文稿”。
答案 2 :(得分:0)
这是您在帖子中提到的sitecore的默认行为。改变这种做法并不总是好的做法。之前已经讨论过这个主题可能对您有所帮助
Setting __Renderings field not shared in Sitecore consequences?
答案 3 :(得分:0)
以下是关于执行此操作的注意事项的博文:
Unsharing the Layout field in Sitecore - a multi-language strategy
那就是说,我参与了一个项目,我们的客户进入并亲自完成了这项工作。它引起了问题。我记得,他们取消了__renderings
字段的共享,所有以前的版本都丢失了它们的演示设置。此外,除了所选语言之外的其他语言也会丢失其设置。我们不得不进行数据库恢复并将其恢复,并告诉他们永远不要再这样做了。如果您正在考虑这个问题,请阅读博客文章,并做一些孤立的干运行,因为它可能会暴露您不了解的问题(例如影响其他语言,旧版本等)。