如何使用`archiveList`标签调用指定分类、推荐属性的文档列表?

安企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模板开发中不可或缺的利器。通过灵活运用categoryIdflag这两个核心参数,结合typelimitorder等其他参数,您可以轻松实现各种复杂的文档列表展示需求。这不仅提升了网站内容的组织效率,也为用户提供了更加个性化和便捷的浏览体验。


常见问题解答

如何在一个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" %}