ZKEACMS Core 是基于是插件式开发的,可以通过开发不同的插件来实现不同的功能,可以一直横向扩展,而不用修改其它的代码。

插件的标准

ZKEACMS的插件有一套自己的标准,直接使用这一套标准,可以快速添加一个新的插件。项目文件夹下面有一个 ZKEACMS.Standard.zip 的压缩文件,这是一个标准的插件开发包。把这个插件的压缩包解压到 src 目录下,然后重命令成你的插件名称。

打开新添加插件目录,用记事本打开项目文件(ZKEACMS.Standard.csproj)修改 AssemblyName 和 PackageId 为你的插件的名字。

添加到解决方案

插件的目录和文件已经建好了,现在需要将它添加到解决方案中。右键添加 Plugins 选择添加已存在项目,然后选择新的插件的项目文件。

接下来要修改 Program.cs、StandardPlug.cs、zkea.plugin这三个文件。

Program.cs

这个文件的改动比较少,只要改命名空间就好了。

StandardPlug.cs

请修改它的名空间,和它的文件名为你的新的插件的名字。StandardPlug.cs 这个是插件的加载入口。继承自 PluginBase。接下来说明一下这个类里面的主要的几个方法。

public override IEnumerable<RouteDescriptor> RegistRoute()
{
return null;
}

这个方法用于注册路由,如果该插件里面没有特别的路由要求,可不用修改该方法。

public override IEnumerable<AdminMenu> AdminMenu()
{
return null;
}

这个方法,用于向后台菜单返回菜单数据。

protected override void InitScript(Func<string, ResourceHelper> script)
{

}

protected override void InitStyle(Func<string, ResourceHelper> style)
{
           
}

这两个方法用于注册CSS和JavaScript资源。注册好的资源可以在视图(*.cshtml)中使用。

public override IEnumerable<PermissionDescriptor> RegistPermission()
{
return null;
}

注册权限,注册好的权限,会在角色的权限中出现。

public override IEnumerable<Type> WidgetServiceTypes()
{
return null;
}

如果你的插件中,有写了新的组件(Widget),那么一定要通过该方法返回该组件的类型给系统。

public override void ConfigureServices(IServiceCollection serviceCollection)
{

}

ICO配置,接口实现配置。

zkea.plugin

打开 zkea.plugin

{
	ID:"D8543DD0-B100-4CA5-AEEA-B6182C38B6DC", //插件的GUID
	Name:"ZKEACMS.Standard",//插件的名字
	FileName:"ZKEACMS.Standard.dll",//插件的DLL名字
	DeveloperFileName:"bin\\Debug\\netcoreapp2.0\\ZKEACMS.Standard.dll",//在开发环境的路径
	Enable:"true"//是否启用插件
}

做好这些配置的修改,就可以开发你自己的插件了。