在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.Link、item.Title、item.Description、item.CreatedTime、item.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 {# 获取文章并显示其推荐属性标识 #}