44
No Code Content Migration Hector Iribarne @hectoriribarne Track: Site Building Level: Intermediate Drupalcamp Atlanta | October 16-17, 2015 Kennesaw State University Conference Center 3333 Busbee Drive | Kennesaw, GA 30144

Drupal Camp Atlanta 2015 - No Code Content Migration

Embed Size (px)

Citation preview

No Code Content Migration

Hector Iribarne @hectoriribarneTrack: Site BuildingLevel: Intermediate

Drupalcamp Atlanta | October 16-17, 2015Kennesaw State University Conference Center

3333 Busbee Drive | Kennesaw, GA 30144

@hectoriribarne

Hector Iribarne (iribarne.com)

Drupal Site Architect & Developer (since 2007)

Broward Drupal Users Group co-founder (since 2010)

iribarne on Drupal.org and IRC

Currently working on Contentin and Contentout (sandbox modules)

#DCATL

@hectoriribarne #DCATL

Prime Focus of Presentation: Contentin module (for site builders)

● The Contentin module is at the core of the “No Code Content Migration” approach for getting content into Drupal without writing any code (leverages the Migrate module)

● The module is targeted for site builders (two-click import):○ One click to dynamically register migrations from a CSV

file (Contentin module at work)○ Second click to import registered migration (Migrate module

at work)

● Contentin sandbox:https://www.drupal.org/sandbox/iribarne/2461615

○ git clone --branch 7.x-1.x http://git.drupal.org/sandbox/iribarne/2461615.git contentin

@hectoriribarne

Main Topics Traditional Migrate module

“Code Approach” (Appendix A)

Export Content to CSV w/ Contentout module

No Code Content Migration w/ Contentin module

#DCATL

@hectoriribarne

DB

Simple CSV files[(h)field,

(c)single-value fields]

Site 2(D7)

Site 1(D7)

Traditional “Code Approach”: No Code Content Migration:

Migrate Code

(not covered)

Migrate Code (Appendix A)

Hierarchical CSV files

[(mh)field:subfield,(mc)multi-value fields]

One-clickContentout

migr8csv2articlemigr8csv2page

1 2

mhmcmcmc

hccc

Legend:(h) header(c) content(mh) multi-value header(mc) multi-value contentModules Demo number

#DCATL

Two-clicks Contentin

Presentation in one slide

One file per content type

1

Export Content to CSV

w/ Contentout module

@hectoriribarne #DCATL

@hectoriribarne

Site 1(D7)

Use Contentout module to create CSV:

Hierarchical CSV files[(mh)field:subfield,

(mc)multi-value fields]

One-clickContentout

2

mhmcmcmc

Legend:(mh) multi-value header(mc) multi-value contentModule

#DCATL

Contentout

Demo

@hectoriribarne #DCATL

Steps to creating Site 1

(Create CSV files with Contentout)

(module content out)

@hectoriribarne #DCATL

@hectoriribarne

Get the Contentout module from the Drupal sandbox:

● cd sites/all/modules/custom

● git clone --branch 7.x-1.x http://git.drupal.org/sandbox/iribarne/2461613.git contentout

● Enable the Contentout module

● Go to Contentout on the admin menu: Configuration -> Content authoring -> Content out

#DCATL

@hectoriribarne

Content out admin page:

#DCATL

@hectoriribarne

Content out one-click export:

#DCATL

No Code

Content

Migration

@hectoriribarne #DCATL

Site 2(D7)

No Code Content Migration:

Hierarchical CSV files

[(mh)field:subfield,(mc)multi-value

fields]

Two-clicks Contentin

3

mhmcmcmc

#DCATL

Legend:(mh) multi-value header(mc) multi-value contentModule

Contentin

Demo

@hectoriribarne #DCATL

Steps to creating Site 2

(Import CSV files with Contentin)

(module content in)

@hectoriribarne #DCATL

@hectoriribarne

Set up the 2nd site for the No Code Content Migration approach:

#DCATL

@hectoriribarne

Set-up the basics from contib for Site2:

● cd sites/all/modules

● mkdir custom

● mkdir contrib

● cd contrib

● drush dl module_filter admin_menu migrate bundle_copy taxonomy_csv;drush en -y module_filter admin_menu migrate migrate_ui bundle_copy taxonomy_csv;drush dis -y overlay toolbar

#DCATL

@hectoriribarne

Copy Content Types and Taxonomies:

● Use the Bundle Copy module to copy your content types over from Site1 to Site2

● Use the Taxonomy CSV module to copy your taxonomies over from Site1 to Site2

#DCATL

@hectoriribarne

Get the Contentin module from the Drupal sandbox:

● Copy the CSV files from Site1 to Site2 (e.g. /data dir)

● cd sites/all/modules/custom

● git clone --branch 7.x-1.x http://git.drupal.org/sandbox/iribarne/2461615.git contentin

● Enable the Contentin module

● Go to Contentout on the admin menu: Configuration -> Content authoring -> Content in

#DCATL

@hectoriribarne

Content in admin page:

#DCATL

@hectoriribarne

Migrate Dashboard:

#DCATL

@hectoriribarne

Dynamically registered article content type:

#DCATL

@hectoriribarne

Dynamically registered page content type:

#DCATL

@hectoriribarne

Create Content via Migrate module (second click):

#DCATL

@hectoriribarne

Content Created!

#DCATL

EntityReference

Demo

@hectoriribarne #DCATL

@hectoriribarne

The Contentin module supported field type/widgets:

#DCATL

@hectoriribarne

Current Focus -> Contentin module for Drupal 8 (work in progress):

Site 2(D8)

Site 1(D7)

Hierarchical CSV files

[(mh)field:subfield,(mc)multi-value fields]

One-clickD7 Contentout

1 2

mhmcmcmc Two-clicks

D8 Contentin

@hectoriribarne

Links:

● Code/files for “Traditional Approach” (See Appendix A)○ http://browarddrupal.org/PastMeetings/march-2015

● Contentout sandbox module○ https://www.drupal.org/sandbox/iribarne/2461613

● Code for Contentout sandbox module○ git clone --branch 7.x-1.x http://git.drupal.org/sandbox/iribarne/2461613.git contentout

● Contentin sandbox module○ https://www.drupal.org/sandbox/iribarne/2461615

● Code for Contentin sandbox module○ git clone --branch 7.x-1.x http://git.drupal.org/sandbox/iribarne/2461615.git contentin

#DCATL

http://iribarne.com/contact

If you liked my presentation, follow me on Twitter: @hectoriribarne

Go Fish:Details:

HectorIribarne

d.o. username: iribarne

http://certifiedtorock.com/u/192646

#DCATL

Questions?

Hector Iribarne @hectoriribarne

Drupalcamp Atlanta | October 16-17, 2015Kennesaw State University Conference Center

3333 Busbee Drive | Kennesaw, GA 30144

Appendix A

Hector Iribarne @hectoriribarne

Drupalcamp Atlanta | October 16-17, 2015Kennesaw State University Conference Center

3333 Busbee Drive | Kennesaw, GA 30144

Traditional

Migrate module

“Code Approach”

@hectoriribarne #DCATL

@hectoriribarne

Simple CSV files[(h)field,

(c)single-value fields]

Traditional “Code Approach” with Migrate module:

MigrateCode

migr8csv2articlemigr8csv2page

hccc

Legend:(h) header(c) contentModules

Site 1(D7)

#DCATL

@hectoriribarne

Static implementation of hook_migrate_api (migr8csv2page):

#DCATL

@hectoriribarne

Source Mapping of Migration Class (migr8csv2page):

#DCATL

@hectoriribarne

Destination Mapping of Migration Class (migr8csv2page):

#DCATL

Steps to creating Site 1

(Traditional Code Approach)

(modules migr8csv2article and migr8csv2page)

@hectoriribarne #DCATL

@hectoriribarne

Let’s get started with setting up the traditional approach:

#DCATL

@hectoriribarne

Set-up the basics from contib for Site1:

● cd sites/all/modules

● mkdir custom

● mkdir contrib

● cd contrib

● drush dl module_filter admin_menu migrate bundle_copy taxonomy_csv;drush en -y module_filter admin_menu migrate migrate_ui bundle_copy taxonomy_csv;drush dis -y overlay toolbar

#DCATL

@hectoriribarne

Set-up the basics for custom:

● Create a data directory under the files folder

● Place CSV files article.csv and page.csv in the sites/all/default/files/data directory

● Place custom modules migr8csv2article and migr8csv2page in the sites/all/modules/custom directory and enable the modules

#DCATL

@hectoriribarne

File Structure:

#DCATL

Demo: Import content using

migr8csv2page and migr8csv2page

@hectoriribarne #DCATL