Skip to content

Instantly share code, notes, and snippets.

@ceaksan
Created September 6, 2025 19:47
Show Gist options
  • Save ceaksan/12d8280272effe3e7e2a115d491f88ee to your computer and use it in GitHub Desktop.
Save ceaksan/12d8280272effe3e7e2a115d491f88ee to your computer and use it in GitHub Desktop.
/**
* Multisite setup for subsites accessible via sub-domains.
*
* DO NOT EDIT UNLESS YOU KNOW WHAT YOU ARE DOING!
*/
use Grav\Common\Utils;
// Get subsite name from sub-domain
$environment = isset($_SERVER['HTTP_HOST'])
? $_SERVER['HTTP_HOST']
: (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'localhost');
// Remove port from HTTP_HOST generated $environment
$environment = strtolower(Utils::substrToString($environment, ':'));
$folder = "sites/{$environment}";
$themes = ["user/themes"];
if (is_dir(__DIR__ . "/user/{$folder}/themes")) {
array_unshift($themes, "user/{$folder}/themes");
}
$plugins = ["user/plugins"];
if (is_dir(__DIR__ . "/user/{$folder}/plugins")) {
array_unshift($themes, "user/{$folder}/plugins");
}
if ($environment === 'localhost' || !is_dir(ROOT_DIR . "user/{$folder}")) {
return [];
}
return [
'environment' => $environment,
'streams' => [
'schemes' => [
'user' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
],
'environment' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ["user/{$folder}"],
]
],
'themes' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => $themes
]
],
'plugins' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => $plugins
]
],
'plugin' => [
'type' => 'ReadOnlyStream',
'prefixes' => [
'' => ['plugins://']
]
]
]
]
];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment