AnQiCMS 强大的多站点管理功能,为拥有多个品牌或子站点的用户带来了极大的便利。它不仅能让您统一管理不同的内容站点,更支持跨站点的数据共享与资源整合。当您希望在一个站点上展示来自其他站点的内容,或是调用其他站点的系统配置信息时,AnQiCMS 提供了一套简洁而高效的机制来实现这一目标。
在 AnQiCMS 中,实现跨站点内容或配置信息的调用,其核心在于灵活运用模板标签的 siteId 参数。这个参数如同一个站点识别码,明确告诉系统您希望从哪个特定的站点获取数据。通过为各种内容和配置相关的模板标签指定这个 siteId,您便能轻松地在您的主站上展示子站的最新文章,或者在产品站上调用企业官网的联系方式等。
调用其他站点的内容信息
想象一下,您有一个企业官网和一个专门发布行业新闻的子站。如果您想在企业官网的首页显示子站的最新五篇新闻,您无需手动复制粘贴,也无需复杂的二次开发。利用 archiveList 标签,并指定子站的 siteId 即可:
{% archiveList latestNews with type="list" limit="5" siteId="您子站的ID" %}
{% for item in latestNews %}
<li><a href="{{ item.Link }}">{{ item.Title }}</a></li>
{% endfor %}
{% endarchiveList %}
这里,siteId="您子站的ID" 就是关键所在。它指示系统从您指定 ID 的子站获取文章列表。
同样,如果您需要显示某个特定文章的详细信息,例如一个产品介绍页面,您可以使用 archiveDetail 标签:
{% archiveDetail productDetail with name="Content" id="指定文章ID" siteId="您产品站的ID" %}
<div class="product-description">{{ productDetail|safe }}</div>
{% endarchiveDetail %}
通过指定 id 和 siteId,您就能精准地获取到特定站点的特定内容字段。
这种机制同样适用于其他类型的内容标签。例如,如果您想列出某个子站的分类列表,可以使用 categoryList:
{% categoryList subSiteCategories with moduleId="1" parentId="0" siteId="您子站的ID" %}
{% for category in subSiteCategories %}
<a href="{{ category.Link }}">{{ category.Title }}</a>
{% endfor %}
{% endcategoryList %}
或者调用特定单页面的详情:
{% pageDetail aboutPage with name="Content" token="about-us" siteId="您子站的ID" %}
<div>{{ aboutPage|safe }}</div>
{% endpageDetail %}
甚至可以获取其他站点的标签云或与某个标签相关的文档列表,只需在 tagList 或 tagDataList 中加入 siteId 参数即可。
调用其他站点的系统配置信息
除了内容,您可能还会遇到需要调用其他站点的系统配置信息的情况,比如联系方式、网站 Logo、备案号等。AnQiCMS 同样为此提供了便利。
system 标签允许您获取各种全局系统配置:
<img src="{% system with name="SiteLogo" siteId="您官网的ID" %}" alt="Logo">
<p>{% system with name="SiteCopyright" siteId="您官网的ID" %}</p>
在这里,siteId="您官网的ID" 让您能够轻而易举地获取到官网设定的 Logo 地址和版权信息,而无需在每个子站中重复配置。
如果您需要展示另一个站点的联系方式,contact 标签同样支持 siteId 参数:
<p>联系电话:{% contact with name="Cellphone" siteId="您其他站点的ID" %}</p>
<p>联系邮箱:{% contact with name="Email" siteId="您其他站点的ID" %}</p>
这在搭建统一客服或信息展示页面时尤其有用。
即使是页面的 TDK(Title, Keywords, Description)信息,也能通过 tdk 标签指定 siteId 来调用:
<title>{% tdk with name="Title" siteId="您其他站点的ID" %}</title>
此外,navList 标签也支持 siteId,这意味着您甚至可以在一个站点上展示来自另一个站点的导航菜单,实现更高度的统一和复用。
如何获取 siteId
那么,如何知道不同站点的 siteId 呢?在 AnQiCMS 的后台管理界面,您可以通过“多站点管理”功能查看到所有已创建站点的详细信息,其中通常会包含每个站点的唯一标识符,即 siteId。这个 ID 通常是一个数字,您只需将其替换到模板标签中的 siteId 参数即可。
AnQiCMS 提供的这种跨站点调用能力,极大地提升了多站点运营的效率和灵活性。无论是内容聚合、统一品牌形象,还是集中管理核心信息,siteId 参数都扮演着不可或缺的角色,让您的多站点生态系统更加紧密和高效。
常见问题 (FAQ)
我可以在哪些类型的模板标签中使用
siteId参数?siteId参数几乎支持所有与内容和系统配置相关的 AnQiCMS 模板标签,包括archiveList(文档列表),archiveDetail(文档详情),categoryList(分类列表),pageDetail(单页详情),tagList(标签列表),system(系统配置),contact(联系方式),tdk(页面TDK),navList(导航列表) 等。只要您需要从非当前站点获取数据,通常都可以尝试使用siteId参数来指定来源。调用其他站点的数据会影响当前站点的加载速度吗? 由于 AnQiCMS 是一个基于 Go 语言开发的高性能内容管理系统,并且通常多站点部署在同一台服务器上,因此通过
siteId进行的内部数据调用通常效率很高,对当前站点的加载速度影响很小。但如果调用了大量来自其他站点的数据,或者目标站点本身数据量庞大、查询复杂,仍然建议您进行性能测试,并考虑对数据进行缓存以优化用户体验。如果我指定的
siteId不存在,或者该站点上没有我请求的内容,系统会如何处理? 如果siteId不存在或者目标站点上没有找到请求的特定内容(例如,请求的文章 ID 在目标站点上不存在),AnQiCMS 的模板标签通常会返回空值或一个空集合。这意味着您的页面不会因为数据缺失而报错,而是会显示空白或者您在模板中为“无内容”情况设置的备用信息。为了更好的用户体验,建议在模板中为可能返回空值的标签添加判断(例如{% if item %}或{% empty %})来处理这种情况。