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 die nach 2017 nicht mehr aktualisiert wurden, sind aussortiert)
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 (2018) | Admin-Toolbar | ja |
Administration theme | admin_theme | 6.x-1.3 | 7.x-1.1 (2020) | nicht notwendig | |
Advanced help | advanced_help | 6.x-1.3 | 7.x-1.6 (2020) | 8.x-1.0 (2021) | veraltet |
Authcache | authcache | 6.x-1.0-rc2 | 7.x-2.4 (2021) | - - - | nutzt memcache oder redis |
Conditional fields | conditional_fields | 6.x-2.0 | 7.x-3.x-dev (2016) | 4.x-dev (2022) | vermeiden |
Chaos Tools | ctools | nicht notw., 6.x-1.15 | 7.x-1.20 (2022) | 8.x-3.7 (2021) | ja (für views) |
Date | date | 6.x-2.10 | 7.x-2.12 (2021) | (teils im core) | |
Devel | devel | 6.x-1.28 | 7.x-1.7 (2021) | 4.1.5 (2022) | |
Diff | diff | 6.x-2.3 | 7.x-3.4 (2018) | 8.x-1.0 (2020) | |
FileField Paths | filefield_paths | 6.2-2.x-dev | 7.x-1.1 (2018) | 8.x-1.0-beta5 (2020) | vermeiden, use core file field only? |
IFrame | iframe | 6.x-1.12 | 7.x-1.14 (2021) | 8.x-2.16 (2022) | ja |
jQuery UI | jquery_ui | 6.x-1.5 | - (core) | 8.x-1.4 (2020) | see: jquery_update 7.x-2.7 |
Localization update | l10n_update | 6.x-1.0-beta4 | 7.x-2.6 (2021) | - (in core) | |
Libraries API | libraries | 6.x-1.0 | 7.x-2.5 (2018) | 8.x-3.0-beta2 (2021) | |
Markdown | markdown | 6.x-1.4 | 7.x-1.6 (2020) | 3.0.0-rc2 (2021) | ja |
Memcache | memcache | 6.x-1.12 | 7.x-1.8 (2020) | 8.x-2.3 (2021) | (used with authcache) |
Password Policy | password_policy | 6.x-1.11 | 7.x-2.0-alpha8 (2018) | 8.x-3.1 (2021) | |
Pathauto | pathauto | 6.x-2.1 | 7.x-1.3 (2015) | 8.x-1.10 (2022) | ja |
Print / Print PDF | 6.x-1.19 | 7.x-2.2 (2018) | new printable 2.1.3 | ja | |
Schema (überprüft Schema API) | schema | 6.x-1.7+8-dev | 7.x-1.3 (2017) | 8.x-1.x-dev/2.0.0-alpha1 (2021) | (zeigt deinstallierte tables) |
Token | token | 6.x-1.19 | 7.x-1.9 (2022) | 8.x-1.10 (2021) (basic in core) | ja |
Typogrify | typogrify | 6.x-1.0 | 7.x-1.0-rc10 (2015) | 8.x-1.1 (2020) | ICH will das! |
Views | views | 6.x-2.18 / 6.x-3.2 | 7.x-3.25 (2021) | ist nun im Core | ja, Achtung: in D6 vorher auf Views-3 aktualisieren! |
----- | ----- | ||||
----- | ----- | ||||
----- | NICHT mehr verwendete MODULE | ||||
ACL | acl | 6.x-1.4 | 7.x-1.2 (2019) | 8.x-1.0-beta1 (2021) | |
Advanced Forum | advanced_forum | 6.x-2.0-beta1 | 7.2-2.8 (2019) | 8.x-1.x-dev | ja |
Browscap | browscap | 6.x-2.1 | 7.x-2.3 (2016) | 8.x-3.0-alpha2 | |
Charts | charts | 6.x-1.0 | 7.x-2.1 (2018) | 8.x-3.3 (2021) | |
Content Access | content_access | 6.x-1.2 | 7.x-1.2-beta3 (2020) | 8.x-1.0-alpha3 (2020) | vermeiden |
Edit Limit | edit_limit | 6.x-1.2 | 7.x-1.4 (2021) | 1.0.x-dev (2022) | |
External Link | extlink | 6.x-1.17 | 7.x-1.21 (2020) | 8.x-1.6 (2021) | |
Forum Access | forum_access | 6.x-1.8 | 7.x-1.4 (2019) | 8.x-1.x-dev (2021) | |
Global Redirect | globalredirect | 6.x-1.5 | 7.x-1.6 (2018) | - - - | veraltet |
IMCE | imce | 6.x-2.7 | 7.x-1.11 (2017) | 8.x-2.4 (2021) | |
Internationalization | i18n | 6.x-1.10 | 7.x-1.31 (2021) | - (in core for all) | requires module:variable |
Link | link | 6.x-2.11 | 7.x-1.9 (2021) / in core | in core | |
Linkchecker | linkchecker | 6.x-2.9 | 7.x-1.4 (2018) | 8.x-1.x-dev (2022) | |
Login Security | login_security | 6.x-1.4 | 7.x-1.9 (2014) | (8.x-1.5) 2.0.0 (2019) | |
Password Strength | password_strength | 6.x-2.x-dev | 7.x-1.1 (2018) | 8.x-2.0-beta1 (2021) | oder password_policy |
Quote | quote | 6.x-1.2 | 7.x-2.0 (2021) | 3.0.0 (2022) | |
Redirect | redirect | - - - | 7.x-1.0-rc4 (2021) | 8.x-1.7 (2021) | |
Rules | rules | 6.x-1.5 | 7.x-2.13 (2021) | 8.x-3.0-alpha7 (2021) | |
Shariff | shariff | - | 7.x-1.2 (2016) | 8.x-1.7 (2020) | Projekt von "c't" |
Spamicide | spamicide | 6.x-1.12 (2011) | 7.x-1.3 (2020) | 8.x-1.x-dev (2021) | |
Subscription | subscription | 6.x-1.5 | 7.x-1.4 (2021) | 2.0.x-dev (2022) | |
Wysiwyg | wysiwyg | 6.x-2.8 (2019) | 7.x-2.9 (2022) | - (in core with ckeditor) | (ckeditor, ...) |
XML Sitemap | xmlsitemap | 6.x-2.1 | 7.x-2.6 (2018) | 8.x-1.2 (2021) |
Veraltete Module (<2016)
Module | short name | Version_6.x | Version_7.x | Version_8.x | notwendig? |
---|---|---|---|---|---|
Author Pane | author_pane | 6.x-2.3 | 7.x-2.0 (2014) | 8.x-3.x-dev | |
CCK | cck | 6.x-2.10 | 7.x-3.0-alpha3 (2013) | - (in core) | ja (aber teils durch core-Field lösbar) |
Comment RSS | commentrss | 6.x-2.3 | 7.x-2.5 (2015) | 8.x-1.x-dev | |
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 (2016) | - | |
E-Mail field | 6.x-1.4 | 7.x-1.3 (2014) | - (core) | ||
FileField | filefield | 6.x-3.14 | core | - (in core) | migrate = content_migrate |
ImageAPI | imageapi | 6.x-1.10 | core | - (in core) | (evtl module:imagemagick) |
ImageCache | imagecache | 6.x-2.0-rc1 | core | - (in core) | |
ImageField | imagefield | 6.x-3.11 | core | - (in core) | |
jQuery Multi | jqmulti | 6.x-1.0 | 7.x-1.0 (2013) | - - - | veraltet |
jQuery Update | jquery_update | 6.x-3.0 | 7.x-2.7 (2015) | - - - | |
Language icons | languageicons | 6.x-2.1 | 7.x-1.1 (2014) | 8.x-1.0-beta3 (2021) | |
Language Sections | language_sections | 6.x-2.5 | 7.x-2.6 (2011) | - | veraltet |
Module Grants | module_grants | 6.x-3.9 | 7.x-1.x-dev (2013) | - - - | veraltet |
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) | 7.x-1.x-dev (2012) | - | veraltet |
OpenID Provider | openid_provider | 6.x-1.0 | 7.x-1.0 (2012) (oauth2_server 7.x-1.7) | new OAuth2 Server oauth2_server 8.x-1.0-beta4 | |
Path redirect | path_redirect | 6.x-1.0-rc2 (2013) | - | - | veraltet, new module: [redirect]((https://www.drupal.org/project/redirect) |
Private Message | privatemsg | 6.x-1.5 | 7.x-1.4 (2013) | - | |
Revisioning (Versionierung) | revisioning | 6.x-3.16 | 7.x-1.9 (2014) | - - - | (braucht module_grants) |
Search ranking | search_ranking | 6.x-1.4 (2008) | - | - | veraltet |
Share This | sharethis | 6.x-1.8+2-dev | 7.x-2.13 (2016) | 8.x-2.0-beta5 (2020) | besser ersetzen durch shariff |
Site map | site_map | 6.x-2.2 | 7.x-1.3 (2015) | sitemap sitemap-8.x-1.5 | |
Statistics advanced settings | statistics_advanced | 6.x-1.5 (2009) | - | - | veraltet |
Statistics Pro | statspro | 6.x-2.3 | 7.x-1.0 (2013) | - | veraltet |
Switchtheme | switchtheme | 6.x-1.1 | 7.x-1.0 (2011) | patch 1601192 | veraltet |
Taxonomy breadcrumb | taxonomy_breadcrumb | 6.x-1.1 (2010) | 7.x-1.x-dev (2013) | 8.x-1.1 | veraltet, nimm neues Entity-System |
Transliteration | transliteration | 6.x-3.1 | 7.x-3.2 (2014) | - (in core) | |
Trick Questions | trick_question | 6.x-1.5 | 7.x-1.5 (2014) | - | |
Views Groupby | views_groupby | 6.x-1.0-rc2 (2009) | - - - | - - - | veraltet |
Tabelle Stand: 2022-04-29
Ohne Zusatzmodule würde ich direkt zu Drupal 8 wechseln. Die Modulunterstützung wird immer besser (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:
- keine Tabellen außerhalb (mit prefix) sondern alle direkt in der DB;
- unnötige Module abschalten.
- 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:
- ckeditor unter sites/all/libraries/ckeditor ablegen, und Pfade unter "CK->Globale EInstellungen" anpassen auf "%l/ckeditor"
- 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)
- 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)
- Wenn html im Profil Feld steht, dann wird es auch angezeigt, soweit gut
- 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.