By Alvin Alexander. Last updated: March 29, 2018
Today is a day off for me, so I don’t want to take much time here, but ... these are my latest notes on how to upgrade/migrate a Drupal 6 website to Drupal 8:
TO-DO: Remaining Problems ------------------------- * i had these as "To-Do" items, but just got them fixed on May 22, 2016 * need to port meta-description fields from D6 to D8 * install Metatag module (done) * write SQL to port meta-description and maybe meta-keywords (done) * D8 emits some dumb <link> fields in the <head> that are bad for SEO (they create 403 errors). this project aims to get rid of those, but it has bugs: https://github.com/enjoyiacm/unset_html_head_link * get this module working with D8.1.1 (done) Drupal 8.1.1 Installation ------------------------- * do a "Standard" installation * delete the "Tags" vocabulary: admin/structure/taxonomy * it does not matter if you delete "Full HTML", it's messed up anyway Now perform the migration ------------------------- * do the migration as usual * see http://alvinalexander.com/drupal/how-to-upgrade-drupal-6-website-to-drupal-8 Do these things after the migration ----------------------------------- * copy '/images' dir from the D6 installation * disable/delete "Full HTML" (full_html) (admin/config/content/formats) * disable/delete "Full HTML" (full_html1) (admin/config/content/formats) * create "Full HTML D8" text format (admin/config/content/formats) * machine name = full_html_d8 * admin, editor * ckeditor * track images, align images, correct faulty html * note: this machine name will be found in: * node__body * node_revision__body * (cache, config, and key_value tables — these don't matter) * queries to fix "Full HTML D8" format for all nodes: * UPDATE `node__body` set body_format='full_html_d8' * UPDATE `node_revision__body` set body_format='full_html_d8' * drush cr * D6 Blog nodes should now display properly * Edit Blog should show the "Full HTML D8" type * create the "Photo D8" content type * note: do this before 'langcode' fixes, because they run against this table * create a "PhotoD8" content type, as described on this page (a few paragraphs below this point): http://alvinalexander.com/drupal/how-to-migrate-drupal-6-photos-content-type-drupal-8#toc_5 * UPDATE node__field_photo SET langcode='en' * run MigrateAllD6Photos.php * this script is on Github: https://github.com/alvinj/UpdatePhotoContentTypeToDrupal8 * note: the correct output looks like this: nid: 7545, vid: 7735, lang: en, fip: 2218 nid: 7548, vid: 7738, lang: en, fip: 2219 Please flush all caches (drush cr) * i forgot to add tags here, so: * go to 'admin/structure/types/manage/photod8/fields' * click 'Add field' * Under 'Re-use an existing field': * select 'Entity reference: tags' (i don't know what 'field_tags' are) * set 'Label' to 'Tags' (it should default to that) * i think there are more things on a subsequent screen, but i forgot to note those. i'm pretty sure i just went with the default values. * good time to make db backup * fix all the 'langcode' problems * see http://alvinalexander.com/drupal/how-to-upgrade-drupal-6-website-to-drupal-8 * run the queries in 1-FixAllLangcodes.sql * drush cr * all Blog nodes and Photo nodes should display properly now * good time to make db backup * uninstall the "Migrate" modules at 'admin/modules/uninstall' * drop all "migrate" tables * note: i haven't been uninstalling the Migrate modules, so i created this technique to remove all of the 'migrate*' database tables. if those tables are gone after you uninstall the Migrate modules, this step is not needed. * get the temporary 'migrate' table names using a technique like this: http://alvinalexander.com/mysql/how-to-list-mysql-table-column-field-names-without-table-formatting-headers * update 2-DropAllMigrateTables.sql with those table names * run the queries in 2-DropAllMigrateTables.sql * verify all migrate_map_* and migrate_message_* tables are gone * drush cr * good time to make db backup * go to this URI and re-order the display fields, they have poor defaults * admin/structure/types/manage/blog/display * my preferred order is Body, Category, Tags, Comments. don't show Links or Upload. * note: all Blog nodes and Photo nodes should still be working Install other needed modules ---------------------------- * TOC: https://www.drupal.org/project/toc_api * TOC: https://www.drupal.org/project/toc_filter * Similar by Terms: https://www.drupal.org/project/similarterms "Front Page 1" View ------------------- - content shows up TODO: photos/images do not show up - create a View and make it the front page - D6 front page view - style: unformatted - settings: - set "Row class" to: content-type-{{ type }} - enable "Add views row classes" - row style: fields - pager - 20 items - more: no - access: unrestricted - css class: new-front-page - fields: - node: type - node: title - node: teaser - content: Photo - content: Author - node type in Blog, Photo, Text ... - node published - node promoted to front page - sort by: - Node: sticky - Node: post date - no Relationships - no Arguments Similar by Terms Configuration ------------------------------ - install Similar By Terms module (https://www.drupal.org/project/similarterms) - create a new View - create a Contextual Filter - select the "Similar By Terms" NID - when the filter is not available -> Display all results for the specified field - Limit similarity to terms within these vocabularies - Category - Tags - Use aggregation: Yes - Sort Criteria - COUNT(Content: ID), descending - Filter Criteria - Aggregation type: Group results together (important)
I hope to write more about this in the future, but in the meantime, those my “Drupal 6 to Drupal 8 migration” notes.