如何在AnQiCMS文章详情页底部显示相关文章推荐?

在AnQiCMS中,为文章详情页添加相关文章推荐功能,不仅能有效提升用户在网站上的停留时间,引导他们发现更多感兴趣的内容,对于网站的SEO表现也有积极的促进作用。好在AnQiCMS提供了灵活强大的模板标签系统,实现这一功能并非难事。

理解AnQiCMS的模板结构

在AnQiCMS中,网站的页面布局和内容展示都由模板文件控制。文章详情页的模板文件通常位于你的模板目录下,具体路径可能是 /template/{你的模板名称}/archive/detail.html。如果你使用的是默认模板,那么很可能就是 default/archive/detail.html。了解这个文件是实现相关文章推荐的第一步,因为所有改动都将在此进行。

AnQiCMS的模板语言类似Django模板引擎,变量通过双花括号 {{变量名}} 来显示,而逻辑控制(如循环、条件判断)则使用单花括号和百分号 {% 标签 %} 来定义。

实现相关文章推荐的核心:archiveList 标签

要在文章详情页底部展示相关文章,我们需要用到AnQiCMS提供的archiveList模板标签。这个标签专门用于获取文档列表,并提供了多种参数来满足不同的获取需求,其中就包括了获取“相关文章”的功能。

将推荐内容添加到文章详情页,你需要编辑 /template/{你的模板名称}/archive/detail.html 文件。找到文章内容主体结束的位置,通常是在 {{archive.Content|safe}} 这段代码之后,或者在你希望显示推荐内容的任何位置。

以下是实现相关文章推荐的几种常见方式及其代码示例:

1. 基于当前文章的“自动”相关推荐

这是最简单也是最常用的方法。AnQiCMS在默认情况下,当你使用type="related"参数时,会智能地获取与当前文章最接近的其他文档,通常是同分类或发布时间相近的文章。

<div class="related-articles">
    <h3>相关文章推荐</h3>
    <ul>
    {% archiveList archives with type="related" limit="5" %}
        {% for item in archives %}
        <li>
            <a href="{{item.Link}}" title="{{item.Title}}">
                {% if item.Thumb %}
                <img src="{{item.Thumb}}" alt="{{item.Title}}">
                {% endif %}
                <span class="article-title">{{item.Title}}</span>
                <span class="article-date">{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            </a>
        </li>
        {% empty %}
        <li>暂无相关文章推荐。</li>
        {% endfor %}
    {% endarchiveList %}
    </ul>
</div>

代码解释:

  • <div class="related-articles">...</div>:这是一个容器,你可以根据自己的网站设计添加样式。
  • {% archiveList archives with type="related" limit="5" %}:这是核心标签。
    • archives:定义一个变量名,用于存储获取到的文章列表。
    • type="related":指示系统获取相关文章。
    • limit="5":限制推荐文章的数量为5篇。
  • {% for item in archives %}...{% endfor %}:循环遍历获取到的每一篇文章。
    • item:在每次循环中代表当前文章的对象。
    • {{item.Link}}:获取文章的链接。
    • {{item.Title}}:获取文章的标题。
    • {% if item.Thumb %}<img src="{{item.Thumb}}" alt="{{item.Title}}">{% endif %}:检查文章是否有缩略图,如果有则显示。item.Thumb会自动提供缩略图路径。
    • {{stampToDate(item.CreatedTime, "2006-01-02")}}:将文章的发布时间戳格式化为“年-月-日”的格式。
  • {% empty %}<li>暂无相关文章推荐。</li>{% endempty %}:这是一个非常实用的结构,当archiveList没有获取到任何文章时,会显示empty区块中的内容,而不是留白。

2. 基于文章“关键词”的相关推荐

如果你希望推荐的文章与当前文章的关键词(Tag)高度相关,可以使用like="keywords"参数。这会指示AnQiCMS根据当前文章的第一个关键词来查找其他相关文章。

<div class="related-articles-by-keywords">
    <h3>基于关键词的相关推荐</h3>
    <ul>
    {% archiveList archives with type="related" like="keywords" limit="5" %}
        {% for item in archives %}
        <li>
            <a href="{{item.Link}}" title="{{item.Title}}">
                <span class="article-title">{{item.Title}}</span>
                <span class="article-date">{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            </a>
        </li>
        {% empty %}
        <li>暂无基于关键词的相关推荐。</li>
        {% endfor %}
    {% endarchiveList %}
    </ul>
</div>

这个示例与第一个类似,只是在archiveList标签中增加了like="keywords"参数,AnQiCMS会自动处理匹配逻辑。

3. 基于“后台手动关联”的相关推荐

AnQiCMS还支持在后台文章编辑界面手动关联其他文章。如果你已在后台设置了这些手动关联,并希望将其显示出来,可以使用like="relation"参数。

<div class="related-articles-by-relation">
    <h3>手动关联推荐</h3>
    <ul>
    {% archiveList archives with type="related" like="relation" limit="5" %}
        {% for item in archives %}
        <li>
            <a href="{{item.Link}}" title="{{item.Title}}">
                <span class="article-title">{{item.Title}}</span>
                <span class="article-date">{{stampToDate(item.CreatedTime, "2006-01-02")}}</span>
            </a>
        </li>
        {% empty %}
        <li>暂无手动关联推荐。</li>
        {% endfor %}
    {% endarchiveList %}
    </ul>
</div>

同样地,只需修改like参数即可。请注意,如果文章没有进行手动关联,或者你选择的“相关”逻辑未能匹配到任何文章,{% empty %}区块中的提示信息就会发挥作用。

总结

通过上述几种方法,您可以根据自己的内容策略和需求,在AnQiCMS文章详情页底部灵活地实现相关文章推荐功能。选择最适合您网站的推荐逻辑,将其代码片段粘贴到文章详情页模板的适当位置,保存文件后,刷新网站页面即可看到效果。记得为推荐区块添加合适的CSS样式,使其与您的网站整体设计风格保持一致,提供更好的用户体验。


常见问题解答 (FAQ)

**1. 我想推荐非当前分类的文章,或者只推荐某些特定分类的文章,应该怎么做