如何根据分类、模块或推荐属性筛选并显示特定内容列表?

在使用安企CMS管理网站内容时,我们经常需要将特定的内容(比如文章、产品)以列表的形式展现在网站的不同区域。这可能意味着我们需要在首页显示最新的头条文章,在产品分类页只展示某个特定系列的产品,或者在侧边栏推荐一些热门内容。安企CMS提供了灵活的标签,让我们可以根据分类、内容模型或推荐属性等多种条件,精准地筛选并显示所需的内容列表。

接下来,我们就一起探索如何利用安企CMS强大的模板标签,实现这些精细化的内容筛选与展示。

理解核心:archiveList 标签

安企CMS中用于获取内容列表的核心工具是 archiveList 标签。它就像一个万能的内容筛选器,通过搭配不同的参数,可以满足绝大多数的内容展示需求。

这个标签的基本结构通常是这样的:

{% archiveList articles with type="list" limit="5" %}
    {% for article in articles %}
        {# 在这里展示每一篇文章的详细信息,比如标题、链接、缩略图等 #}
        <div class="article-item">
            <a href="{{ article.Link }}">{{ article.Title }}</a>
            {% if article.Thumb %}
                <img src="{{ article.Thumb }}" alt="{{ article.Title }}">
            {% endif %}
            <p>{{ article.Description }}</p>
        </div>
    {% endfor %}
{% endarchiveList %}

在上面的例子中,articles 是我们为获取到的内容列表定义的变量名,你可以根据自己的习惯命名。type="list" 表示我们希望获取一个简单的列表,而 limit="5" 则限制了只显示最新的5条内容。

根据分类筛选内容

网站内容的分类是组织信息最基本的方式。安企CMS允许我们将文章、产品等内容归属于不同的分类。要在模板中根据分类来筛选内容,我们需要使用 categoryId 参数。

假设你有一个名为“公司新闻”的分类,其ID是10。你可以在后台的“内容管理”->“文档分类”页面查看到每个分类对应的ID。

要显示“公司新闻”分类下的所有文章,你可以这样编写代码:

{# 显示分类ID为10(例如“公司新闻”)下的内容 #}
{% archiveList newsList with categoryId="10" type="list" limit="8" %}
    <h3>最新公司新闻</h3>
    {% for news in newsList %}
        <div class="news-item">
            <a href="{{ news.Link }}">{{ news.Title }}</a>
            <span>发布日期: {{ stampToDate(news.CreatedTime, "2006-01-02") }}</span>
        </div>
    {% else %}
        <p>暂时没有公司新闻。</p>
    {% endfor %}
{% endarchiveList %}

如果你的分类下还有子分类,并且你希望显示所有子分类的内容,默认情况下 archiveList 标签是会包含的。如果你只希望显示当前分类下的内容,而不包括子分类,可以添加 child=false 参数。

根据内容模型筛选内容

安企CMS的一大亮点是其灵活的内容模型功能,你可以创建“文章模型”、“产品模型”甚至“活动模型”等来适应不同的业务需求。每种内容模型都有一个唯一的 moduleId。在后台的“内容管理”->“内容模型”页面,你可以查看到这些模型的ID。

如果你想在一个页面上,比如首页,单独展示最新的产品列表,而不是文章列表,就可以利用 moduleId 进行筛选。假设“产品模型”的ID是2

{# 显示产品模型(moduleId="2")下的最新产品 #}
{% archiveList productList with moduleId="2" order="id desc" type="list" limit="6" %}
    <h2>热门产品推荐</h2>
    <div class="product-grid">
        {% for product in productList %}
            <div class="product-card">
                <a href="{{ product.Link }}">
                    <img src="{{ product.Thumb }}" alt="{{ product.Title }}">
                    <h4>{{ product.Title }}</h4>
                </a>
            </div>
        {% endfor %}
    </div>
{% endarchiveList %}

这里我们还使用了 order="id desc" 来确保按最新发布的产品排序。

根据推荐属性(Flag)筛选内容

安企CMS允许你为每篇文档设置多种推荐属性,例如“头条”、“推荐”、“幻灯”等。这些属性在后台的文档编辑界面就可以轻松勾选,并且每个属性都有一个对应的单字母标识(如h代表头条,c代表推荐,f代表幻灯)。通过 flag 参数,你可以在网站上创建各种特殊的展示区域。

例如,要在首页的轮播图位置展示被标记为“幻灯(f)”的文章:

{# 显示被标记为“幻灯(f)”的内容作为轮播图 #}
{% archiveList sliderItems with flag="f" type="list" limit="5" %}
    <div class="main-slider">
        {% for item in sliderItems %}
            <div class="slider-item">
                <a href="{{ item.Link }}">
                    <img src="{{ item.Logo }}" alt="{{ item.Title }}">
                    <h3>{{ item.Title }}</h3>
                </a>
            </div>
        {% endfor %}
    </div>
{% endarchiveList %}

你也可以组合使用多个 flag 值,用逗号隔开,例如 flag="h,c" 会同时显示被标记为“头条”和“推荐”的内容。

组合多种筛选条件

安企CMS的强大之处在于,你可以将上述的筛选条件灵活地组合起来,实现更精准的内容定位。例如,你可能想在“技术文章”分类(categoryId="12")下,筛选出属于“文章模型”(moduleId="1")且被标记为“推荐(c)”的热门技术文章。

{# 组合筛选:显示技术文章分类下,文章模型中,被推荐的内容,并按浏览量倒序排列 #}
{% archiveList featuredTechArticles with categoryId="12" moduleId="1" flag="c" order="views desc" type="list" limit="4" %}
    <h2>精选技术推荐</h2>
    <ul class="featured-list">
        {% for article in featuredTechArticles %}
            <li>
                <a href="{{ article.Link }}">{{ article.Title }}</a>
                <span>({{ article.Views }} 阅读)</span>
            </li>
        {% endfor %}
    </ul>
{% endarchiveList %}

在这个例子中,我们不仅组合了分类、模型和推荐属性,还通过 order="views desc" 让最受欢迎的文章优先显示,并用 limit="4" 控制了显示数量。

进阶筛选:排除特定内容与自定义字段

除了基本的筛选外,archiveList 还提供了一些高级选项,比如 excludeCategoryIdexcludeFlag,可以排除掉特定的分类或推荐属性的内容。

当你网站的内容模型中定义了自定义字段(比如“文章来源”),并且希望根据这些字段进行更动态的筛选时,可以考虑使用 archiveFilters 标签,它会根据你后台设置的自定义字段生成筛选链接,配合 archiveListq 参数或URL查询参数进行内容筛选。这通常用于构建更复杂的筛选页面,例如房产网站根据户型、面积筛选房源。不过,具体实现会涉及URL参数的传递和处理,更适合有模板开发经验的用户