public override IEnumerable<WidgetTemplateEntity> WidgetServiceTypes() { yield return new WidgetTemplateEntity<CommentsWidgetService> { Title = "评论箱", GroupName = "5.消息", PartialView = "Widget.Comments", Thumbnail = "~/Plugins/开源CMS.Message/Content/Image/Widget.Comments.png", Order = 1 }; }public override void ConfigureServices(IServiceCollection serviceCollection){ serviceCollection.ConfigureMetaData<CommentsWidget, CommentsWidgetMetaData>();}
普通组件
普通组件,要求要创建一个数据表与组件的实体对应,数据库表必需包含一个ID字段(NVARCHAR(100))与CMS_WidgetBase表中的ID字段关联,并且是一一对应关系。其它字段应跟据组件情况添加。组件要继承自BasicWidget
,WidgetService<T>
。其它地方与简单组件一致。
CommonMethodsRuleProvider
提供了以下可用的方法:
在Razor在使用时,如果有指定Model的类型,则要通过Get
方法来获取,或者将类型转换成动态类型后直接获取
public override IEnumerable<PermissionDescriptor> RegistPermission(){ yield return new PermissionDescriptor(PermissionKeys.ViewArticle, "文章", "查看文章", ""); yield return new PermissionDescriptor(PermissionKeys.ManageArticle, "文章", "管理文章", ""); yield return new PermissionDescriptor(PermissionKeys.PublishArticle, "文章", "发布文章", ""); yield return new PermissionDescriptor(PermissionKeys.ViewArticleType, "文章", "查看文章类别", ""); yield return new PermissionDescriptor(PermissionKeys.ManageArticleType, "文章", "管理文章类别", "");}
应用权限
权限申明了以后,就可以在代码里面应用了。
IsTrue
和Value
两个方法都有同样一个重载,即可传入一个“WorkContext”。这个WorkContext可以理解为表达式的应用上下文,即表达式的工作“环境”,表达式可以在该“WorkContext”中取对应的值进行计算。
namespace 开源CMS.Article.Controllers{ public class ArticleInfoController : Controller { private readonly IArticleService _articleService; public ArticleInfoController(IArticleService articleService) { _articleService = articleService; } public IActionResult GetArticles() { return Json(_articleService.Get()); } }}
接下来我们需要创建一个路由,如果不创建路由,将会使用后端路由(admin/{controller}/{action}/{id?}
)来处理请求,这显然不是我们所期望的。
KEY的组成格式为ClassName@PropertyName,例如产品的标题是:Product@Title
您可以下载企业版免费使用,如果您需要定制二次开发,则可以通过购买企业版授权来获取完整的源代码进行二次开发。
@using (Script.AtFoot()){ <script type="text/javascript"> </script>}
定义样式:
注意:编辑模板时,程序会优先查找当前主题目录下的liquid
模板,所以也可以只在主题目录下建liquid
模板。
所以当访问~/index时,就到了PageController -> Main
进行处理。
如果是.Net Core版本,建意不要使用IIS Express而是使用控制台来运行程序,以免插件生成失败。设置使用开源CMS.WebHost来运行程序:
文章概览组件,其实于文章并没有直接的关系,您可用于其它做用,显示一个标题,一个 “More” 链接,然后是内容。
每一个网站都会有一个导航,方便用户进入相关的页面。导航的内容并不直接来源于导航组件,而是导航组件从导航模块抓出导航的内容,然后再在前端显示。