多站点功能让您能够从一个单独的 October CMS 安装管理多个网站,并根据域名分配内容。例如,一个拥有不同国家/地区特定的子网站的电子商务商店。您也可以使用它来管理本地化网站的翻译。
您可以通过访问管理面板的设置 → 管理站点页面来创建站点。每次安装都包含一个主站点,它作为每个请求的默认站点。
以下配置定义了每个站点:
*.mydomain.tld。当您创建多个站点时,可以在管理面板中使用站点选择下拉菜单选择每个站点。
此 sitePicker 组件让您管理到其他站点的链接。将其包含在页面或布局模板中是最佳位置。
[sitePicker]{% set availableSites = sitePicker.sites %}查看 站点选择器组件 文章,以了解如何显示站点 URL 和生成备选页面链接。
October CMS 配置为在满足以下条件时,根据浏览器的首选语言自动检测匹配的站点。
例如,如果主站点是 英语 其路由前缀为 /en 并且另一个站点 法语 的前缀为 /fr 那么可以观察到以下行为。
| Base URL | Behavior |
|---|---|
| https://yoursite.tld/en | Displays the English site |
| https://yoursite.tld/fr | Displays the French site |
| https://yoursite.tld | Redirect based on language preference |
当用户访问基本 URL 时,他们的首选语言会被自动检测并被重定向到一个匹配的站点。匹配的站点基于其区域设置值并且如果未找到匹配项则使用主站点。
你可以修改此行为使用在 config/cms.php 文件中找到的
redirect_policy值。
:::
在其初始状态下,多站点功能有助于创建使用单一语言的多个网站,或使用多种语言的单个网站。对站点进行分组允许您进一步扩展此概念,以创建拥有多种语言的多个站点。通过导航至 设置 → 管理站点 → 管理站点组 来创建站点组,并且一旦创建了组,每个站点都应显示一个组选择字段。
实际上,每个站点组代表一个网站,而属于该组的站点定义则代表该网站的替代语言。以下示例展示了一个关于猫和狗的网站的分组站点配置,该网站支持两种语言。
| Site Group | Site Name |
|---|---|
| Dogs | English |
| Dogs | French |
| Cats | English |
| Cats | French |
分组的站点将仅复制其特定组内的字段。例如,如果一个 Tailor 蓝图 使用 multisite: sync 选项,记录将仅在同一组中的站点之间同步。
站点定义可以基于管理员角色限制其可见性,这使您能够使用专用管理员角色来管理特定站点。要启用多站点角色限制功能:
启用后,该站点将仅在后端面板中对在该字段中指定的管理员可见。例如,要创建一个仅限开发人员访问的站点,请在该字段中选择 开发人员 角色。
存在一些核心功能默认情况下不支持多站点,例如邮件配置。您可以使用位于 features 部分下的 config/multisite.php 文件有选择地启用多站点功能。以下功能键可与多个站点定义一起使用。
| Feature | Description |
|---|---|
cms_maintenance_setting | Maintenance Mode Settings are unique for each site |
backend_mail_setting | Mail Settings are unique for each site |
system_asset_combiner | Asset combiner cache keys are unique to the site |
您可以通过将 enabled 配置设置为 false 值来彻底禁用多站点功能。
'enabled' => false该 站点服务 包含全局的 Site 外观,它提供用于处理多站点的工具。例如,以下代码在 ID 为 2 的站点的上下文中定位模型。
$model = Site::withContext(2, function() {
return Model::find(1);
});阅读 站点服务文章 以了解更多信息。