全局 Site 门面随 October CMS 提供以提供用于处理 多站点实现 的工具。所有可选的多站点功能都通过配置文件 config/multisite.php 启用或禁用。
'features' => [
'cms_maintenance_setting' => false,
// ...
]hasFeature 用于检查某个特定的多站点功能是否已启用。
$useMultisite = Site::hasFeature('cms_maintenance_setting');使用 hasAnySite 来检查是否有任何已启用的站点可用。
if (Site::hasAnySite()) {
// ...
}如果存在多个站点定义,hasMultiSite 将返回 true。
if (Site::hasMultiSite()) {
// ...
}如果多个站点定义使用分组定义,则 hasSiteGroups 将返回 true。
if (Site::hasSiteGroups()) {
// ...
}请求站点将返回一个 System\Models\SiteDefinition 实例,其可用属性从缓存驱动程序或数据库加载。
getPrimarySite 方法返回主站点定义,该定义用作应对各种情况的备用方案。
$site = Site::getPrimarySite();前端主题有一个选定的站点,用于渲染 CMS 页面时,getActiveSite 站点将返回此站点。
$site = Site::getActiveSite();同样地,管理面板可以选择一个站点,并且该站点可以使用 getEditSite 方法进行检索。
$site = Site::getEditSite();要通过站点的唯一 ID 查找站点,请使用 getSiteFromId 和该标识符。
$siteFour = Site::getSiteFromId(4);要使用站点的区域设置代码查找站点,请使用 getSiteForLocale 并传入所需的区域设置。
$frenchSite = Site::getSiteForLocale('fr');如果返回多个站点,它将是 October\Rain\Database\Collection 对象的一个填充实例。
列出所有站点,包括已禁用的站点,使用 listSites 方法。
$sites = Site::listSites();仅列出已启用的站点借助 listEnabled 方法。
$sites = Site::listEnabled();列出在管理面板中启用的站点,使用listEditEnabled。
$sites = Site::listEditEnabled();站点上下文用于确定活动站点,这会将查找自动限制到该站点。在某些情况下,全局状态用于允许跨所有状态访问数据。
使用 withContext 将上下文更改为另一个站点,并传入所需站点的ID。
Site::withContext(2, function() {
// Models in site 2 are now available.
});激活全局上下文是通过使用 withGlobalContext 并向其传递一个闭包来执行的。
Site::withGlobalContext(function() {
// All models are available in here.
});使用 hasGlobalContext 方法来检查全局状态当前是否已激活。
$global = Site::hasGlobalContext();