内容模型与字段
模型是"内容长什么样",字段是"有哪些格子"。手把手建一个产品模型,并把每种字段类型在模板里怎么输出讲清楚。
约 8 分钟
建站
代码块右上角可一键复制
这一章只做两件事:怎么建内容模型、怎么加字段。
产品、案例、下载、职位,都能在这里建。不用改代码,不用动数据库。
入口:后台 →「内容」→「内容模型」(/admin/model)。
怎么建一个内容模型#
作用:定义「这一类内容有哪些格子」。比如产品有型号、价格、图集。
步骤:
- 点左侧「内容」→「内容模型」
- 点「新建」
- 按下表填
- 点「保存」
| 填什么 | 填什么 | 说明 |
|---|---|---|
| 模型标识 | product | 只能用小写字母、数字、下划线 |
| 模型名称 | 产品 | 后台显示的名字 |
| 类型 | 栏目型 | 会有很多条内容就选它 |
| 说明 | 公司产品资料 | 写给自己看,可不填 |
类型怎么选:
| 类型 | 什么时候选 | 例子 |
|---|---|---|
| 栏目型 | 会有很多条 | 新闻、产品、案例 |
| 单页型 | 只有一条 | 关于我们、联系方式 |
| 页面型 | 独立页面 | 帮助页、活动页 |
模型标识建完就不能改了。
想好再填:product / case / download。
不要用中文,不要用 product-list 这种带横线的。建不出来?→ 看 排错手册
怎么给模型加字段#
作用:给模型加一个格子。比如产品要有「型号」。
步骤:
- 进「内容模型」
- 点这个模型后面的「字段管理」
- 点「新建字段」
- 按下表填
- 点「保存」
| 填什么 | 填什么 | 说明 |
|---|---|---|
| 字段名 | model_no | 小写字母、数字、下划线;建完不能改 |
| 显示名 | 产品型号 | 后台表单上的字 |
| 类型 | text | 看下一节表 |
| 必填 | 是 / 否 | 是 = 不填不让保存 |
产品模型常用字段(照着建就行):
| 字段名 | 显示名 | 类型 | 必填 |
|---|---|---|---|
model_no | 产品型号 | text | 是 |
price | 价格 | number | 否 |
gallery | 产品图集 | images | 否 |
spec | 规格参数 | textarea | 否 |
is_hot | 首页推荐 | switch | 否 |
release_date | 上市日期 | date | 否 |
category | 产品分类 | select | 否 |
manual | 说明书 | file | 否 |
建完模型后,系统已经自带一批内置字段:
标题、正文、封面… 这些所有模型都有,不用你再建。
你要加的是「产品」独有的。字段加错了?→ 看「怎么改字段、删字段」
字段类型怎么选#
一张表看完。先看后台长什么样,再看模板里怎么用。
| 类型 | 后台长什么样 | 模板里怎么用 |
|---|---|---|
| text | 单行输入框 | {$item.model_no} |
| textarea | 多行文本框 | {$item.spec|nl2br|raw} |
| editor | 富文本编辑器 | {$item.content|raw} |
| number | 数字输入 | {$item.price} |
| select | 下拉选择 | {$item.category} |
| radio | 单选按钮 | 同 select |
| checkbox | 多选 | {loop $item.tags_array as $t}{$t}{/loop} |
| switch | 开关 | {if $item.is_hot == 1}…{/if} |
| date | 日期选择 | {$item.release_date} |
| datetime | 日期+时间 | {$item.release_date|date=Y-m-d H:i} |
| color | 取色器 | 写进样式里 |
| image | 单图 | <img src="{$item.thumb}"> |
| images | 多图 | {loop $item.gallery as $g}<img src="{$g}">{/loop} |
| file | 单文件 | <a href="{$item.manual}">下载</a> |
| files | 多文件 | 同 images,循环 |
| tags | 标签 | {loop $item.tags_array as $t}{$t}{/loop} |
| url | 链接 | <a href="{$item.link}"> |
| 邮箱 | {$item.mail} | |
| relation | 关联内容 | 需要自己按 id 查 |
| resdownload | 下载盒 | {$item._download_html|raw} |
select 的选项怎么填:
在「选项定义」里,一行一个,格式是 值|显示名:
indoor|室内机
outdoor|室外机
accessory|配件select 存的是「值」,不是「显示名」。
上面存的是 indoor,不是「室内机」。
前台要显示中文:把 select 换成 tags 类型最省事。怎么改字段、删字段#
步骤:
- 进「内容模型」
- 点这个模型后面的「字段管理」
- 找到要改的字段
- 点「编辑」或「移除」
| 能改什么 | 效果 |
|---|---|
| 显示名 | 表单上的字 |
| 必填 | 不填不让保存 |
| 启用 / 停用 | 停用后表单里不出现,数据还在 |
| 提示 | 输入框下面的小灰字 |
| 移除 | 彻底去掉这个字段 |
「标题」「所属栏目」不能停用、不能删。
删了的话:没有标题 = 列表里是一行空白;
没有栏目 = 前台进不了任何列表页。改类型要小心:
| 动作 | 后果 |
|---|---|
| 把 text 改成 images | 旧数据读不出来,图变空 |
| 改字段名 | 程序取不到值,模板全空 |
| 改模型标识 | 系统直接禁止 |
一定要改类型?→ 先备份,或者新建字段,把数据搬过去
怎么改内置字段#
「标题」想改叫「产品名称」?「正文」不要了?都能改。
步骤:
- 进「内容模型」→「字段管理」
- 在内置字段列表里找到它
- 点「编辑」
- 改显示名,或把「启用」关掉
- 点「保存」
| 想做什么 | 怎么做 |
|---|---|
| 改名字 | 只改「显示名」 |
| 表单里不显示 | 关掉「启用」 |
| 彻底不要 | 点「移除」 |
发完内容怎么在模板里取值#
内容发出去之后,每个字段有两份值:
| 写法 | 内容 | 什么时候用 |
|---|---|---|
{$item.字段名} | 原始值 | 自己控制输出,最常用 |
{$item._字段名_html} | 渲染好的 HTML | 图片、富文本,省事 |
例子:
{* 图片,自己拼 *}
{if !empty($item.thumb)}
<img src="{$item.thumb|thumb=400,260}" alt="{$item.title}">
{/if}
{* 富文本,必须 raw *}
<div class="body">{$article.content|raw}</div>
{* 多图,循环 *}
{if !empty($article.gallery)}
{loop $article.gallery as $img}
<img src="{$img}" alt="{$article.title}">
{/loop}
{/if}模板语法记不住?→ 看 模板标签速查
六个坑,提前避开#
| 坑 | 怎么避 |
|---|---|
| 字段名不能改 | 建之前想好:price 还是 sale_price |
| 字段名不能用中文、不能带横线 | 只用 a-z、0-9、_ |
| 改类型会让旧数据读不出来 | 改之前备份,或新建字段迁移 |
| images 要循环,file 直接输出 | 看上面类型表 |
| 停用 ≠ 删除 | 停用只是不显示;要彻底去掉用「移除」 |
| 删模型默认不删内容 | 想一起删,勾「同时删除内容」;勾了不能恢复 |
下一步#
没找到答案?
在后台「缓存与维护 → 系统体检」里看环境是否正常;仍无解就打开
server_debug.php 复现一次,页面会直接告诉你异常文件与行号。