Sitecore页面编辑器-“;“创建新内容”;位置

Sitecore页面编辑器-“;“创建新内容”;位置,sitecore,page-editor,Sitecore,Page Editor,在页面编辑器中,添加新内容项时,是否可以将其自动添加为当前页面的子项 所以在页面编辑器中 在占位符中单击“添加到此处” 选择“选择渲染” 选择“创建新内容” 自动将其创建为上下文项的子项 您可以覆盖sitecore解析数据源根的方式 扩展管道“getRenderingDatasource” 并添加如下代码 public void Process(GetRenderingDatasourceArgs args){ string datasourceLocation = args.Rend

在页面编辑器中,添加新内容项时,是否可以将其自动添加为当前页面的子项

所以在页面编辑器中

  • 在占位符中单击“添加到此处”
  • 选择“选择渲染”
  • 选择“创建新内容”
  • 自动将其创建为上下文项的子项

您可以覆盖sitecore解析数据源根的方式

扩展管道“getRenderingDatasource”

并添加如下代码

public void Process(GetRenderingDatasourceArgs args){
    string datasourceLocation = args.RenderingItem["Datasource Location"];

    var item = args.ContentDatabase.GetItem(datasourceLocation)

    var templateItem = args.ContentDatabase.GetTemplate("templateName");

    Item createdItem = args.ContentDatabase.CreateItemPath(Path.Combine(item.Paths.Path, "createdItem"), templateItem);

    args.CurrentDatasource = createdItem.Paths.Path;
}
然后将渲染或子布局上的“数据源位置”设置为“”


我还没有测试过这个特定的案例,但我使用了这个方法来指定数据源根。

如果你说的自动是指Sitecore应该通过选择“创建新内容”来创建一个项目(带有一些名称),我不相信。您仍然需要为Sitecore提供应该创建的项的名称和位置


但是,您可以将子布局/渲染上的数据源位置字段设置为相对路径(例如,
/Stuff
),然后“创建新内容”对话框将仅允许您在该项目下创建新项目。
/Stuff
路径将解析为上下文项目下的项目Stuff。我从未尝试将项创建为上下文项的直接子项,因此我不确定路径需要是什么。您可以尝试
/
或者干脆

尽管这两个答案似乎都达到了我的要求,但我接受您的答案,因为它不涉及覆盖任何标准Sitecore功能。感谢。-1未经测试的解决方案(不起作用)以及建议将原始渲染项的数据源位置设置为“-”-这会更改子布局的数据源位置,而这不是所需的解决方案,因为这需要仅为特定渲染动态设置。