Configuration management in #Drupal || Overriding Features || Part 1

25 Oct 2011

Joris Snoek - Business Dev
+31 (0)20 - 261 14 99

Het werken met Features binnen Drupal; daar kunnen wij niet meer zonder.
Het vangt een groot probleem in Drupal configuration management af. Bondig gezegd: zet je leading configuratie úit de database; in code.

Tevens kan een Feature als één geheel een use case implementeren, in tegenstelling tot een module, welk meestal een bouwsteen is voor een use case.

Er zijn signalen dat Drupal 8 dit configuration management probleem in de core op gaat lossen:
http://groups.drupal.org/taxonomy/term/8971
http://drupal.org/node/489528
http://chicago2011.drupal.org/coreconv/configuration-management-drupal-8
http://groups.drupal.org/node/155559

Drupal producten als Managing News en Open Atrium leunen hevig op de features module.
OpenLucius hebben we gebouwd op Open Atrium.

Grootste voordelen van gebruik Features in Drupal:

  • Configuratie management is in versiebeheer te plaatsen
  • Het staging via een OTAP omgeving is consistent mogelijk
  • Je verkleint de kans enorm op terugkomende fouten na een sprint oplevering enorm

Overriden van door een Feature gedefiniëerde instelling

Wanneer je een reeds geproduceerd Feature installeert, komt deze vaak met vooraf gedefinieerd Content types, variabelen, context, views, etc.
Om die instellingen te wijzigen is er de mogelijkheid bijna alle instellingen die meekomen met de Feature te 'overriden': naar je hand te zetten.

Overriden houdt simpel gezegd in: aanpassen naar eigen smaak, zonder dat je de standaard code die meekomt in de Feature hiervoor hoeft aan te tasten (hacken).

Part 1: overriden van een variabele die door een Feature is gedefinieerd

Variabelen worden met behulp de Strongarm module naar code geëxeporteerd. Om deze te overriden kan je volgende voorbeeld code gebruiken.

/*** Implementation of hook_strongarm_alter()* */function MYMODULE_strongarm_alter(&) {     //Strongarm alter, I want another date formats then some feature defines.    if (isset(['date_format_long'])) {      ['date_format_long']->value = 'l, j F, Y - H:i';    }}

Vragen of aanvullingen?

Let me know!

Comments

Nóg meer
kennis nodig?

Check ons ons blog archief >