Sitecore-创建数据源父级“;“出现了一个错误”;设置子布局
我正试图让Sitecore在“选择数据源”对话框之前创建一个新项目,该对话框在向页面添加新渲染时从页面编辑器打开 我们正在构建一个多站点解决方案,其中每个站点都是这样表示的(概念) 网站将使用分支模板创建,分支模板将根据网站模板、datasourcefolder和startpage创建项目 以下是我希望发生的事情: 添加新的子布局时,请检查源是否存在,如果不存在,请根据指定的模板(定义为父数据源模板并添加到子布局模板)在site1/Datasources/[Module name]中创建新项。然后将此新项添加到对话框DatasourceRoots中,以允许用户在其下方创建数据源项 我已经成功地实现了一个管道来检查并创建项目(如果它不存在),并且“选择渲染数据源”对话框显示了新创建的项目,并允许用户按照预期在其下方创建新的数据源项目。但是,单击“确定”后,将显示一条警告消息“发生错误”。关闭此对话框并再次执行该操作(当数据源根目录已经存在时)效果很好 使用Reflector,我已经验证了从对话框(Sitecore.Shell.Applications.Dialogs.SelectRenderingDatasourceForm)创建的项是否正确返回,并且对话框是否使用正确的参数关闭,以及是否使用验证项调用SetDialogValue 我想我的问题是;关闭此对话框后会发生什么?触发哪个管道来实际设置渲染上的数据源?我需要找出这个错误是在哪里产生的,当然,修复任何错误Sitecore-创建数据源父级“;“出现了一个错误”;设置子布局,sitecore,sitecore6,page-editor,Sitecore,Sitecore6,Page Editor,我正试图让Sitecore在“选择数据源”对话框之前创建一个新项目,该对话框在向页面添加新渲染时从页面编辑器打开 我们正在构建一个多站点解决方案,其中每个站点都是这样表示的(概念) 网站将使用分支模板创建,分支模板将根据网站模板、datasourcefolder和startpage创建项目 以下是我希望发生的事情: 添加新的子布局时,请检查源是否存在,如果不存在,请根据指定的模板(定义为父数据源模板并添加到子布局模板)在site1/Datasources/[Module name]中创建新项。然
我意识到这可能有点难以理解,如果需要,我很乐意提供代码。我认为是事件导致了错误,而不是管道处理器。可能是一个令人激动的事件
默认情况下,Sitecore已将
Sitecore.Tasks.ItemEventHandler.OnItemSave
配置为在保存项目时执行。我们执行的操作非常类似,但作为当前项目的子项。请参考此处的代码:
我会确保您在创建项目时使用的是SiteContextSwitcher。否则,为页面编辑器准备的事件处理程序可能会产生未知的副作用。其中一些事件处理程序是由Sitecore在代码中创建的,不能在配置中禁用。您可以检查日志中的异常吗?@Maras很遗憾,日志中没有显示任何错误(异常或警告)。如果您将Visual Studio连接到web应用,它是否显示任何错误?否,日志中或调试时没有错误。我猜这不是一个错误,而是一个空检查(或类似的检查),在失败时忽略了SheerResponse.Alert(再次,只是猜测)。您能粘贴创建数据源根的管道代码和用于选择数据源的对话框的url吗?您可以尝试在创建的根目录之外创建一个数据源,并检查它是否工作或失败吗?哦,我根本没有想到这一点。我会注意的!好的,所以我禁用了item:saved和item:saving中的所有事件,但仍然看到“发生错误”警报:(嗯…。那么可能是其中一个客户端管道,例如,在或中禁用了saveUI和uiSaveLayout中的所有内容,但没有任何改进。SiteContextSwitcher就是缺少的!谢谢,谢谢!
site1 (template = website)
Datasources (template = datasourcefolder)
Module X Sources (template = module1container)
Module Source 1 (template = module1)
Module Y Sources (template = module2container)
...
Home (template = startpage)