Alles wat je moet weten over een Drupal multisite

Wat is een multisite, waarom heb je er een nodig en waarom is Drupal gecombineerd met de Domain Access module de beste oplossing?
Robert Roose
Door Robert Roose

Alles wat je moet weten over een Drupal multisite

Wat is een multisite?

Wanneer ik het heb over een multisite dan bedoel ik een website die bestaat uit één enkele codebase en database, maar met de functionaliteit om vanuit daar meerdere (virtuele) websites te creëren. Een bezoeker kan deze verschillende sites bezoeken door naar verschillende domeinnamen (of sub domeinen) te navigeren. In realiteit delen deze websites echter dezelfde broncode en database.

Een voorbeeld kan een organisatie zijn die een corporate website heeft maar ook een aparte weken bij website. Beide websites hebben dan een eigen domeinnaam, en als het nodig is ook een eigen look en feel.

Multisite vs multidomain 

Wanneer je meerdere websites wil creëren vanuit dezelfde codebase met Drupal heb je twee opties:

  1. Traditionele mulitsite functionaliteit. Hier wordt de code (bestanden voor de core, modules en thema's) gedeeld, maar heeft elke site een eigen database. Een traditionele multisite functionaliteit kan nuttig zijn wanneer de verschillende websites op cruciale punten erg veel van elkaar verschillen.
  2. Meerdere websites met de Domain Access module. Met de Domain Access module is het mogelijk om meerdere domeinen binnen een Drupal website te maken. Elk domein kan benaderd worden via een eigen URL. In dit geval wordt naast de codebase, ook de database gedeeld. Wanneer de database gedeeld wordt is het ook mogelijk om content en gebruikers te delen tussen de verschillende domeinen. Ook kunnen alle domeinen profiteren van nieuw aangemaakte functionaliteit, zoals overzichten met Views of paragraaf types met Paragraphs

Mijn voorkeur gaat uit naar de tweede optie omdat het delen van content, gebruikers en verbeteringen aan de website in mijn ogen de dingen zijn die een multisite oplossing zo handig maken.

Als je meer wil weten over de verschillen tussen deze twee opties check dan deze multisite vs multidomain vergelijking.

Wanneer is een multisite oplossing handig?

Als het jouw taak is om meerdere websites bij te houden die min of meer dezelfde functionaliteit hebben, dan is een multisite de perfecte oplossing.

De voordelen zijn:

  • Verlagen van de kosten. Je hoeft slechts één codebase te onderhouden. Het updaten of fiksen van bug in een multisite omgeving wordt automatisch toegepast op alle websites.
  • Het is gemakkelijk om content, media en gebruikers te delen binnen de verschillende websites.
  • Verbeteringen of nieuwe functionaliteit zijn voor alle sites direct beschikbaar.

Een nadeel is dat wanneer een website een bug heeft, dit hoogstwaarschijnlijk het geval is voor alle sites. En omdat de database gedeeld wordt betekent het dat als er één site gehackt wordt, alle sites gehackt zijn. Dat is waarom het extra belangrijk is om de (Drupal) code altijd bij te werken wanneer er een veiligheidsupdate uitkomt.

Hoe werkt een Drupal multisite?

Voor nu wordt dit geen tutorial die je stap voor stap vertelt hoe je een Drupal multisite moet maken. Ik zal globaal vertellen welke stappen je moet nemen om zo inzicht te geven hoe het in zijn werk gaat.

  1. Installeer de Domain Access module.
  2. Creëer een of meerdere domain records.
  3. Elk domein kan een eigen domain naam (of URL) krijgen. De corporate website kan bijvoorbeeld benaderd worden via www.bedrijf.nl terwijl de specifieke vacatures website bezocht kan worden op www.werkenbijbedrijf.nl. Maar het is ook mogelijk om een sub domein te gebruiken zoals werkenbij.bedrijf.nl.
  4. Als volgt kun je content (nodes) en gebruikers aanmaken en deze toekennen aan één of meerdere domeinen. 

Een voorbeeld van hoe de multisite functionaliteit van Drupal werkt

Laten we een voorbeeld nemen van een situatie die kan ontstaan bij een corporate en werken bij website. Beide websites hebben een overzichtspagina met het laatste nieuws nodig. Om dit voor elkaar te krijgen met Drupal en Domain Access neem je de volgende stappen:

  1. Je maakt een 'Nieuws' pagina en kent deze toe aan beide domeinen.
  2. Daarna maak je een menu item aan naar deze pagina. Omdat de 'Nieuws' pagina aan beide domeinen is toegekend zal het menu item op beide domeinen zichtbaar zijn.
  3. Maak een overzichtsblok met de Views functionaliteit waar de nodes worden gefilterd op het type 'Nieuws' en het actieve domein.
  4. Maak dit blok zichtbaar op de 'Nieuws' pagina die je hebt aangemaakt in stap 1.
  5. Creëer enkele nieuwsitem en ken deze toe aan de corporate en werken bij websites.

Op basis van het domein dat bekeken wordt laat de 'Nieuws' pagina alleen items zien die toegekend zijn aan dat domein. Op deze manier kun je de functionaliteit van een nieuwsoverzicht delen tussen verschillende domeinen (of websites). Je hoeft dit overzicht slechts één keer te maken. In dit voorbeeld is het overigens ook mogelijk om een nieuwsitem aan beide domeinen toe te kennen. Dit zorgt ervoor dat het nieuwtje op het nieuwsoverzicht van beide domeinen zichtbaar zal zijn.

Zoals je ziet kan het maken van een multisite met Drupal en Domain Access je flink wat tijd besparen.

Een Drupal thema hergebruiken voor meerdere sites

Een andere handige bijkomstigheid van een multisite op basis van Drupal en Domain Access is dat je een Drupal thema kan hergebruiken. Dit betekent dat je hetzelfde thema voor zowel de corporate als de werken bij website kan gebruiken. Beide websites pikken dan de vruchten van de verbeteringen die je maakt aan jouw Drupal thema.

Het is echter ook mogelijk om per domein een ander thema te gebruiken. Maar het is nog beter om een sub thema te maken. Stel dat je voor de header op de corporate website een rode achtergrond moet hebben, maar de header van de werken bij website moet blauw zijn. In dat geval kun je een sub thema maken voor de werken bij website en hoef je alleen de CSS regel te overschrijven die de achtergrondkleur van de header bepaalt. Wanneer je dan een aanpassing maakt aan het hoofdthema, zal deze ook zichtbaar zijn op de sub thema's behalve voor de CSS regels die expliciet zijn overschreven. Dit geeft je het voordeel dat je slecht één thema hoeft te onderhouden, maar ook de vrijheid om de look en feel te wijzigen voor andere domeinen.

Het grote nadeel van een multsite met Drupal

Aan het kiezen voor een multisite oplossing met Drupal en Domain Acces kleeft één groot nadeel. En dat is de compatibiliteit van modules. In sommige gevallen wil je een bepaalde functionaliteit delen tussen websites, maar moet er voor de verschillende sites specifieke waarden worden ingevuld per domein. Als een module niet samenwerkt met Domain Access dan zal dit niet mogelijk zijn. De waarden zoals deze zijn ingevuld in de configuratie van de module zijn dan voor alle domeinen hetzelfde.

Een probleem waar ik zelf tegenaan liep was het maken van een XML sitemap per domein.

Een XML sitemap is een XML document met link naar alle pagina's (of nodes) binnen jouw website. De URL van deze XML sitemap kan doorgestuurd worden naar zoekmachines. Deze krijgen dan een bericht wanneer er een nieuwe link in de XML sitemap wordt toegevoegd. Hierdoor is het voor zoekmachines makkelijk om jouw website te indexeren en worden jouw pagina's sneller getoond in de zoekresultaten.

Er zijn momenteel twee verschillende modules beschikbaar waarmee je een XML sitemap kan maken voor je Drupal website. Maar beide modules heb ik niet werkend gekregen zoals ik dat wilde. Uiteindelijk heb ik een RSS Feed gemaakt die de inhoud filtert per domein. Deze RSS Feeds worden namelijk ook geaccepteerd door services zoals Google Search Console.

Bespaar tijd en geld met Drupal en Domain Access

Een multisite oplossing met Drupal en Domain Access heeft veel voordelen. Je kan gemakkelijk nieuwe websites aanmaken en content en gebruikers delen met de verschillende domeinen onderling. Je hoeft slechts één Drupal installatie up-to-date houden. Wat ook meteen een punt van aandacht is omdat alle websites even kwetsbaar zijn. Het is ook mogelijk om functionaliteit te delen, wat tijd bespaart omdat je deze niet telkens opnieuw hoeft na te maken. Het grootste nadeel is de compatibiliteit van modules. Deze forceren je in sommige gevallen om naar creatieve oplossingen te zoeken om de gewenste functionaliteit te realiseren.

Heb je vragen over het bouwen van een multisite met Drupal? Laat het mij weten door hieronder een reactie achter te laten.

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Beperkte HTML

  • Toegelaten HTML-tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Regels en alinea's worden automatisch gesplitst.