在内容运营中,我们常常会遇到这样的情况:标准的“文章”或“产品”内容类型无法完全满足网站多样化的信息展示需求。例如,一个活动页面可能需要“报名截止日期”和“活动地点”,一个招聘信息可能需要“职位薪资”和“工作地点”,这些都是传统内容模型所不具备的。这时候,安企CMS(AnQiCMS)灵活的内容模型定制功能就显得尤为重要,它能帮助我们轻松地构建出符合特定业务逻辑的数据结构,并将其个性化地呈现在网站前台。
理解内容模型的重要性
在安企CMS中,内容模型可以被视为网站内容的“骨架”,它定义了每种内容类型(如文章、产品、活动、招聘等)包含哪些字段以及这些字段的数据类型。系统默认提供了“文章模型”和“产品模型”,但真正的强大之处在于,我们可以根据实际业务需求,创建或修改这些模型,来精确地管理和展示任何类型的数据。这意味着您的网站不再受限于预设的框架,而是能够完全按照您的构想来构建。
第一步:创建或修改内容模型
要开始自定义,首先需要进入安企CMS的后台管理界面。在左侧导航栏中找到“内容管理”菜单,然后点击“内容模型”。这里会列出所有已有的内容模型,包括系统内置的和您自定义的。
如果您想创建一个全新的内容类型,比如“招聘职位”或“课程信息”,可以点击“添加新模型”。如果是想在现有模型(如文章或产品)上增加字段,则点击对应模型右侧的“编辑”按钮。
在模型编辑界面,您会看到几个核心配置项:
- 模型名称:这是模型在前台和后台显示的中文名称,例如“招聘职位”、“课程”。
- 模型表名:这是该模型数据在数据库中存储的表名,务必使用英文小写字母,并且要确保在所有模型中是唯一的,它也是您在模板中调用数据时的重要标识。
- URL别名:用于伪静态规则中,在URL路径中代表该模型,同样建议使用英文小写字母。
- 标题名称:这个会在您发布该模型内容时,作为主标题字段的提示文字,方便内容编辑者理解。
第二步:定义自定义字段,丰富数据结构
接下来是实现个性化显示的关键一步:为您的内容模型添加自定义字段。在模型编辑页面的底部,有一个“内容模型自定义字段”区域。在这里,您可以根据需求添加各种类型的字段,来存储特定的数据。
点击“添加字段”,您需要配置以下几项:
- 参数名:这是该字段在后台编辑界面显示的中文名,例如“职位薪资”、“工作地点”、“活动日期”。
- 调用字段:这是该字段在数据库中存储的英文名称,也是您在模板中用来获取数据的重要标识。建议使用驼峰命名法或下划线命名法,例如
jobSalary、workLocation、activityDate。这个名称必须唯一且符合编程规范。 - 字段类型:安企CMS提供了多种字段类型,以适应不同的数据格式:
- 单行文本:适用于简短的文字信息,如“产品型号”、“作者姓名”。
- 数字:仅限输入数字,如“库存数量”、“商品价格”。
- 多行文本:适用于较长的文本描述,如“职位描述”、“活动详情”。
- 单项选择、多项选择、下拉选择:这三种类型可以预设多个选项,让内容编辑者从列表中选择,常用于“房屋类型”、“性别”、“产品颜色”等。您需要在“默认值”中每行输入一个选项。
- 是否必填:决定内容编辑者在发布时是否必须填写此字段。
- 默认值:为字段设置一个预设值。对于选择型字段,这里是定义所有可选项的地方。
通过合理定义这些自定义字段,您可以为不同类型的内容构建出精确的数据结构,从而为前端的个性化展示打下坚实的基础。
第三步:发布内容,填充自定义数据
当您完成了内容模型的定义并保存后,就可以开始发布对应类型的内容了。在“内容管理”下选择您自定义的模型,点击“添加文档”(或其他对应您模型名称的按钮)。
在内容发布界面,除了默认的标题、内容、分类等字段外,您会发现底部新增了您在模型中定义的“其他参数”区域。所有自定义字段都会在这里以您设定的“参数名”作为提示显示出来,等待您填入具体的数据。
请注意,每个文档都必须选择一个所属分类,而该分类则属于一个内容模型。只有选择了对应的分类,才能正确地展示并填写该内容模型特有的自定义字段。
第四步:在前台页面实现个性化显示(模板定制)
数据结构已经定义好,内容也已经填充完毕,接下来就是最令人期待的部分:如何让这些自定义数据在前台页面上绽放光彩。安企CMS采用了类似Django模板引擎的语法,让模板定制变得直观且强大。
访问单个文档的自定义数据
当您在文档详情页时,可以直接使用
archive对象来访问您自定义的字段。例如,如果您有一个名为jobSalary的调用字段,可以直接在模板中使用{{archive.JobSalary}}来显示其内容。注意,调用字段在模板中通常是首字母大写的形式。如果需要循环显示所有自定义字段,或者字段名不确定,可以使用
archiveParams标签:{% archiveParams params %} <div> {% for item in params %} <div> <span>{{item.Name}}:</span> <span>{{item.Value}}</span> </div> {% endfor %} </div> {% endarchiveParams %}如果您的自定义字段存储的是富文本(可能包含HTML),请务必加上
|safe过滤器以防止HTML被转义,或者如果内容是Markdown格式,可以使用|render过滤器将其渲染为HTML:<div>职位描述:{{archive.JobDescription|safe}}</div> {# 如果是Markdown内容 #} <div>技术要求:{{archive.TechRequirements|render|safe}}</div>访问列表中的自定义数据
在列表页(如招聘列表、课程列表),您可以使用
archiveList标签来获取文档列表。在for循环遍历archives或您定义的变量时,每个item都代表一个文档,您可以同样通过item.自定义字段名来访问其自定义数据:{% archiveList archives with moduleId="您模型对应的ID" type="page" limit="10" %} {% for item in archives %} <div> <h3><a href="{{item.Link}}">{{item.Title}}</a></h3> <p>职位薪资:{{item.JobSalary}}</p> <p>工作地点:{{item.WorkLocation}}</p> {# 其他自定义字段... #} </div> {% endfor %} {% endarchiveList %}根据自定义字段进行内容筛选
一个更高级的用法是,让访问者能够根据自定义字段来筛选内容。安企CMS提供了
archiveFilters标签来实现这一目标。例如,在招聘列表中,用户可以筛选“全职”或“兼职”职位。首先,您需要在内容模型的字段配置中,确保这些自定义字段是可筛选的。然后,在模板中这样使用:
<div> <h3>职位筛选:</h3> {% archiveFilters filters with moduleId="您模型对应的ID" allText="不限" %} {% for item in filters %} <p>{{item.Name}}:</p> <ul> {% for val in item.Items %} <li class="{% if val.IsCurrent %}active{% endif %}"><a href="{{val.Link}}">{{val.Label}}</a></li> {% endfor %} </ul> {% endfor %} {% endarchiveFilters %} </div>这段代码将生成一组筛选选项,当用户点击时,页面会自动根据选定的自定义字段值进行内容过滤。
模型与模板的对应关系
安企CMS还支持为不同的内容模型指定不同的模板文件。默认情况下,系统会尝试寻找
{模型表名}/detail.html作为详情页模板,以及{模型表名}/list.html作为列表页模板。例如,