gpt4 book ai didi

content-management-system - 如何创建自定义内容类型作为 Orchard 模块的一部分?

转载 作者:行者123 更新时间:2023-12-04 08:44:36 25 4
gpt4 key购买 nike

我想在 Orchard 1.6 中创建自定义包内容类型。我已经有一个内容部分,它表示整个数据库记录和一个包的用户界面,但现在我想知道我是否正确地处理了这个问题。

在我看来,下一步是使用 Orchard 仪表板创建一个新的内容类型,并将我的自定义内容部分添加到该类型。但是,内容类型是 Orchard 内部的,依赖于托管内容部分的“外部”模块。如何才能使我的内容类型仅在我的模块启用时可用?

最佳答案

为方便起见,您可以将内容类型创建为模块中迁移之一的一部分。这只会在启用时运行。它看起来像这样......

   //Inside of your migration file... 
public int UpdateFrom1(){
ContentDefinitionManager.AlterTypeDefinition("Package", cfg=> cfg
.Creatable()
.WithPart("YourCustomPart")
.WithPart("CommonPart")
.WithPart("Whatever other parts you want..."));
return 2;
}

在您禁用模块时删除此内容类型将是一个棘手的部分,因为它可能有点出乎用户的意料。也许“Package”是一种他们仍想使用的带有不同部件的类型。此外,如果他们在不禁用的情况下手动删除您的模块,您就无法真正编写代码来响应该事件。我所知道的唯一可靠的事情是 IFeatureEventHandler。如果他们在管理员中禁用该模块,这将允许您删除您的内容类型...

public PackageRemover : IFeatureEventHandler {
private readonly IContentDefinitionManager _contentDefinitionManager;
public PackageRemover(IContentDefinitionManager contentDefinitionManager){
_contentDefinitionManager = contentDefinitionManager;
}

public void Installed(Feature feature){}
public void Enabling(Feature feature){}
public void Enabled(Feature feature){}
public void Disabling(Feature feature){
_contentDefinitionManager.DeleteTypeDefinition("Package");
}
public void Disabled(Feature feature){}
public void Uninstalling(Feature feature){}
public void Uninstalled(Feature feature){}
}

关于content-management-system - 如何创建自定义内容类型作为 Orchard 模块的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13741516/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com