如何在模板中动态获取并显示文章自定义模型字段的内容?

在安企CMS中,网站内容的灵活性是我们进行内容运营和网站布局的关键优势之一。通过自定义内容模型字段,您可以为不同类型的内容(例如文章、产品)添加独特的属性,这些属性能够更好地反映您的业务需求。但是,如何将这些精心定义的自定义字段内容动态地呈现在网站前端的模板中呢?本文将详细探讨这个话题,帮助您充分利用AnQiCMS的强大功能。

灵活自定义,高效管理:安企CMS内容模型字段

安企CMS提供了“灵活的内容模型”功能,这意味着您可以根据实际业务场景,为文章、产品等内容创建独一无二的字段。比如,您运营一个电商网站,产品除了名称、描述外,可能还需要“品牌”、“型号”、“材质”、“库存量”等专属字段。这些自定义字段不仅让后台管理更加结构化,也为前端展示多样化的内容打下了基础。

您可以在安企CMS后台的“内容管理”下找到“内容模型”功能,在这里为不同的模型定义新的字段。例如,您可以为“文章模型”添加一个“作者简介”的文本字段,或者为“产品模型”添加一个“颜色选项”的多选字段,甚至是一个“产品图集”的组图字段。定义好这些字段后,当您发布或编辑文章/产品时,就会看到这些自定义的输入项。

在模板中获取自定义字段内容的核心标签

当自定义字段的内容在后台录入完成后,接下来就是如何在前端模板中将它们展示出来。安企CMS提供了功能强大的模板标签,让这个过程变得非常直观。主要用到的是archiveDetail标签和archiveParams标签。

1. 精准获取单个自定义字段:archiveDetail标签

如果您已经知道要显示哪个自定义字段的具体名称,archiveDetail标签是您的首选。这个标签能够像获取文章标题、内容等内置字段一样,直接获取您自定义的字段内容。

假设您在后台的文章模型中,自定义了一个名为author_bio(作者简介)的字段,那么在文章详情页的模板中,您可以通过以下方式获取并显示其内容:

<div class="author-info">
    <h3>作者简介:</h3>
    {% archiveDetail authorBio with name="author_bio" %}
    <p>{{ authorBio|safe }}</p>
</div>

这里我们使用了{% archiveDetail authorBio with name="author_bio" %}author_bio字段的内容赋值给authorBio变量,然后通过{{ authorBio|safe }}将其显示出来。|safe过滤器在这里很重要,特别是当您的自定义字段内容可能包含HTML标签(比如富文本编辑器编辑的内容)时,它能确保内容被正确解析而不是作为纯文本显示。如果自定义字段存储的是Markdown格式的内容,您可以使用|render过滤器将其渲染成HTML。

2. 灵活遍历所有自定义字段:archiveParams标签

有时候,您可能需要在模板中遍历一篇文章的所有自定义字段,或者不确定字段的具体名称,这时archiveParams标签就派上了用场。它能获取当前文章或指定文章的所有自定义参数。

archiveParams标签有两种主要的使用方式:

a) 作为有序数组遍历: 默认情况下,archiveParams会返回一个有序的数组,每个数组项包含Name(字段显示名称)和Value(字段值)。

<div class="custom-fields-list">
    <h3>更多文章信息:</h3>
    {% archiveParams params %}
    {% for item in params %}
        <p><strong>{{ item.Name }}:</strong> {{ item.Value }}</p>
    {% endfor %}
    {% endarchiveParams %}
</div>

这种方式非常适合通用地展示所有自定义字段,无需关心字段的具体名称。

b) 作为无序Map直接访问: 如果您希望像访问对象属性一样,通过自定义字段的“调用字段”名称直接获取其值,可以在archiveParams标签中添加sorted=false参数。

假设您的文章模型中定义了isbn(ISBN号)和publisher(出版社)两个自定义字段,它们的“调用字段”分别是isbnpublisher

<div class="book-info">
    <h3>图书信息:</h3>
    {% archiveParams bookDetails with sorted=false %}
    <p><strong>ISBN:</strong> {{ bookDetails.isbn.Value }}</p>
    <p><strong>出版社:</strong> {{ bookDetails.publisher.Value }}</p>
    {% endarchiveParams %}
</div>

这种方式要求您明确知道自定义字段的“调用字段”名称,但在某些特定布局下能让代码更简洁。

结合实际场景的应用

了解了核心标签后,我们来看看一些常见的实际应用场景:

  • 显示产品画廊: 如果您定义了一个名为product_images的组图字段,用于存储产品的多张图片,您可以这样在产品详情页显示它们:

    <div class="product-gallery">
        {% archiveDetail productImages with name="product_images" %}
        {% for imgUrl in productImages %}
            <img src="{{ imgUrl }}" alt="产品图片">
        {% endfor %}
        {% endarchiveDetail %}
    </div>
    
  • 展示产品规格或特点: 假设您有“尺寸”、“重量”、“颜色”等自定义字段,可以结合archiveParams进行列表展示:

    <ul class="product-specs">
        {% archiveParams specs %}
        {% for item in specs %}
            <li><strong>{{ item.Name }}:</strong> {{ item.Value }}</li>
        {% endfor %}
        {% endarchiveParams %}
    </ul>
    
  • 显示特殊提示或说明: 例如,文章有一个名为special_note(特别提示)的单行文本字段