跳到主要内容

CMS 系统

CMS 是 Content Management System 的缩写,意为"内容管理系统",可以浏览、编辑、发布文章等,用于企业宣传、产品介绍、博客、建站等等场景。

这里我们用一个基础版本的 CMS 系统来展示清林云自定义应用能力。基础版本能满足大部分基础需求,但是每家组织的 CMS 需求都不相同,所以你也可以在这个基础上再自行添加更多高级的个性化功能。

清林云 BaaS 的 CMS 相当于市面上的 Headless CMS,都是只负责逻辑和数据,前端自己定制。

需求#

组织或个人需要发布一些文章等内容,让用户可以阅读。

CMS 的用途比较广泛,可以用于产品介绍,可以用于新闻动态,可以用于文章记录,也可以用于品牌展示。

其实对于内容比较少的并且懂一定技术的用户来说,静态网站更好,自行编辑部署,利于 SEO,还能利用 CDN 加速等。

但是对于内容比较多的网站,肯定不能用静态网站,管不过来。而且很多场景下,也不希望每次编辑内容都要走一遍开发部署流程,直接在线编辑所见即所得。

动态内容肯定要比制作静态网站方便,部署一次之后只需要编辑文章就行。

可能有人会觉得不利于 SEO,但现在百度谷歌的爬虫其实也能爬动态内容的,对于 seo 其实影响不大,而且实在担心,也可以用 ssr 服务端渲染。

相比起传统的基于 PHP 等框架的单机 CMS,借助于清林云的分布式能力,这里的 CMS 能够承担大规模流量和数据,无需担心宕机,也不用再自行采购服务器等,前端可以使用 React、Vue 等现代框架制作更好更漂亮的网站内容,也更加灵活。

功能分析#

首先,CMS 的核心目的就是让文章能够被用户阅读,所以首先要能以时间顺序排列,要能被多个条件搜索或全文检索。

其次,管理人员可以对文章进行编辑、保存为草稿、发布、分组、打标签等管理。

最后,如果网站允许读者登录,也可以添加评论、点赞、收藏等,整体是可选的。

数据库结构#

Article 文章#

整个系统围绕文章,所以这是重点,要尽量给它多重分类,这样就能更好适用大小网站。

采用 S1 引擎,获得更好的查询。

article1

article2

Directory 目录#

如果有多个文章组成的集合,可以使用目录来组织。

directory

SiteConfig 站点配置#

用于建站场景,可以设置一些站点名称、logo、网址、简介等

siteConfig

ArticleConfig 文章管理配置#

分类站点、页面、分组、类别,以及预设的标签、类型、作者等,方便编辑时直接选用。

articleConfig


下面的表则是可选项,需要产品的用户登录后才能使用:

Comment 评论#

评论归属于文章,但同时评论的 ID 再加一个 parentId。这样子就能实现跟多功能。

比如说,parentId 为 hot 时,可以通过此查询精选评论;为 top 时,可以查询置顶评论;为 root 时则为普通评论,为其他评论 ID 时,则为多级评论,可以用评论回复别人的评论,无限折叠下去,当然具体怎样取决于实际的产品设计。

comment

LikeArticle 点赞过的文章#

简单的按时间排序记录列表。

like

ViewArticle 浏览记录#

同上。

view

CollectionList 收藏夹#

用户可以有多个收藏夹,分别收藏不同类型的文章。

collectionList

CollectionArticle 收藏过的文章#

collectionArticle

API#

由于大部分 API 都是 CRUD,所以我们直接在云数据库界面使用模板创建。

另外对文章阅读、点赞、收藏、评论数的更新都放在相应数据的新建 API 流程中。

createArticle#

createArticle1

createArticle2

updateArticle#

updateArticle1

updateArticle2

deleteArticle#

deleteArticle1

searchArticle#

搜索文章,由于 S1 引擎的优越性,我们可以充分利用搜索功能才区分文章。几个分类属性可以决定归属,当然简单的站点可以不使用,不传值即可。

可以按创建时间排序,也可以按点赞数、排序分、内容相关性等条件排序。

最后返回值不包括 content,因为该字段为正文较大,不用包含在内,只返回列表和概要,然后当用户点击列表后使用下面的 getArticle API 查询正文。

searchArticle1

getArticle#

getArticle1

createDirectory#

createDirectory1

updateDirectory#

updateDirectory1

deleteDirectory#

deleteDirectory1

getDirectory#

getDirectory1

getManyDirectory#

getManyDirectory1

createSiteConfig#

createSiteConfig

updateSiteConfig#

updateSiteConfig

deleteSiteConfig#

deleteSiteConfig

getSiteConfig#

getSiteConfig

getManySiteConfig#

getManySiteConfig

createArticleConfig#

createArticleConfig

updateArticleConfig#

updateArticleConfig

deleteArticleConfig#

deleteArticleConfig

getArticleConfig#

getArticleConfig

getManyArticleConfig#

getManyArticleConfig

createComment#

createComment

deleteMyComment#

deleteMyComment

deleteComment#

deleteComment

getManyComment#

getManyComment

createLikeArticle#

createLikeArticle

deleteLikeArticle#

deleteLikeArticle

getManyLikeArticle#

getManyLikeArticle

createViewArticle#

createViewArticle

deleteViewArticle#

deleteViewArticle

getManyViewArticle#

getManyViewArticle

createCollectionList#

createCollectionList

updateCollectionList#

updateCollectionList

deleteCollectionList#

deleteCollectionList

getManyCollectionList#

getManyCollectionList

createCollectionArticle#

createCollectionArticle

deleteCollectionArticle#

deleteCollectionArticle

getManyCollectionArticle#

getManyCollectionArticle

viewArticle#

viewArticle

dislikeArticle#

dislikeArticle

界面#

暂无前端示例,后续会更新一个 CMS 系统进行开源,如果急需请联系客服。