在使用安企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 还提供了一些高级选项,比如 excludeCategoryId 和 excludeFlag,可以排除掉特定的分类或推荐属性的内容。
当你网站的内容模型中定义了自定义字段(比如“文章来源”),并且希望根据这些字段进行更动态的筛选时,可以考虑使用 archiveFilters 标签,它会根据你后台设置的自定义字段生成筛选链接,配合 archiveList 的 q 参数或URL查询参数进行内容筛选。这通常用于构建更复杂的筛选页面,例如房产网站根据户型、面积筛选房源。不过,具体实现会涉及URL参数的传递和处理,更适合有模板开发经验的用户