在安企CMS中管理和展示文章的自定义字段,如作者、来源或额外的参数,是内容运营中常见且实用的需求。安企CMS凭借其灵活的内容模型设计,提供了多种途径来实现这一目标,帮助您轻松地丰富文章信息,并以个性化的方式呈现给读者。
理解安企CMS的自定义字段
首先,我们需要了解文章的自定义字段是如何在安企CMS中工作的。在安企CMS中,文章、产品等内容都归属于特定的“内容模型”。当您在后台创建或编辑内容模型时,可以为该模型添加一系列自定义字段。这些字段可以包括单行文本(如作者、来源)、多行文本、数字、单选、多选或下拉选择等多种类型。
在定义自定义字段时,您需要设置一个“参数名”(用于后台显示)和一个“调用字段”(用于模板中调用,通常是英文小写字母)。正是这个“调用字段”,成为了我们在模板中获取和展示自定义字段的关键。
获取当前文章的自定义字段并展示
对于当前正在浏览的文章,获取其自定义字段是最直接的需求。安企CMS提供了archiveDetail和archiveParams两个模板标签来满足这一目的。
方法一:直接通过字段名获取特定自定义字段
如果您明确知道要展示哪个自定义字段(例如,您已经为文章模型定义了名为author和source的自定义字段),那么可以直接使用archiveDetail标签,并通过name属性指定自定义字段的“调用字段”。
{# 假设您在后台内容模型中定义了调用字段为“author”和“source”的自定义字段 #}
<div>
<span>作者:</span>{% archiveDetail with name="author" %}
</div>
<div>
<span>文章来源:</span>{% archiveDetail with name="source" %}
</div>
在这个例子中,{% archiveDetail with name="author" %}会直接输出当前文章中author自定义字段的值。如果该字段可能包含HTML内容(例如富文本编辑器输入的来源信息),您可能需要添加|safe过滤器来确保HTML被正确解析而不是转义:
<div>
<span>文章内容简介(假设是多行文本自定义字段):</span>{% archiveDetail with name="introduction" %}{{introduction|safe}}
</div>
方法二:循环遍历所有自定义字段
如果您希望展示文章的所有自定义参数,或者您不确定文章具体有哪些自定义字段,那么archiveParams标签会是您的好帮手。它能获取当前文章关联的所有自定义字段,并让您通过循环的方式逐一展示。
{# 获取当前文章的所有自定义参数,并以列表形式展示 #}
<div>
<h5>更多文章参数:</h5>
{% archiveParams params with sorted=true %}
{% for item in params %}
<div>
<span>{{item.Name}}:</span> {# item.Name 是自定义字段的“参数名”(后台显示名称) #}
<span>{{item.Value}}</span> {# item.Value 是自定义字段的实际值 #}
</div>
{% endfor %}
{% endarchiveParams %}
</div>
在这里,archiveParams params会将当前文章的所有自定义字段存储在params变量中。with sorted=true参数确保params是一个有序的数组,方便我们使用for循环遍历。循环中的item.Name会显示您在后台设置的自定义字段名称(如“作者”),而item.Value则会显示该字段所填写的内容。
在文章列表中展示自定义字段
自定义字段的强大之处不仅限于单篇文章详情页,在文章列表(例如相关文章、分类列表)中,我们同样可以轻松获取并展示它们。当您使用archiveList标签来循环展示文章列表时,每个文章项通常会作为item变量存在。此时,您可以通过访问item.自定义字段的调用字段来获取并展示其自定义字段。
{# 假设在一个文章列表循环中,需要显示每篇文章的作者和缩略图 #}
{% archiveList archives with type="list" categoryId="1" limit="5" %}
{% for item in archives %}
<div class="article-item">
<a href="{{item.Link}}">
<img src="{{item.Thumb}}" alt="{{item.Title}}" />
<h3>{{item.Title}}</h3>
</a>
<p>作者:{{item.Author}}</p> {# 直接访问item.Author,假设Author是自定义字段的调用字段 #}
<p>发布时间:{{stampToDate(item.CreatedTime, "2006-01-02")}}</p>
</div>
{% endfor %}
{% endarchiveList %}
在上述代码中,我们直接通过{{item.Author}}获取并展示了每篇文章的作者信息。前提是您已在文章对应的内容模型中定义了调用字段为Author的自定义字段。
总结
安企CMS通过其灵活的内容模型和直观的模板标签,让自定义字段的获取和展示变得非常简单。无论是直接引用特定字段、遍历所有字段,还是在文章列表中展示,您都可以根据具体需求选择最合适的方法,从而创建更丰富、更具个性化的内容页面。
常见问题 (FAQ)
我定义的自定义字段内容包含HTML代码,如何在前端正确显示? 如果您的自定义字段内容(例如,一个富文本编辑器输入的长文本)可能包含HTML标签,并且您希望这些HTML标签在前端被浏览器解析而不是作为纯文本显示,您需要在模板中输出该字段时,添加
|safe过滤器。例如:{{item.MyCustomHtmlField|safe}}。如何在后台定义文章的自定义字段? 要定义文章的自定义字段,您需要登录安企CMS后台,导航到“内容管理”菜单下的“内容模型”模块。找到您要添加字段的文章内容模型(例如“文章模型”),点击编辑。在模型编辑页面中,您可以点击“添加字段”按钮,为该模型定义新的自定义字段,包括设置参数名、调用字段、字段类型等。
我能否获取到不是当前页面文章的自定义字段? 可以的。
archiveDetail和archiveParams标签都支持通过id参数指定文章ID。例如,如果您想获取ID为10的文章的作者,可以使用:{% archiveDetail with name="author" id="10" %}。同样,archiveParams也可以通过id参数获取指定文章的所有自定义字段。