在安企CMS中管理和展示自定义内容模型,例如产品列表、活动详情等,是其强大灵活性的核心体现。安企CMS的设计哲学旨在让用户能够根据自身的业务需求,高度定制化内容结构,并将这些结构化的数据以直观、丰富的方式呈现在网站前端。
灵活内容模型的基石
首先,我们需要理解安企CMS的“灵活内容模型”功能。它允许您超越传统的“文章”范畴,创建具备独特字段集的内容类型。例如,一个“产品”模型可能包含价格、库存、SKU、多图组等字段;而一个“活动”模型则可能需要活动开始/结束时间、地点、参与人数限制等字段。这些自定义模型通过后台的“内容模型”管理进行配置,您可以在这里定义模型的名称、表名,以及最重要的——它所包含的自定义字段(如单行文本、数字、多行文本、单选、多选、下拉选择等)。这些字段是您存储和展示个性化数据的关键。
当您在后台为这些自定义模型添加内容时,填写的就是这些预先定义好的字段信息。这些结构化的数据,将通过安企CMS强大的模板引擎,呈现在您的网站上。
模板与标签:数据展示的核心
安企CMS采用了一种类似于Django的模板引擎语法,使得内容展示既直观又强大。在模板文件中,您主要会接触到两种标记:用于输出变量的双花括号 {{变量}},以及用于逻辑控制和数据获取的单花括号百分号 {% 标签 %}。所有的模板文件都存放在 /template 目录下,并可以通过定制化的文件名(如 {模型table}/detail.html 或 {模型table}/list.html)来匹配和渲染特定内容模型的页面。
要将自定义内容模型的数据呈现在网站前端,您需要熟练运用以下几个核心模板标签:
1. 展示自定义模型列表数据:archiveList 标签
当您需要在一个页面上展示多个产品、活动或其他自定义模型的内容时,archiveList 标签是您的首选工具。这个标签能够根据您的需求,从数据库中提取符合条件的数据列表。
在使用 archiveList 时,几个关键参数需要注意:
moduleId:这是指定您要获取哪个自定义模型数据的核心。例如,如果您的产品模型表名为product,那么moduleId就应设置为相应的ID(在后台内容模型中可以查看,或者使用模型名称)。categoryId:如果您为自定义模型设置了分类(例如,产品分类:电子产品、家居用品),此参数可以用来筛选特定分类下的内容。limit:控制返回的数据条数,例如limit="10"会显示10条数据。type:通常设置为type="list"获取固定数量的列表,或type="page"以支持分页功能。
{# 示例:展示产品模型下的最新10个产品 #}
{% archiveList products with moduleId="您的产品模型ID" order="id desc" limit="10" %}
{% for item in products %}
<div>
<h3><a href="{{item.Link}}">{{item.Title}}</a></h3>
<img src="{{item.Thumb}}" alt="{{item.Title}}">
{# 假设您的产品模型有一个自定义字段“Price”和“Material” #}
<p>价格: {{item.Price}}</p>
<p>材质: {{item.Material}}</p>
<p>发布日期: {{stampToDate(item.CreatedTime, "2006-01-02")}}</p>
</div>
{% endfor %}
{% endarchiveList %}
这里需要注意的是,自定义字段(如 Price 或 Material)可以直接通过 item.FieldName 的形式访问。如果您的自定义字段是图片组(例如 productImages),您可能需要再次使用 for 循环来遍历这些图片:
{# 示例:展示产品模型下的图片组自定义字段 #}
{% archiveList products with moduleId="您的产品模型ID" limit="1" %}
{% for item in products %}
{# 假设 productImages 是一个自定义的图片组字段 #}
{% if item.productImages %}
<div class="product-gallery">
{% for image_url in item.productImages %}
<img src="{{image_url}}" alt="{{item.Title}}图集">
{% endfor %}
</div>
{% endif %}
{% endfor %}
{% endarchiveList %}
2. 展示单条自定义模型详情数据:archiveDetail 标签
当用户点击一个产品进入其详情页时,您需要展示该产品的全部信息。archiveDetail 标签就是为此而生,它用于获取当前页面或指定ID的单条自定义模型数据。
在自定义模型详情页中,您可以直接通过 {{archive.FieldName}} 来访问其标准字段(如 Title、Content、Description)和自定义字段(如 Price、Material)。
{# 示例:产品详情页,展示所有信息 #}
<article>
<h1>{{archive.Title}}</h1>
<img src="{{archive.Logo}}" alt="{{archive.Title}}主图">
<p>简介: {{archive.Description}}</p>
{# 直接访问自定义字段 #}
<p>产品价格: {{archive.Price}}</p>
<p>库存数量: {{archive.Stock}}</p>
{# 遍历所有自定义参数,适用于不确定自定义字段名称的情况 #}
{% archiveParams params %}
<div>
<strong>详细参数:</strong>
<ul>
{% for param in params %}
<li>{{param.Name}}: {{param.Value}}</li>
{% endfor %}
</ul>
</div>
{% endarchiveParams %}
{# 主要内容,可能包含富文本或Markdown格式 #}
<div class="product-content">
{{archive.Content|safe}} {# 使用|safe过滤器避免HTML内容被转义 #}
</div>
</article>
archiveParams 标签在这里非常实用,特别是当您的自定义模型字段较多或经常变动时,它可以自动遍历并显示所有自定义参数及其值,而无需在模板中逐一指定字段名。
3. 增强用户体验:archiveFilters 标签
对于产品或活动列表页,如果您的自定义模型包含可筛选的参数(例如,产品按颜色、尺寸筛选;活动按类型、日期筛选),archiveFilters 标签可以帮助您创建动态的筛选界面。
{# 示例:产品列表页的筛选条件 #}
<div class="product-filters">
<h3>筛选条件:</h3>
{% archiveFilters filters with moduleId="您的产品模型ID" allText="不限" %}
{% for item in filters %}
<div class="filter-group">
<strong>{{item.Name}}: </strong>
<ul>
{% for val in item.Items %}
<li class="{% if val.IsCurrent %}active{% endif %}">
<a href="{{val.Link}}">{{val.Label}}</a>
</li>
{% endfor %}
</ul>
</div>
{% endfor %}
{% endarchiveFilters %}
</div>
结合 archiveList 的 type="page" 参数,用户点击筛选条件后,页面将自动加载符合筛选条件的数据。
自定义模板与路径约定
安企CMS的模板系统还支持非常灵活的自定义模板文件。例如,您可以为产品模型创建 product/detail.html 和 product/list.html 文件,系统会根据访问路径自动识别并应用这些模板。这意味着您可以为不同类型的内容模型设计完全不同的前端展示风格,而无需改动核心代码。
同时,所有样式、JavaScript和图片等静态资源都集中存放在 /public/static/ 目录下,便于管理和维护,确保网站加载速度和用户体验。
总结
安企CMS通过其灵活的内容模型、直观的模板标签系统和强大的定制化能力,为网站运营者提供了高效展示自定义内容数据的解决方案。无论是展示复杂的产品参数,还是丰富多样的活动信息,都能通过简单的模板配置实现,大大提升了内容管理的效率和网站的表现力。
常见问题 (FAQ)
- 如何为自定义内容模型创建和管理字段? 您可以在安企CMS后台的“内容管理”模块下找到“内容模型”菜单。进入后,您可以选择编辑现有模型(如文章、产品)或新建自定义模型。在模型编辑界面,您可以自由添加各种类型的字段,包括单行文本