我有自定义代码,它读取一堆xml文档并创建一个自定义数据导入配方,我使用Orchard中的Import / Export模块上传。导入的文档是我使用Orchard管理UI创建的内容类型“Api文档”。现在,我想使这个配方文件生成代码成为自定义Orchard模块的一部分(如果这是正确的方法,我不确定)并让管理员用户执行以下操作:
使用管理仪表板部分中的表单上传需要通过配方文件生成器运行的xml文档
该表单将配方文件提交到导入/导出模块,以便它可以照常执行其导入过程
处理此问题的最佳方法是什么?我甚至不确定创建自定义模块是正确的方法。如果有其他可扩展性选项我应该利用,那将是很好的知道。
答案 0 :(得分:3)
IImportExportService
界面有一个名为Import
的成员:
void Import(string recipeText);
生成配方后,您可以调用此方法,它将执行配方并更新shell。
如果您只是导入数据,那么如果我没有弄错,您可以在不更新shell的情况下离开(只有在启用或禁用功能时才需要这样做) - 在这种情况下,您可以拨打几个电话改为IRecipeParser
和IRecipeManager
接口:
var recipe = _recipeParser.ParseRecipe(recipeText);
_recipeManager.Execute(recipe);
我写了类似的东西进行一些导入/导出,这样你就可以在站点之间移动内容;它还进行了一些加密,因此细节隐藏在窥探之中。如果要阅读ImportExportService的来源,这是一个很好的起点,因为它并不是那么复杂。