多站点功能允许您从一个 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 时,其首选语言会被自动检测,并被重定向到匹配的网站。匹配的网站是根据其 locale 值确定的,如果找不到匹配项,则使用主网站。
您可以使用在 config/cms.php 文件中找到的
redirect_policy值来修改此行为。
:::
在其初始状态下,多站点功能有助于创建单一语言的多个网站,或者使用多种语言的单个网站。对站点进行分组可以让你能够进一步扩展此概念,以创建多个多语言站点。通过导航至 Settings → Manage Sites → Manage Site Groups 来创建站点组,一旦创建了组,每个站点就应该出现一个组选择字段。
实际上,每个站点组代表一个网站,属于该组的站点定义则代表该站点的另一种语言。以下示例展示了一个分组站点配置,用于一个关于猫狗的网站,每种都有两种语言。
| Site Group | Site Name |
|---|---|
| Dogs | English |
| Dogs | French |
| Cats | English |
| Cats | French |
编组站点将仅复制其特定组内的字段。例如,如果一个 Tailor 蓝图 使用了 multisite: sync 选项,记录将仅在同一组内的站点之间同步。
站点定义可以根据管理员角色限制其可见性,这允许您使用专用的管理员角色来管理特定站点。要启用多站点角色限制功能:
启用后,站点将仅在后端面板中对字段中指定的管理员可见。例如,要创建一个仅供开发人员访问的站点,请在该字段中选择 Developer 角色。
存在一些核心功能,默认情况下不支持多站点,例如邮件配置。您可以通过位于 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);
});阅读 站点服务文章 以了解更多信息。