joachim-n/automultisites

There is no license information available for the latest version (1.0.3) of this package.

Provides helper code for running Drupal with automatic multisites based on folder structure.

1.0.3 2024-10-30 10:10 UTC

This package is auto-updated.

Last update: 2024-10-30 10:14:01 UTC


README

This is a collection of helpers for quickly creating new subsites in a local Drupal project. It can often be useful to create a new site using a project's codebase, either to debug or prototype on a fresh install, or to quickly switch between different copies of the database.

The subsites use subfolders, so there is no need for creating new virtual hosts.

A symlink in the Drupal root back to itself allows Drupal to function as if it were in a subfolder, which allows the multisite system to consider it a different site.

Compatibility

  • The Drush command requires Drush ^10.5.
  • This is not entirely compatible with the joachim-n/drupal-core-development-project Composer project template.

Terminology

Each subsite has a site directory, which is its subdirectory in sites/. These have a common prefix, which defaults to local-. The part after the prefix is referred to as the site key, so for example with this directory listing:

  • default
  • local-alpha
  • local-beta

the site keys are 'alpha' and 'beta'.

Installation

Install with Composer: composer require joachim-n/automultisites.

Drush command

To create a new subsite with Drush, do:

$ drush multisite:new SITE-KEY

Manual instructions

Without Drush, do the following:

  1. Copy sites/example.sites.php to sites/sites.php if it does not already exist
  2. In sites.php, add the following code:
$sites = []; // Necessary workaround for Drush.
\Automultisites\Sites::addLocalSites($sites, $app_root);
  1. Create a symlink of the Drupal root back to itself:
$ cd web
$ ln -s . local-alpha
  1. Create a new site folder:
$ cd web/sites
$ mkdir local-alpha
  1. Copy settings.php to it:
$ cp web/sites/default/default.settings.php web/sites/local-alpha/settings.php
  1. In the new settings.php file, add the following code:
Automultisites\Settings::configureSiteSettings(
  $app_root,
  $site_path,
  $databases,
  $settings,
  $config
);
  1. To create a Drush site alias, create a file drush/sites/local.site.yml and add the following to it:
alpha:
  root: /path/to/project/web
  uri: localhost.local-alpha