You are here

Migration Drupal-6 nach Drupal-7

Ich betreibe mittlerweile einige Drupal-Installationen, wovon die meisten noch mit Drupal-6 laufen.

Für ein Upgrade steht nun Drupal-7 und Drupal-8 zur Verfügung und es gibt sowohl von 6-nach-7, als auch für 6-nach-8 einen Migrationsweg.

(Für Drupal 6 / Drupal 7 nach 8 Migration )

1. Vor einem Upgrade sind nun die Verfügbarkeit von zusätzlich genutzten Modulen zu prüfen.

Module short name Version 6.x Version 7.x Version 8.x notwendig?
Administration menu admin_menu 6.x-1.9 7.x-3.0-rc6 Admin-Toolbar ja
Administration theme admin_theme 6.x-1.3 7.x-1.0 nicht notwendig veraltet
Advanced help advanced_help 6.x-1.3 7.x-1.3 8.x-1.x-dev veraltet
Authcache authcache 6.x-1.0-rc2 7.x-2.2 - - - nutzt memcache oder redis
CCK cck 6.x-2.10 7.x-3.0-alpha3 - (in core) ja (aber teils durch core-Field lösbar)
Conditional fields conditional_fields 6.x-2.0+12-dev 7.x-3.x-dev 8.x-1.x-dev vermeiden
Content Access content_access 6.x-1.2 7.x-1.2-beta2 8.x-1.0-alpha1 vermeiden
Content Profile content_profile 6.x-1.0 - - - - - - see Content Profile Converter
Content Taxonomy content_taxonomy 6.x-1.0-rc2 7.x-1.0-rc1 -
Chaos Tools ctools nicht notw., 6.x-1.15 7.x-1.15 8.x-3.0 ja (für views)
Date date 6.x-2.10 7.x-2.10 (teils im core)
Devel devel 6.x-1.28 7.x-1.5 8.x-1.x-dev
Diff diff 6.x-2.3 7.x-3.3 8.x-1.0-rc1
E-Mail field email 6.x-1.4 7.x-1.3 - (core)
FileField filefield 6.x-3.14 core - (in core) migrate = content_migrate
FileField Paths filefield_paths 6.2-2.x-dev 7.x-1.0 8.x-1.0-beta1 vermeiden, use core file field only?
ImageAPI imageapi 6.x-1.10 core - (in core) (evtl module:imagemagick)
ImageCache imagecache 6.x-2.0-rc1 core - (in core) ja
ImageField imagefield 6.x-3.11 core - (in core) ja
jQuery Multi jqmulti 6.x-1.0 7.x-1.0 - - - veraltet
jQuery UI jquery_ui 6.x-1.5 - (core) - (core) see: jquery_update 7.x-2.7
jQuery Update jquery_update 6.x-3.0 7.x-2.7 - - -
Localization update l10n_update 6.x-1.0-beta3 7.x-2.2 - (in core)
Libraries API libraries 6.x-1.0 7.x-2.3 8.x-3.x-dev
Memcache memcache 6.x-1.12 7.x-1.6 8.x-2.0-alpha5 (used with authcache)
Module Grants module_grants 6.x-3.9 - - - - - - veraltet
Password Policy password_policy 6.x-1.11 7.x-2.0-alpha7 8.x-3.0-alpha4
Pathauto pathauto 6.x-1.6 7.x-1.3 8.x-1.0 ja
Print / Print PDF print 6.x-1.19 7.x-2.1 new printable 8.x-1.x-dev ja
Private Message privatemsg 6.x-1.5 7.x-1.4 -
Revisioning (Versionierung) [revisioning](https://www.drupal.org/project/revisioning 6.x-3.16 7.x-1.9 - - - ja (braucht module_grants)
Rules rules 6.x-1.5 7.x-2.10 8.x-3.0-alpha3
Schema (überprüft Schema API) schema 6.x-1.7+8-dev 7.x-1.3 8.x-1.x-dev (zeigt deinstallierte tables)
Switchtheme switchtheme 6.x-1.1 7.x-1.0 (2011) “patch”:https://www.drupal.org/node/1601192#comment-9533359 veraltet
Token token 6.x-1.19 7.x-1.7 8.x-1.0 (basic in core) ja
Transliteration transliteration 6.x-3.1 7.x-3.2 - (in core)
Views views 6.x-2.18 / 6.x-3.2 7.x-3.18 ist nun im Core ja, Achtung: in D6 vorher auf Views-3 aktualisieren!
Views Groupby views_groupby 6.x-1.0-rc2 - - - - - - veraltet
–— –—
–— –—
–— NICHT mehr verwendete MODULE
Browscap browscap 6.x-2.1 7.x-2.3 8.x-3.x-dev
Charts charts 6.x-1.0 7.x-2.0-rc1 8.x-3.0-alpha6
Global Redirect globalredirect 6.x-1.5 7.x-1.5 8.x-1.x-dev
IFrame iframe 6.x-1.12 7.x-1.8 8.x-1.7 ja
Internationalization i18n 6.x-1.10 7.x-1.18 - (in core for all) ja, requires module:variable
Language icons languageicons 6.x-2.1 7.x-1.1 8.x-1.0-beta1
Language Sections language_sections 6.x-2.5 7.x-2.6 - veraltet
Markdown markdown 6.x-1.4 7.x-1.5 8.x-1.3 ja
Nodewords nodewords 6.x-1.14 new module metatag 7.x-1.22 8.x-1.3 upgrade-path
One page profile onepageprofile 6.x-1.13 (2011) - - veraltet
OpenID Provider openid_provider 6.x-1.0 7.x-1.0 (oauth2_server 7.x-1.7) new OAuth2 Server oauth2_server 8.x-1.0-beta1
Path redirect path_redirect 6.x-1.0-rc2 (2013) - - veraltet, new module: [redirect]((https://www.drupal.org/project/redirect)
Redirect redirect - - - 7.x-1.0-rc3 8.x-1.4
Search ranking search_ranking 6.x-1.4 (2008) - - veraltet
Site map site_map 6.x-2.2 7.x-1.3 sitemap sitemap-8.x-1.3
Statistics advanced settings statistics_advanced 6.x-1.5 (2009) - - veraltet
Statistics Pro statspro 6.x-2.3 7.x-1.0 - veraltet
Taxonomy breadcrumb taxonomy_breadcrumb 6.x-1.1 (2010) 7.x-1.x-dev (2013) 8.x-1.0-alpha2 veraltet, nimm neues Entity-System
Typogrify typogrify 6.x-1.0 7.x-1.0-rc10 8.x-1.0-alpha1 ICH will das!
Wysiwyg wysiwyg 6.x-2.4 7.x-2.4 - (in core with ckeditor) (ckeditor, …)
–— –—
ACL acl 6.x-1.4 7.x-1.1 8.x-1.0-alpha1
Advanced Forum advanced_forum 6.x-2.0-beta1 7.2-2.6 8.x-1.x-dev ja
Author Pane author_pane 6.x-2.3 7.x-2.0 8.x-3.x-dev ja
Comment RSS commentrss 6.x-2.3 7.x-2.5 8.x-1.x-dev ja
Edit Limit edit_limit 6.x-1.2 7.x-1.3 - veraltet
External Link extlink 6.x-1.17 7.x-1.18 8.x-1.0
Forum Access forum_access 6.x-1.8 7.x-1.3 8.x-1.x-dev
IMCE imce 6.x-2.7 7.x-1.11 8.x-1.6
Link link 6.x-2.11 7.x-1.4 / in core in core
Linkchecker linkchecker 6.x-2.9 7.x-1.3 8.x-1.x-dev
Login Security login_security 6.x-1.4 7.x-1.9 8.x-1.3
Password Strength password_strength 6.x-2.x-dev 7.x-1.0 8.x-2.0-alpha2 oder password_policy
Quote quote 6.x-1.2 7.x-1.1-beta3 -
Share This sharethis 6.x-1.8+2-dev 7.x-2.13 8.x-2.0-beta3 besser ersetzen durch shariff
Shariff shariff - 7.x-1.2 8.x-1.2 Projekt von “c’t”
Spamicide spamicide 6.x-1.12 (2011) 7.x-1.2 8.x-1.x-dev
Subscription subscription 6.x-1.5 7.x-1.3 -
Trick Questions trick_question 6.x-1.5 7.x-1.5 -
XML Sitemap xmlsitemap 6.x-1.2 7.x-2.3 8.x-1.0-alpha2
Stand 2018-01-23

Ohne Zusatzmodule würde ich direkt zu Drupal 8 wechseln. Die Modulunterstützung ist dort aber noch zu gering (die API hat sich im zu 6-nach-7 nun wieder geändert, da kommt man als Modul-Entwickler kaum hinterher)

Aber auch für Drupal 7 werde ich auf einige Module verzichten müssen:

  • “Nodewords” werde ich durch “Metatag” ersetzen, auch wenn es derzeit nur für die Startseite benutzt wird und die Verwendung von meta-description und meta-keywords nicht mehr so relevant wie früher ist.
  • Alle bisherigen Redirect Module ersetzen durch “Redirect”, zum individuellen erstellen von zusätzlichen Kurz-URLs
  • Verzichten auf: onepageprofile, path_redirect, search_ranking, statistics_advanced (wurde eh nie voll genutzt), statspro, taxonomy_breadcrumb

2. Test-Migration - Nebenwirkungen

In der Anleitung zum Upgrade Drupal-6 to Drupal-7 wird empfohlen, vor einem Upgrade alle contrib-Module zu deaktivieren, zuerst den Core zu aktualisieren und erst dann die Module der Reihe nach wieder zu aktivieren.

1) Ergebnis: Die Inhalte waren da, aber die Inhalte wurde falsch angezeigt. Module “language_sections”, “typogrify” aktivieren brachte leider auch nicht den alten Zustand. Er hatte alle Eingabeformate vergessen.

2) Views Modul braucht in Drupal 7 das CTools” Modul, leider benutzt das Views Modul einfach eine ctools Funktion ohne die Abhängigkeiten richtig zu deklarieren.
Empfehlung: Alle Module die es gibt gleich aktiviert lassen, um die Einstellungen (Konfiguration) nicht zu verlieren. Alle alten/veralteten/abzuschaltenden Module vorher deaktivieren. UND bereits in Drupal 6 das “ctools” Modul aktivieren (erspart einem von Hand im php-Code das Modul temporär per Hand zu requiren.)

Ebenfalls musste ich erkennen, dass ich selber mit meinem Modul Iframe -zwar mit Drupal-7 kompatibel bin (dort benutze ich nicht mehr CCK, sondern das core Field Modul) allerdings fehlt noch eine cck-Migration des bisherigen Felder-. (2017: Migration gibt es mittlerweile auch)

Überlegung Drupal-8: Hauptpunkt der fehlt ist die Migration von Views (2.x) aus Drupal6/7 nach Drupal 8, obwohl Views in Drupal-8 nun ein internes Modul ist. (Es existiert ein migrate-Update-Pfad von Views 6.x-3.x nach Drupal-8, man muss also erst in 6 die Version hochziehen ( [Pager Issue 1090098]:https://www.drupal.org/node/1090098 )

3) Migration der ehemaligen CCK-Felder

  • Bilder konnten als Einzel, als auch als Mehrfach-Bilder migriert werden. Da “imagecache” nun im Core ist, muss man die Darstellung der Bilder nun einzeln via “Manage Fields” in jedem einzelnen Inhaltstyp separat einstellen.
  • Feld “Text2” hat er als CCK-Migrate nicht korrekt erkannt, er wollte es zu einem IFrame machen anstatt zu einem Textfeld.
  • Ohne Für-Tun ist zumindest das Feld Iframe-URL (als Hauptbestandteil) erhalten geblieben.

Upgrade 6 nach 7

Mit “drush” geht es leider derzeit nicht mehr (mit drush6 soll es noch gegangen sein).

Hier empfehle ich:

  • die Datenbank in drupal6 bereinigen:
    1. keine Tabellen außerhalb (mit prefix) sondern alle direkt in der DB;
    2. unnötige Module abschalten.
    3. drupal6 und alle Module auf dem aktuellsten Stand
  • dann die ganze Datenbank-6 in eine Datenbank-7 zu kopieren
  • in drupal7 die settings passend zur neuen Datenbank7 einzustellen
  • dann ein oder mehrmahls http://site/update.php aufrufen (evtl dazu zum Upgrade in der settings.php einstellen: $update_free_access = TRUE;
drush_d7 dl admin_menu cck ctools iframe languageicons language_sections redirect token views markdown
drush_d7 en language_sections iframe variable content_migrate cck admin_menu ctools markdown languageicons views views_ui token redirect file image
drush_d7 updatedb
  • Dann die “Content → Text filter” nacheditieren, um Markdown u LanguageIcons wieder zu aktivieren
  • /admin/structure/content_migrate Migration der bisherigen CCK-Felder als neue “fields”

Angekommen bei Drupal7 - Probleme und Lösungen

CKEditor lief nicht mehr. Früher sagte man welche Felder den CKEditor zeigen sollten und welche nicht. Jetzt geht er rein auf das Eingabeformat los.

  • Alle Einstellungen waren weg:
    1. ckeditor unter sites/all/libraries/ckeditor ablegen, und Pfade unter “CK→Globale EInstellungen” anpassen auf “%l/ckeditor”
    2. CKEditor ist nun modular: alle Plugins müssen einzeln im Ordner libraries/ckeditor/plugins landen (Download unter: [ckeditor.com/addons/plugins/all](http://ckeditor.com/addons/plugins/all)
    3. Wichtige Plugins ohne die die Buttons zwar da sind aber keine Funktionalität: clipboard, colorbutton, find, font, indent, indentblock, indentlist, justify, pastefromword, selectall
  • Benutzer-Profil-Felder mit Textarea hatten jetzt keinen CKEditor mehr, da dort gar kein Eingabeformat pflegbar ist (Profile fields)
    1. Wenn html im Profil Feld steht, dann wird es auch angezeigt, soweit gut
    2. Um aber auch dem Nutzer die Möglichkeit zu geben mit CKEditor die Felder zu pflegen war ein kleines eigenes Modul nötig, dass die entsprechende hook-Funktion benutzt um das Formular vorab entsprechend zu präparieren:
      function sts_form_alter(&$form, &$form_state, $form_id) {
          switch($form_id) {
              case 'user_profile_form' :
                  $account = $form['#user'];
                  if (isset($form['Persönliches'])) {  # bei uns nur die Felder aus dem Tab "Persönliches"
                      #drupal_set_message(print_r($form['#user'], TRUE), "info");
                      foreach($form['Persönliches'] as $pkey => $pval) {
                          if (preg_match('#^profile_#', $pkey) && $pval['#type'] == 'textarea') {
                              $form['Persönliches'][$pkey]['#base_type'] = 'textarea';
                              $form['Persönliches'][$pkey]['#type'] = 'text_format';
                              $form['Persönliches'][$pkey]['#format'] = filter_default_format($account);
                              $form['Persönliches'][$pkey]['#wysiwyg'] = TRUE;
                              ckeditor_element_info_alter($form['Persönliches'][$pkey]);
                          }
                      }
                  }
                  break;
              case 'forum_node_form' :
                  # hier sollte im EDIT-Modus das Body-Feld nicht nur 20 Zeilen (default) zeigen, sondern mehr
                  $form['body']['und'][0]['#rows'] = 60;
                  break;
              default:
                  #drupal_set_message($form_id, "info");
                  break;
          }
      }

Social Media sharethis Modul liess sich nicht mehr administrieren und Layout war auch verwürfelt

  • Nach einigen Versuchen via CSS und Variablen-Hacking direkt im Javascript vom Modul und in der Datenbank, wurde das Modul nun ersetzt durch das Module [shariff](https://www.drupal.org/project/shariff) - die dazugehörige Library von [c’t Heise – Shariff](http://ct.de/-2467514) packen wir wieder unter libraries! git clone https://github.com/heiseonline/shariff.git sites/all/libraries/shariff
  • Pinterest Button kann so leider nicht angeboten werden da die sharer-Url von Pinterest eine pinterest-Seite mit https öffnet, um dort die Bilder der eigenen Seite anzuzeigen. Moderne Browser lehnen dann aber Bilder von http-Seiten ab. Alternative, man muss sich auch noch jährlich ein SSL-Zertifikat besorgen.
Bereich: