纸壳CMS在插件中创建独立页面

纸壳CMS在插件中创建独立页面

ZKEASOFT January 17, 2021


纸壳CMS的设计模式是基于组件的,但依然可以使用MVC的方式写完整的独立页面。

添加插件

首先我们需要添加一个插件,将根目录下的ZKEACMS.Standard.zip解压到src目录,然后重命名为ZKEACMS.Pages,同时把ZKEACMS.Standard.csproj也改名为ZKEACMS.Pages.csproj。然后再用记事本打开ZKEACMS.Pages.csproj,将里面的Standard重命名为Pages

接下来我们把插件添加到项目中,鼠标右键单击Plugins,然后选择添加现有项目,选择刚刚添加的ZKEACMS.Pages.csproj插件:

打开插件下的zkea.plugin文件:

{
	ID:"D8543DD0-B100-4CA5-AEEA-B6182C38B6DC",
	Name:"ZKEACMS.Standard",
	FileName:"ZKEACMS.Standard.dll",
	Enable:"true"
}

插件的ID,可以使用Visual Studio中的工具来生成:

再将里面的Standard替换为Pages

{
	ID:"34B6118C-4AB8-49E0-8034-47ADC8E80712",
	Name:"ZKEACMS.Pages",
	FileName:"ZKEACMS.Pages.dll",
	Enable:"true"
}

打开StandardPlug.cs选中类名,按F2将它改名为PagesPlugin,然后点击应用或者直接回车:

选中Standard命名空间,按F2把命名空间改为Pages:

最后我们将StandardController,Standard Model还有StandardService删除。

这样一个空的纸壳CMS插件就添加完了。

创建路由

假如我们现在需要添加一个/zkea/index的页面,打开PagesPlug,然后添加路由将/zkea/index路由到PluginPagesControllerIndex Action:

public override IEnumerable<RouteDescriptor> RegistRoute()
{
    yield return new RouteDescriptor
    {
        RouteName = "PluginPages",
        Template = "zkea/index",
        Defaults = new { controller = "PluginPages", action = "index" },
        Priority = 20
    };
}

Controller

接下来我们在插件的Controllers添加PluginPagesController,并且,并且添加一个Index Action:

public class PluginPagesController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}

Views

接下来我们需要创建一个Layout,我们在插件的Views目录下创建一个Shared目录,并创建一个_PluginPagesLayout.cshtml文件作为Layout。

_PluginPagesLayout.cshtml

<!DOCTYPE html>
<html>
<head>
    <title>@ViewBag.Title</title>
</head>
<body>
    @RenderBody()
</body>
</html>

然后再创建一个PluginPages目录,该目录与PluginPagesController对应。在PluginPages目录下添加Index.cshtml文件。

Index.cshtml:

@{ 
    Layout = "_PluginPagesLayout";
}
<h1>
    This is plugin pages
</h1>

注意设置Index页面的Layout为_PluginPagesLayout!

注意:插件修改后一定要主动做一次生成,也可以直接按F6生成整个解决方案。

我们将纸壳CMS运行起来,然后访问一下/zkea/index试试,可以看到页面已经可以正常访问了:


微信公众号