public static Article Build(Action <Article> modifier = null) { var article = new Article { Title = "Timor CMS 简介", SubTitle = "Timor Cms", ShortDescription = "Timor CMS 是一款非常轻量级的内容管理系统,它不支持过多花里胡哨的功能,只会支持最基本的文章及分类的管理。", Content = @"本项目致力于帮助开发人员快速实现一个新闻、企业官网系统。 我们可以想这样一种场景,有客户想构建一个展示型的官网。接到这个任务后,首先,我们需要找一个UX帮助做UI的设计;然后当设计完成后,开发人员需要将UX给的设计稿转换为动态页面,并实现一个后台管理系统,来帮助客户管理内容。如果有做过类似项(si)目(huo) 的伙计都知道,其实大部分时间都是在搞后台管理系统,前端往往是很快速就可以实现的。 那有人想问,难道就没有一个开源项目可以做吗?据我所知,目前市面上大部分的CMS系统,都是比较复杂的,上手的成本比较高,而且花里胡哨的功能也比较多,但是往往来说,根本用不上那么多的功能。比如像织梦这种CMS系统,虽然支持了一堆高端的标签,但是对于一个.NET开发人员来说,远没有Razor来的顺手,对吗?再比如像纸壳这种CMS,虽然他很强大,支持后端可视化编辑,但是真心不如让开发人员自己写Razor来做,毕竟可视化做的再牛,也不可能有自己写代码控制能力强。 所以,在这个项目中,我的重点精力会放在后台文章管理系统,而前端,只会做一些常见的网站有的模块,供开发人员参考。开发人员在下载本项目后,后台模块是几乎不需要做任何改动(除非有一些定制化的需求),而只需要把前台UX给的静态页面变成动态的,而这个转换的过程,大部分只是需要将Razor中的示例HTML替换掉。", Author = "白云晨", PublishDate = DateTime.Now, ReferenceUrl = "http://timorcms.com/timor-cms.html", VisitCount = new Random(100).Next(10, 100000), CoverImage = AttachmentBuilder.Build(), Attachments = new List <Attachment> { AttachmentBuilder.Build() }, Seo = SeoBuilder.BuildForArticle(), Categories = new List <Category> { CategoryBuilder.Build() } }; AuditingEntityBuilder.PopulateAuditingInfo(article); modifier?.Invoke(article); return(article); }
public static Tag Build(Action <Tag> modifier = null) { var tag = new Tag { Name = "Cms", Seo = SeoBuilder.BuildForTag() }; AuditingEntityBuilder.PopulateAuditingInfo(tag); modifier?.Invoke(tag); return(tag); }
public static Seo Build(Action <Seo> modifier = null) { var seo = new Seo { Id = ObjectId.GenerateNewId().ToString(), Uri = "/part1/part2", KeyWords = "Cms 轻量级", Description = "这是一篇绝世好文" }; AuditingEntityBuilder.PopulateAuditingInfo(seo); modifier?.Invoke(seo); return(seo); }
public static Category Build(Action <Category> modifier = null) { var category = new Category { Name = "公司简介", Description = "公司基本情况", Priority = 1, ParentCategory = null, Ads = new List <Ad> { AdBuilder.Build() }, Seo = SeoBuilder.BuildForCategory() }; AuditingEntityBuilder.PopulateAuditingInfo(category); modifier?.Invoke(category); return(category); }