全局 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();