官网的新闻、产品、招聘,别塞进一张文章表

CMS系统 使用文档
CMS系统 使用文档

「首页加个招聘栏目。」需求传到开发这边,通常意味着一套新表、一套新后台、一套新模板。在 ModStart 的 CMS 系统里,这件事大概是这样:后台新建一个模型,加几个字段,建一个栏目挂上去,再把模板里的循环换掉。

差别在数据怎么放。固定结构的 CMS 把新闻、产品、案例塞进同一张表,靠类型字段区分,想给产品加「型号」、给招聘加「薪资范围」,就得改表结构。这套系统给每一类内容单独建表,字段在后台点出来,删掉也只影响这一类。企业官网、行业门户、多语言内容站都能用它,区别只在于建几个模型。

一套站四种内容,先看要分几个模型

模型管结构,栏目管位置。演示站后台的系统概况把这件事摊开了:新闻资讯 6 条、客户案例 11 条、产品中心 10 条、岗位招聘 4 条,底下是 12 个栏目、4 个模型。四个数字对应四张表,互不干扰。

后台系统概况:四类内容各自计数,右侧显示 12 个栏目、4 个模型

模型定下来之后,字段可以随便长。字段类型有十三种:单行文本、多行文本、富文本、图片、多图、文件、视频、音频、日期、日期时间、下拉、单选、复选。每个字段还能设四件事:是否必填、是否参与搜索、是否在列表里显示、是否允许游客看见。产品的「型号」放进列表,招聘的「薪资」只给登录用户看,在字段级别就分开了。

显示模式有三种,选错了后面很别扭。「列表+详情」最常见,一篇文章一条记录;「单页」适合「关于我们」这类只有一页的内容,后台编辑一条记录,前台就是一个固定页面;「表单」把栏目变成表单,访客提交的内容按字段收进来。三种模式在同一个后台并存,不用为「联系我们」再装一个留言模块。

后台的骨架是模型、字段、栏目三层

栏目管理是每天都要开的页面。表里能看到 ID、名称、URL、模型、操作五列,名称前的三角可以展开子栏目,演示站里「新闻资讯」下面挂着行业资讯、产品动态、融资投资,「产品中心」下面挂着产品分类 1 到 3。层级往上加多少层都行。

后台栏目管理:树形展开的栏目、对应模型、URL 与排序箭头

新建栏目要填的东西比想象中多。名称、URL(字母数字下划线,填 news 就能用 /news 访问)、所属模型是必填的三项;模型是「列表+详情」时,列表和详情模板也是必填的,选哪个决定前台长什么样。再往下是子标题、Banner 背景、图标、封面、SEO 三项、默认分页大小(默认 10 条)。栏目能整条复制,做十几个结构相同的产品分类时省事。

模板这一层值得单独说。后台的模板管理页把列表模板、详情模板列成一张表,右边标着「模板渲染优先级」,路径精确到 module/Cms/View/pc/cms/list/news.blade.php,箭头可以调顺序。默认给的是 cases、default、job、news、product 五套,改哪一套、被谁覆盖,这一页看得很清楚。

后台模板管理:列表模板与详情模板的渲染优先级,路径指到具体 blade 文件

一条内容从录入到出现在页面上

后台录入一条内容,写进去的其实是两个地方。公共字段进 cms_content 表:栏目、标题、内容、摘要、封面、别名、SEO 三项、发布时间、状态、推荐、置顶、标签、作者、来源。模型自己的字段进 cms_m_<模型标识> 表,一个模型一张,所以给产品加字段不会碰到新闻的数据。

发布时间可以填未来时间,到点才出现在前台。编辑把下周一的时间填上,周一之前那条内容在列表里查不到。

URL 有两种模式,在功能设置里二选一。默认是 /a/{别名},内容集中在短路径下;切成按栏目模式后变成 栏目URL/别名,路径更像传统站点,代价是内容换栏目时旧链接失效。栏目页是 /c/{id},标签页是 /tag/{标签},搜索是 /search。

搜索只查标题和标签,不搜正文。文章正文里写得再好,标题里没有那个词,站内搜索就找不到它。装上 WordSpliter 之后关键词会先分词再逐词匹配,命中率比整串匹配高一些。

谁能看,谁能发

栏目这一层有两组访问开关。按用户分组限制,可以指定哪几个会员组能进这个栏目;按 VIP 限制,可以指定哪几档会员能进。做行业报告、内部制度、经销商价格表,把栏目设成只对某个分组开放就行,不用改模板。

内容本身也有游客可见的控制,在模型的字段设置里。默认对游客隐藏,登录后才显示,适合放成本价、内部编码这类不该公开的信息。

「让用户自己投稿」不在这个模块里。栏目表单上确实有「允许用户发布」这一项,但它只在装了 CMS 用户投稿模块(CmsMemberPost)之后才出现。那个模块必须依赖 CMS,装上后内容多出审核中、审核通过、审核拒绝三种状态,后台能逐条审。只装 CMS 的话,内容只能由管理员录入。

手机上打开是什么样

模块本身标的是 PC 端,没有独立移动端。默认模板在手机上会收成单列:导航收进左上角的汉堡菜单,Banner 压成一屏宽,列表从多列变一列。

手机上的新闻列表:面包屑、缩略图加标题摘要、标签和日期

看得清、点得到,但也就到此为止。想要小程序或 App 那种体验,得另找移动端模块。预算里算移动端时,别把「响应式」当成「移动端」。

用 ModStart + CMS 模块搭起来

顺序比速度重要,模型定错了后面全要返工。

  1. 装 ModStart,版本 5.0.0 以上,Laravel 5 和 Laravel 9 两套环境都支持。
  2. 模块市场搜「CMS系统」安装。依赖会自动带上:Vendor(通用功能包,1.9.0 以上)、Member(用户系统)、Banner(1.1.0 以上),缺了在市场里补。
  3. 按需补装推荐模块:TagManager 出标签页,WordSpliter 让搜索分词,SiteMapManager 生成 sitemap。三个都不是必装,做内容站迟早会用到。
  4. 建模型。先想清楚站上有几类内容,新闻和产品能合并就合并。模型标识只能用小写字母、数字、下划线,建完改不了,后台有按中文名生成拼音标识的按钮。
  5. 加字段。每个字段决定三件事:必填、参与搜索、列表显示。搜索只认标题和标签,字段的搜索勾选帮不上忙。
  6. 建栏目,挂模型,选模板。层级按导航定,别按内容量定。
  7. 改模板。首页是 module/Cms/View/pc/cms/index.blade.php,其余清单在手册里。只改样式就在 public/theme/default/css 下新建 custom.css,再到 frame.blade.php 的 headAppend 段引入,升级不会覆盖。
  8. 上线检查。伪静态按 ModStart 文档的 Nginx 规则配一遍,storage 目录给写权限,改完模板清一次缓存。

数据备份有单独的页面,选表、选要一起备份的配置项,导成 JSON 放进模块的 Backup 目录,恢复页点一下导回去。它适合改版前的整站快照,不适合当定时备份,那件事交给数据库自己的工具。

适合谁,不适合谁

适合:内容类型超过三种、字段经常要加的企业官网;栏目层级深、要按会员分组控制可见范围的行业门户;已经有一个 ModStart 站、不想换框架的团队。

不太适合:只有几页静态内容的站点,写死几个页面更快;字段从不变化的个人博客,固定结构更省心;需要在线协作、版本对比、评论批注的团队,那是文档工具的活。

判断方法很简单:数一下现在的内容表里有几个字段是「只有某一类内容才有」的。超过三个,就该分模型了。

最后

CMS 的价值不在功能列表有多长,而在「加一类内容要多久」。这套系统的答案是:建模型、加字段、建栏目、换模板,一个下午。

你现在站上的内容分成几类?如果新闻、产品、案例、招聘还挤在一张表里,先从拆模型开始。

更新: 2026-11-07 00:34:08
QQ
微信
客服