logo

Extra Block Types (EBT) - Nieuwe Layout Builder ervaring❗

Extra Block Types (EBT) - gestileerde, aanpasbare bloktypes: Slideshows, Tabs, Cards, Accordions en vele andere. Ingebouwde instellingen voor achtergrond, DOM Box, javascript-plugins. Ervaar vandaag al de toekomst van layout building.

Demo EBT-modules Download EBT-modules

❗Extra Paragraph Types (EPT) - Nieuwe Paragraphs ervaring

Extra Paragraph Types (EPT) - analoge op paragrafen gebaseerde set modules.

Demo EPT-modules Download EPT-modules

Scroll

Werken met de database in Drupal 7 – les 2 – Databaseconfiguratie

14/10/2025, by Ivan

Het belangrijkste mechanisme om een databaseverbinding te definiëren in Drupal is de array $databases in het bestand settings.php. Zoals de naam al aangeeft, kun je via $databases meerdere databaseverbindingen configureren. Het ondersteunt ook het definiëren van meerdere targets (doelen). Een verbinding wordt pas geopend (de verbinding wordt pas werkelijk aangemaakt) wanneer een stuk code voor het eerst een query naar de database uitvoert.

Verbindingssleutel

Een verbindingssleutel is een unieke identificatie die aan een databaseverbinding wordt gegeven. Deze sleutel moet uniek zijn binnen de site en er moet altijd één standaardsleutel worden ingesteld voor de primaire database. Op de meeste sites is dit slechts één verbinding.

Doel van de verbinding

Elke verbinding moet ten minste één doel (target) hebben. Een doel specificeert welk type databaseverbinding wordt gebruikt wanneer die beschikbaar is. Als een opgegeven doel niet is gedefinieerd, zal Drupal automatisch terugvallen op het standaarddoel, dat altijd aanwezig moet zijn.

Doelen worden vooral gebruikt voor master/slave-replicatie. Standaard verwijst het doel default naar de hoofdserver (de master). Er kunnen daarnaast één of meerdere slave-servers worden opgegeven. Query’s die specifiek als ‘slave’ zijn gemarkeerd, zullen proberen een replica-server te gebruiken indien beschikbaar. Als dat niet lukt, wordt automatisch de master gebruikt.

Syntaxis van $databases

De $databases-array bestaat uit drie niveaus. Het eerste niveau definieert de verbindingssleutel, het tweede het doel (target) en het derde niveau bevat de verbindingsinformatie voor die sleutel/doel-combinatie. Hieronder een voorbeeld:

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'localhost',
);
?>

In dit voorbeeld definieert $databases één verbinding met de sleutel default en het doel default. Deze verbinding gebruikt een MySQL-database drupaldb op de server localhost, met de gebruikersnaam username en het wachtwoord secret. Dit is de standaardconfiguratie voor de meeste Drupal-sites.

Voor een master/slave-configuratie kan het er zo uitzien:

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['default']['slave'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb2',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver2',
);
$databases['default']['slave'][] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb3',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver3',
);
?>

Deze configuratie definieert één default-server en twee slave-servers. Merk op dat slave een array is. Als een doel is gedefinieerd als een array van meerdere verbindingen, kiest Drupal willekeurig één server voor elk paginaverzoek. Dat betekent dat bij het laden van één pagina de query’s zowel via dbserver2 als dbserver3 kunnen verlopen.

<?php
$databases['default']['default'] = array(
  'driver' => 'mysql',
  'database' => 'drupaldb1',
  'username' => 'username',
  'password' => 'secret',
  'host' => 'dbserver1',
);
$databases['extra']['default'] = array(
  'driver' => 'sqlite',
  'database' => 'files/extradb.sqlite',
);
?>

In dit voorbeeld is er één hoofd-Drupal-database en een extra database met de sleutel extra, die SQLite gebruikt. Merk op dat de verbindingsinformatie voor SQLite verschilt van die voor MySQL. Elke database-driver kan zijn eigen configuratie vereisen. Ongeacht hoeveel verbindingen je definieert, Drupal opent pas extra verbindingen zodra ze daadwerkelijk nodig zijn.

Drupal 7 vereist PDO

Vanaf Drupal 7 is de PHP PDO-extensie verplicht. Je moet dus hosting gebruiken met PDO-ondersteuning om Drupal te kunnen draaien, of de PDO-bibliotheek handmatig installeren op je server.