纸壳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
路由到PluginPagesController
的Index
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试试,可以看到页面已经可以正常访问了: