安企CMS作为一款高效的企业级内容管理系统,其强大的内容标签是实现动态、个性化内容展示的核心。对于网站运营人员而言,熟练运用这些标签,特别是archiveList,能够极大地提升内容管理的灵活性与效率。
本篇文章将详细阐述如何使用archiveList标签,精准地调用指定分类和推荐属性的文档列表,帮助您更好地构建满足用户需求、优化内容展现的网站页面。
archiveList标签:动态内容展示的核心
在安企CMS中,archiveList标签是用于从数据库中检索并展示文档列表的关键工具。无论是文章、产品或其他自定义内容模型下的文档,只要您想以列表形式呈现,archiveList都能派上用场。它提供了丰富的参数,允许您精细控制内容的筛选、排序和数量,从而实现高度定制化的页面布局。
筛选指定分类的文档
在构建网站时,我们经常需要在一个页面上展示特定分类下的文档。例如,在“新闻中心”页面展示所有新闻文章,或在“产品”页面展示某一型号的产品。archiveList标签通过categoryId参数,能够轻松实现这一需求。
您可以通过为categoryId参数赋值,来指定需要调用的分类ID。如果您的分类ID是1,则写法为categoryId="1"。如果需要同时展示多个分类下的文档,可以使用逗号将多个分类ID隔开,例如categoryId="1,2,3"。
在某些场景下,您可能希望archiveList自动识别当前页面所在的分类,并显示该分类下的文档。在这种情况下,通常可以省略categoryId参数,系统会自动尝试获取当前页面的分类ID。然而,如果您希望明确地不自动获取当前分类ID,或者在一个非分类页面(例如首页)调用所有分类的文档,可以设置categoryId="0"来避免系统自动读取。
另外,archiveList还提供了child参数来控制是否包含子分类的文档。默认情况下,child参数为true,这意味着在调用父分类时,其所有子分类下的文档也会被包含在列表中。如果您只需要显示当前分类本身的文档,而不希望牵涉到任何子分类,可以将child设置为false。
调用具有推荐属性的文档
安企CMS的文档发布功能允许内容创作者为文档设置多种推荐属性,如头条、推荐、幻灯等。这些属性在网站内容运营中至关重要,可以用于突出显示重要内容,如首页焦点图、侧边栏推荐文章等。archiveList标签通过flag参数,让您能够依据这些推荐属性来筛选文档。
系统提供了以下推荐属性:
- 头条
h - 推荐
c - 幻灯
f - 特荐
a - 滚动
s - 加粗
h(注意,此与头条属性字母重复,具体使用时需参照系统内部处理逻辑或模型文档,但通常一个Flag字母代表一个独立属性) - 图片
p - 跳转
j
要调用具有特定推荐属性的文档,您只需将对应的属性字母赋值给flag参数。例如,要显示所有被标记为“推荐”的文档,可以这样设置:flag="c"。如果您想展示首页的“幻灯”内容,则可以使用flag="f"。需要注意的是,flag参数一次只能指定一个属性值进行筛选。如果您的网站在后台配置了多个推荐属性,您可以根据实际需求,创建多个archiveList调用,每个调用筛选一个特定的属性。
综合应用与代码示例
在实际应用中,我们常常需要结合分类和推荐属性来精确定位内容。例如,在一个分类页面的侧边栏,您可能希望显示该分类下的“推荐”文章列表。
{# 示例:在一个文章模型分类页面,显示当前分类下的“推荐”文章,限制显示5条 #}
{# archives 是您定义的变量名称,用于接收文档列表数据 #}
{% archiveList archives with type="list" categoryId="0" flag="c" limit="5" order="id desc" %}
{% for item in archives %}
<li>
<a href="{{ item.Link }}" title="{{ item.Title }}">
{% if item.Thumb %}
<img src="{{ item.Thumb }}" alt="{{ item.Title }}">
{% endif %}
<h3>{{ item.Title }}</h3>
<p>{{ item.Description|truncatechars:80 }}</p>
<span>发布日期:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
</a>
</li>
{% empty %}
<li>当前分类下暂无推荐文章。</li>
{% endfor %}
{% endarchiveList %}
在上面的示例中:
type="list"表示我们希望获取一个简单的列表,而不是分页列表。categoryId="0"使得标签自动获取当前页面的分类ID(如果当前是分类页),或者不限制分类(如果当前是首页等)。如果您知道确切的分类ID,可以直接替换为categoryId="具体分类ID"。flag="c"明确指定只获取标记为“推荐”的文档。limit="5"限制了列表只显示最新的5篇文章。order="id desc"则按文档ID降序排列,通常意味着最新发布的文档排在前面。
如果您的需求是展示所有模型下的“头条”文档,并且需要分页显示,可以这样编写:
{# 示例:显示所有内容模型下的“头条”文档,并进行分页 #}
{# archives 变量用于文档列表数据 #}
{% archiveList archives with type="page" flag="h" limit="10" order="views desc" %}
{% for item in archives %}
<div class="archive-item">
<h2><a href="{{ item.Link }}">{{ item.Title }}</a></h2>
<p>{{ item.Description }}</p>
<span>浏览量:{{ item.Views }}</span>
<span>更新时间:{{ stampToDate(item.UpdatedTime, "2006-01-02 15:04") }}</span>
</div>
{% empty %}
<p>暂无头条文档。</p>
{% endfor %}
{# pages 变量用于分页信息 #}
{% pagination pages with show="5" %}
<div class="pagination-controls">
{% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}">上一页</a>{% endif %}
{% for page_item in pages.Pages %}
<a href="{{ page_item.Link }}" class="{% if page_item.IsCurrent %}active{% endif %}">{{ page_item.Name }}</a>
{% endfor %}
{% if pages.NextPage %}<a href="{{ pages.NextPage.Link }}">下一页</a>{% endif %}
</div>
{% endpagination %}
{% endarchiveList %}
此示例中:
type="page"表示启用分页功能。flag="h"筛选出所有“头条”文档。limit="10"设定每页显示10条文档。order="views desc"将文档按浏览量从高到低排序。- 结合了
pagination标签来生成分页链接,方便用户浏览。
总结
archiveList标签是安企CMS模板开发中不可或缺的利器。通过灵活运用categoryId和flag这两个核心参数,结合type、limit、order等其他参数,您可以轻松实现各种复杂的文档列表展示需求。这不仅提升了网站内容的组织效率,也为用户提供了更加个性化和便捷的浏览体验。
常见问题解答
如何在一个archiveList调用中同时筛选出具有多个推荐属性(例如,既是“头条”又是“推荐”)的文档?
archiveList标签的flag参数设计为一次只接受一个推荐属性进行筛选。这意味着您无法直接在同一个archiveList标签内通过flag="h,c"这样的方式同时筛选多个属性。如果您需要展示同时满足多个推荐属性的文档,通常需要通过自定义程序逻辑来实现,例如在后台添加一个组合属性,或者进行多次archiveList调用并在前端合并处理(这通常不推荐,因为它会增加渲染复杂性)。更好的做法是确保后台的推荐属性能够满足您的单一筛选需求,或者设计更细致的分类来区分内容。
我的文档列表已经设置了推荐属性,但为什么在前台页面没有显示任何Flag标志?
archiveList标签默认不会在返回的文档数据中包含Flag属性的详细信息。如果您希望在for循环中获取每个文档的推荐属性(例如,{{item.Flag}}),您需要在archiveList标签中显式地设置showFlag=true参数。设置后,item.Flag将返回该文档所拥有的所有推荐属性的字母组合,例如hc表示同时是头条和推荐。
如果我只想在文章列表页面显示当前分类下的文档,而不包括任何子分类的文档,应该如何设置archiveList标签?
archiveList标签的child参数控制是否包含子分类的文档。默认情况下,child的值为true,这意味着当您筛选某个分类时,其下所有子分类的文档也会被包含在列表中。如果您希望严格限定只显示当前分类(即父分类本身)的文档,不包括其任何子分类的文档,您应该将child参数设置为false,例如:{% archiveList archives with categoryId="当前分类ID" child=false limit="10" %}。