Slide 1

Slide 1 text

!1 @graphicalhouse

Slide 2

Slide 2 text

Legacy CMS

Slide 3

Slide 3 text

Custom CMS

Slide 4

Slide 4 text

‣Old/unruly technology ‣Broken images ‣Weird text formatting ‣Misformed URLs ‣Frustrated clients ‣Shonky SEO

Slide 5

Slide 5 text

Like moving to a new house, except it takes longer, it’s more emotional, and it’s a lot more expensive... SETH GODIN ON MOVING FROM TYPEPAD TO WORDPRESS

Slide 6

Slide 6 text

How to Migrate
 Legacy Content to Craft CMS WITHOUT LOSING YOUR SANITY @j_greig greig.cc

Slide 7

Slide 7 text

ich bin nicht super technisch

Slide 8

Slide 8 text

Designer Developer Content Strategist Information Architect

Slide 9

Slide 9 text

Designer Developer Content Strategist Information Architect “I make websites”

Slide 10

Slide 10 text

Contribute 2002–2003 Flash 2003–2006 Wordpress 2006-2016 Wordpress 2006–2014 2014–17 Craft :) 2017– Squarespace Shopify Jekyll Macromedia Anything… Help me!

Slide 11

Slide 11 text

OBLIGATORY CAT PHOTO

Slide 12

Slide 12 text

Done right, website migrations are like cooking a good stir-fry Lernert & Sander

Slide 13

Slide 13 text

STIR FRY Choose recipe Assemble ingredients Chop ingredients Cook! (And enjoy) CONTENT MIGRATION Choose recipe Assemble content Chop content Migrate! (And enjoy)

Slide 14

Slide 14 text

Choose recipe Assemble ingredients Chop ingredients Cook! (And enjoy) Choose recipe Assemble content Chop content Migrate! (And enjoy) THE HARD PART THE RELATIVELY EASY PART STIR FRY CONTENT MIGRATION

Slide 15

Slide 15 text

trends.builtwith.com/cms/Craft/Market-Share Where
 from?

Slide 16

Slide 16 text

Connect to external MySQL/Postgres databases and manipulate them in Twig. Connect Use the Guzzle HTTP client in Craft templates (handy for APIs). Fetch Import content and settings. Generate fake data (and remove it when done). Sprout Import XML/RSS/CSV/JSON to entries, categories, products and more. Feed Me (Pro) Use GatherContent to collect and organise your website content. GatherContent Some handy plugins for content migrations IMPORTING CONTENT CONTROL PANEL Inspect field handles and quickly edit field settings. (Must have!) CP Field Inspect Create plain text fields that are disabled, hidden or read-only. Incognito Field Edit multiple things (entries, assets, categories) without going back & forth Sequential Edit Quicker management and replication of fields and field groups. Field Manager MOVING CONTENT Quickly create migrations for settings (fields/sections/sites) and content. Migration Manager Generate content models from JSON data. Architect OTHER Intelligently redirect legacy URLs. Retour Integrates the Disqus commenting system into Craft 3 websites. Disqus Seamless legacy authentication - import WP/EE/BC users and more. Legacy Login * * these are all links

Slide 17

Slide 17 text

THREE MIGRATION STORIES

Slide 18

Slide 18 text

WORDPRESS MIGRATION STORY 1

Slide 19

Slide 19 text

UGH

Slide 20

Slide 20 text

Start with a
 site audit ‣ Structure ‣ Content ‣ Functionality TIP

Slide 21

Slide 21 text

EXPORT USING WP ALL EXPORT

Slide 22

Slide 22 text

POSTS XML

Slide 23

Slide 23 text

FEED ME SETUP

Slide 24

Slide 24 text

END RESULT = ENTRIES IN CRAFT

Slide 25

Slide 25 text

Don’t forget to import existing CMS admins TIP Legacy Login Top Shelf Craft Migrate users from: ExpressionEngine 2.x WordPress BigCommerce (self-hosted) Wellspring

Slide 26

Slide 26 text

Comments can be migrated too TIP Craft Disqus nystudio107 Integrates the Disqus commenting system into Craft 3 websites, including Single Sign On and custom login/logout URLs.

Slide 27

Slide 27 text

CUSTOM CMS
 MIGRATION @joselong STORY 2

Slide 28

Slide 28 text

1. LEGACY CMS WITH POSTGRES DATABASE 2. CRAFT CONNECT PLUGIN Connect to external mysql/psql databases, then perform db queries in your Craft Twig templates 3. JSON FEED OF ENTRIES 4. FEED ME PLUGIN 5. HAPPINESS

Slide 29

Slide 29 text

Don't be a hero! (sometimes it's faster to do it manually) TIP

Slide 30

Slide 30 text

Chop off what you don't need TIP FOR EXAMPLE: CMS-GENERATED
 IMAGE VARIATIONS IN S3 BUCKET

Slide 31

Slide 31 text

Can't make it work exactly how you want? Use a simpler template for legacy content. TIP

Slide 32

Slide 32 text

LEGACY TEMPLATE A single rich-text field, and a single assets field

Slide 33

Slide 33 text

LEGACY TEMPLATE A single rich-text field, and a single assets field NEW TEMPLATE Matrix field with content blocks

Slide 34

Slide 34 text

Don’t miss the opportunity to improve SEO TIP dotall.com/sessions/seo-best-practices-from-a-developers-point-of-view

Slide 35

Slide 35 text

HANDS-FREE
 MIGRATION STORY 3

Slide 36

Slide 36 text

HANDS-FREE
 MIGRATION STORY 3

Slide 37

Slide 37 text

Don't have access to the current CMS? Use a scraping tool. TIP

Slide 38

Slide 38 text

Don't have access to the current CMS? Use a scraping tool. TIP

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

2. JSON FEED 1. PARSEHUB SCRAPE 3. FEED ME PLUGIN 4. EVEN HAPPIER LAGER

Slide 42

Slide 42 text

Now for something “fun”

Slide 43

Slide 43 text

Now for something “fun” Twitter Airtable JSON Craft ZAPIER .SH SCRIPT & CRONJOB FEED ME

Slide 44

Slide 44 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft Give me some #dotall2018 tweets (with emoji plz )

Slide 45

Slide 45 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft

Slide 46

Slide 46 text

https://airtable.com/invite/r/cvOfNOTz Twitter → Zapier → Airtable → JSON → Feed Me → Craft Not bad...

Slide 47

Slide 47 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft Better :)

Slide 48

Slide 48 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft Better :)

Slide 49

Slide 49 text

getpostman.com Twitter → Zapier → Airtable → JSON → Feed Me → Craft

Slide 50

Slide 50 text

getpostman.com v SHELL SCRIPT TO CREATE JSON VIA AIRTABLE API

Slide 51

Slide 51 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft

Slide 52

Slide 52 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft SHELL SCRIPT TO CREATE JSON VIA AIRTABLE API & RUN FEEDME

Slide 53

Slide 53 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft CRON JOB RUNNING EVERY MINUTE ON SERVER TO TRIGGER SHELL SCRIPT

Slide 54

Slide 54 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft

Slide 55

Slide 55 text

Twitter → Zapier → Airtable → JSON → Feed Me → Craft INVITE PEOPLE TO TWEET WITH #DOTALL2018 AT THIS POINT TODO: FRONTEND TEMPLATE WITH AJAX AUTO-LOADING
 (IF TIME!)

Slide 56

Slide 56 text

Airtable JSON Craft AIRTABLE API FEED ME BUT HOW COULD YOU USE THIS IN REAL LIFE?

Slide 57

Slide 57 text

Airtable JSON AIRTABLE API BUT HOW COULD YOU USE THIS IN REAL LIFE?

Slide 58

Slide 58 text

Airtable JSON Craft AIRTABLE API FEED ME BUT HOW COULD YOU USE THIS IN REAL LIFE?

Slide 59

Slide 59 text

Content migrations
 don’t have to
 be a PITA.

Slide 60

Slide 60 text

1. A good content migration is like
 cooking a stir fry 2. Start with a site audit. 3. Not just about core content,
 users and comments can come too. 4. Don’t be a hero!
 (Do it manually if you have to) 5. Chop off what you don’t need. 6. If you get stuck, use a simpler
 template for legacy content. 7. Use a scraping tool if you don’t
 have access to the current CMS. 8. Improve SEO whilst you go. Content migrations
 don’t have to
 be a PITA.

Slide 61

Slide 61 text

Content migrations
 don’t have to
 be a PITA. Have fun,
 and embrace
 the learning opportunity.

Slide 62

Slide 62 text

Least-worst CMS

Slide 63

Slide 63 text

Thank y all @j_greig greig.cc @graphicalhouse graphicalhouse.co.uk