Drupal

Drupal ist ein Open Source Content Management System (CMS). Seit 2007, als die Version 4.7 von Drupal aktuell war, arbeite ich jetzt hauptsächlich mit diesem CMS und die Software, sowie auch die Community darum ist einen langen Weg gegangen.

Mehr Artikel über Drupal

In der YAML-Datei, die die Konfiguration für Layouts bereitstellt, gibt es eine coole Funktion für die Vorschau des Layouts. Das ganz nennt sich Icon Map und funktioniert ganz wunderbar.

Manchmal kommen wir bei Migrationen an Daten, die keine ein-eindeutige Id haben. Vielleicht ist das Glück aber wohlgesonnen und es gibt zwei oder mehr Felder, die eine Eindeutigkeit herstellen. Das kann mit der Migrate API genutzt werden. Hier am Beispiel einer CSV Datei.:

source:
  plugin: csv
  path: 'public://file-location.csv'
  delimiter: '|'
  header_row_count: 1
  ids: [id1,id2,id3]

Die ids(1,2,3) können verschiedene Typen haben und werden als String kombiniert ohne dass man sich darum sorgen müsste.

Im Web gilt ja grundsätzlich das Einmal klicken Gesetz, was aber von vielen Benutzern gerne ignoriert wird und es wird mindestens doppelt, wenn nicht manisch auf den Submit Button geklickt, was bei vielen Anwendungen zu unerwünschten Folgen führt.

Drupal bietet im Core schon eine JS basierte Funktionalität, die das verhindert und die kann in jedes Frontend über die libraries.yml eingebunden werden.

Um die Abhängigkeiten in Drupal abbilden zu können benutzen wir Composer. Das ist auch klasse, wenn jedes Modul ein Release hat, das einfach so installiert werden kann. Doch oft genug kommt es vor, dass man doch auf ein dev Release zurückgreifen muss und wenn man dann einfach ein

Bei einem Auftrag hatte ich mit Commerce Produkten zu tun, die von einer Drupalseite zur anderen migriert werden mussten. Die Produkttypen waren nur in Details unterschiedlich und die Quelle bestand aus einer Liste mit einem Mix der Typen. Anfangs dachte ich noch, dass ich hier verschiedene Migrationen oder auch ein eigenes Plugin schreiben müsste. Zum Glück aber macht die Migrate API ein "loose coupling" und ignoriert fehlende Felder im Ziel einfach. So konnte ich eine Migration für alle Typen schreiben, die trotzdem funktionierte. Danke, Migrate API!