如果在页面上添加了子布局,Sitecore 会自动保存

Sitecore Auto-Save If Sublayout Added on the Page

添加子布局组件后是否可以自动保存?

我创建了一个子布局,如果我在页面编辑器中将它添加到页面上,它当时不会出现。通过保存项目,它会出现在页面编辑器中。

所以,我想在页面上添加子布局,然后让页面自动保存。

可能吗?

=====更新=====

这是 CreateNewDatasource 方法的结尾,它更新了渲染布局字段。

//set datasource, save and close
myItem.Editing.BeginEdit();
myDataSourceItem = myItem.Add(newName, template);
rd.Datasource = myDataSourceItem.ID.ToString();
myItem[Sitecore.FieldIDs.LayoutField] = ld.ToXml();
myItem.Editing.EndEdit();
myItem.Editing.AcceptChanges();

return myDataSourceItem;

可以更改 sitecore 的 webedit.js 文件,但我不推荐这样做,因为:

1) 如果您想稍后将解决方案升级到更新版本的 sitecore,您将 运行 遇到问题。

2) 每次添加新的子布局时,整个页面都会被保存。如果编辑在进行其他一些更改后决定不保存该项目,则他将无法放弃他的更改。

3) 我也认为jammykam 在他的评论中说的是真的。如果新添加的子布局不会出现在页面上,页面上的脚本会产生一些javascript副作用。为避免这种情况,您可以修改您的子布局或布局,使其在 sitecore 处于页面编辑模式时不包含自定义 javascript 文件作为解决方法,并查看这是否可以解决问题。

我不确定您当前对控件进行编码的方式存在什么确切问题,我假设与 Sitecore 控件生命周期有关,因此需要进行更深入的调查。无论如何,我建议您重新考虑并使用对 Sitecore 更友好的流程来实施。

相反,您应该 Prompt the User to Select/Create Datasource Item when inserting Rendering via Page Editor。然后,用户可以 select 现有项目或创建新项目。该项目将自动设置为您控件的数据源,您将能够立即在页面编辑器中开始编辑,而无需先保存。