如何根据特定推荐属性(如“头条”、“推荐”)筛选并显示文档列表?

在AnQiCMS中,内容推荐属性的灵活运用,是提升网站内容曝光度和用户体验的关键环节。无论是希望在首页突出重要新闻,还是在特定版块推荐精选内容,AnQiCMS都提供了便捷高效的方案。本文将深入探讨如何根据“头条”、“推荐”等特定属性,筛选并显示文档列表,帮助你更好地管理和呈现网站内容。

第一部分:理解推荐属性及其设置

在AnQiCMS的内容管理系统中,推荐属性是一项非常实用的功能,它允许我们为文档标记不同的重要程度或展示方式。这些属性通常包括但不限于“头条”、“推荐”、“幻灯”等,各自对应一个简短的字母标识,方便在模板中进行调用。

具体来说,AnQiCMS提供了以下几种常用的推荐属性:

  • 头条 [h]: 通常用于网站最重要的、最需要突出展示的内容。
  • 推荐 [c]: 表示该内容被编辑推荐,适合在列表或侧边栏进行展示。
  • 幻灯 [f]: 专为轮播图或焦点图设计的内容。
  • 特荐 [a]: 一种特殊的推荐,可能拥有更高的优先级。
  • 滚动 [s]: 适用于在页面上以滚动形式展示的内容,如公告栏。
  • 加粗 [h]: 文本层面的强调,但在某些模板设计中可能也用于内容筛选。
  • 图片 [p]: 强调内容包含重要图片,可能用于图片列表。
  • 跳转 [j]: 指示该内容点击后会跳转到外部链接或指定页面。

如何在后台设置推荐属性?

当你发布或编辑文档时,在文档编辑界面的显著位置,你会看到一个名为“推荐属性”的选项区域。在这里,你可以根据文档的实际需求,勾选一个或多个推荐属性。例如,如果一篇新闻稿件是当前网站的重磅内容,你可以勾选“头条[h]”和“推荐[c]”。AnQiCMS允许你单选、多选或不选这些属性,这为前端内容的灵活展示奠定了基础。

需要注意的是,虽然后台可以为文档勾选多个推荐属性,但在前端模板标签调用时,通常会针对单个属性进行筛选。

第二部分:使用 archiveList 标签进行筛选和展示

AnQiCMS的模板系统采用类似Django的语法,其中archiveList标签是获取文档列表的核心工具。通过灵活运用archiveList标签的参数,我们可以轻松实现按推荐属性筛选文档的需求。

基础筛选:获取带有特定推荐属性的文档

要筛选具有特定推荐属性的文档,我们主要会用到 archiveList 标签的 flag 参数。flag参数的值就是我们在后台设置推荐属性时看到的字母标识。

假设我们想获取带有“头条”属性的最新5篇文章,并以列表形式展示,可以这样编写模板代码:

{# 获取带有“头条”属性 (flag="h") 的最新5篇文档 #}
<div class="headlines-section">
    <h3>头条新闻</h3>
    <ul>
        {% archiveList archives with flag="h" limit="5" order="id desc" %}
            {% for item in archives %}
                <li>
                    <a href="{{ item.Link }}" title="{{ item.Title }}">
                        <h4>{{ item.Title }}</h4>
                        <p>{{ item.Description|truncatechars:80 }}</p>
                        <span>发布时间:{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                        <span>浏览量:{{ item.Views }}</span>
                    </a>
                </li>
            {% empty %}
                <li>暂无头条新闻。</li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

在这个例子中:

  • flag="h":指定只筛选带有“头条”属性的文档。
  • limit="5":限制只显示5篇文章。
  • order="id desc":按照文档ID降序排列,通常代表最新发布的文档。
  • item.Linkitem.Titleitem.Descriptionitem.CreatedTimeitem.Views:是文档对象中常用的字段,你可以根据需要选择显示。stampToDate是一个实用的时间格式化函数。
  • truncatechars:80 是一个过滤器,用于截取描述内容,防止过长。

高级筛选与分页:结合其他参数和分页功能

我们不仅可以根据推荐属性筛选,还可以结合分类、内容模型等进行更精细的筛选,并实现分页显示。

假设我们想在一个特定分类(例如ID为10的文章分类)下,显示所有“推荐”文档,并且支持分页,每页显示10篇:

{# 获取分类ID为10下,带有“推荐”属性 (flag="c") 的文档,并分页显示 #}
<div class="recommended-articles">
    <h3>推荐文章列表</h3>
    <ul>
        {% archiveList archives with categoryId="10" flag="c" type="page" limit="10" 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 %}
                        <h4>{{ item.Title }}</h4>
                        <p>{{ item.Description|truncatechars:100 }}</p>
                        <span>{{ stampToDate(item.CreatedTime, "2006-01-02") }}</span>
                    </a>
                </li>
            {% empty %}
                <li>当前分类下暂无推荐文章。</li>
            {% endfor %}
        {% endarchiveList %}
    </ul>

    {# 分页导航 #}
    <div class="pagination-section">
        {% pagination pages with show="5" %}
            {# 可以根据pages变量的属性,如pages.FirstPage.Link, pages.Pages等,构建完整的分页导航 #}
            {% if pages.PrevPage %}<a href="{{ pages.PrevPage.Link }}">上一页</a>{% endif %}
            {% for page in pages.Pages %}<a class="{% if page.IsCurrent %}active{% endif %}" href="{{ page.Link }}">{{ page.Name }}</a>{% endfor %}
            {% if pages.NextPage %}<a href="{{ pages.NextPage.Link }}">下一页</a>{% endif %}
        {% endpagination %}
    </div>
</div>

在这个例子中:

  • categoryId="10":限定文档必须属于ID为10的分类。
  • flag="c":指定筛选“推荐”属性。
  • type="page":启用分页功能,这样archiveList标签会返回分页所需的数据,而不是一次性返回所有结果。
  • limit="10":每页显示10篇文档。
  • {% pagination pages with show="5" %}:结合分页标签,它会自动根据archiveList标签返回的分页数据生成分页链接。

排除特定属性的文档

除了筛选特定属性,有时我们可能需要排除某些属性的文档。例如,在常规的文章列表中,我们可能不希望显示已经被标记为“头条”的文档,以避免内容重复展示或分散焦点。这时,可以使用 excludeFlag 参数。

{# 获取所有文章,但排除掉“头条” (excludeFlag="h") 文档 #}
<div class="all-articles">
    <h3>最新文章 (排除头条)</h3>
    <ul>
        {% archiveList archives with moduleId="1" type="list" limit="10" order="id desc" excludeFlag="h" %}
            {% for item in archives %}
                <li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
            {% empty %}
                <li>暂无文章。</li>
            {% endfor %}
        {% endarchiveList %}
    </ul>
</div>

这里 excludeFlag="h" 会确保获取到的文章列表中,不包含任何被标记为“头条”属性的文档。

在文档列表中显示推荐属性标识

如果想在文档列表中直接显示文档所带的推荐属性,可以在 archiveList 标签中添加 showFlag=true 参数。

”`twig {# 获取文章并显示其推荐属性标识 #}