Upgrading to Backdrop CMS

from Drupal 7

Drop the dragon lounging

What is Backdrop CMS?

The Drupal fork

Drupal 7, modernized!

Backdrop CMS includes:

Drupal 8 core features

  • Mobile First, HTML5
  • Built-in Rich-Text editor
  • Views (and CTools) in core
  • Configuration Management
  • Field Types: Date, Email, Link
  • File Entity
  • Media Browser
  • Admin Views
  • Page Preview
  • Email registration

Backdrop CMS includes:

Drupal 7 contrib features...

75+ modules included in Backdrop core

  • Admin menu
  • Admin views
  • Auto Menu*
  • Block class
  • Blockify*
  • Boolean formatter
  • Btester...Block Content*
  • Caption Filter
  • CKeditor*
  • CKEditor Link
  • CKEditor Media Browser*
  • CKEditor Upload
  • Comment Closer
  • Comment Hide Subject
  • Contact Block*
  • Date*
  • Date popup authored
  • Default config
  • Direct Upload*
  • Elements
  • Email
  • Email Registration
  • Entity API*
  • Entity Cache
  • Entity Reference
  • Entity view mode
  • Extra Columns*
  • Field as Block
  • Field formatter settings
  • File entity*
  • Float filter
  • HTML5 Tools
  • Image Mobile Camera*
  • IMCE Wysiwyg bridge*
  • Insert*
  • Instant Filter
  • jQuery Update*
  • Link
  • Live preview*
  • Media*
  • Menu block
  • Menu translation (i18n)
  • Nodeblock
  • Options Element
  • Panels*
  • Panels Everywhere*
  • Pathauto
  • Placeholder
  • Project Browser
  • Rabbit Hole
  • Radix Layouts*
  • Redirect
  • Role Assign
  • Role Help
  • Scheduler*
  • Smartmenus
  • Token
  • Transliteration
  • UUID*
  • Variable*
  • Vertical Tabs Responsive
  • Views
  • Views Bulk Operations
  • Views Responsive Grid*

* Some features may not be included in Backdrop core.

Top 100 Drupal 7 modules

  • Ctools
  • Views
  • Token
  • Libraries API
  • Entity API
  • Pathauto
  • Jquery Update
  • Date
  • Admin Menu
  • Webform
  • CKeditor
  • IMCE
  • Module Filter
  • Link
  • Metatag
  • Google Analytics
  • Entity Reference
  • Transliteration
  • Field Group
  • Rules
  • Views Bulk Ops
  • CAPTCHA
  • Wysiwyg
  • Features
  • XML Sitemap
  • Colorbox
  • Variable
  • File Entity
  • Media
  • Backup & Migrate
  • Menu Block
  • Redirect
  • Localization update
  • i18n
  • Field collection
  • Views Slideshow
  • Panels
  • Global Redirect
  • Context
  • Devel
  • Strongarm
  • Email Field
  • Mail System
  • Block Class
  • Menu Attributes
  • ReCAPTCHA
  • Display Suite
  • SMTP
  • IMCE Wysiwyg Br
  • Job Scheduler
  • Admin Views
  • Views Data Export
  • Adressfield
  • Honeypot
  • UUID
  • Special Menu Items
  • Better Exp Filters
  • Calendar
  • Feeds
  • Superfish
  • Multiupload File widget
  • Flexslider
  • MimeMail
  • Node Clone
  • References
  • Multiupload Image widget
  • Plupload integration
  • ImageCache Actions
  • Views PHP
  • Filefield Sources
  • Field Permissions
  • Diff
  • Site Map
  • Search API
  • Inline Entity Form
  • Media: Youtube
  • Adminimal...Menu
  • EU cookie compliance
  • Pathologic
  • Facet API
  • Module Missing...Fixer
  • Quicktabs
  • Video embed field
  • Taxonomy Menu
  • CKEditor Link
  • Title
  • Masquerade
  • IMCE Mkdir
  • Voting API
  • Conditional Fields
  • Lightbox 2
  • Insert
  • Advanced Help
  • Image URL Formatter
  • Scheduler
  • Linkit
  • Feeds Tamper
  • Content Access
  • Views Bootstrap
  • DraggableViews
  • Included In core: 19
    Ready In contrib: 58
  • Underway in core: 3
    Underway in contrib: 3
  • Alternative in core: 16
    Nolognger necessary: 3
  • Not started: 4

Backdrop CMS is Fast

Backdrop performs faster than a comparable Drupal 7 site.

Faster page rendering, better caching, and yes,
cache tags are coming soon!

Backdrop CMS is easy

Improved user exprience over
both Drupal and WordPress

More than 600 user-experience improvements
made to the project since it's inception

Why upgrade to Backdrop CMS?

  • You are happy (enough) with your current Drupal 7 site
  • You want all the same functionality you have now (+ more)
  • You want a simpler editor or administrator experience
  • You want ongoing improvements to your software
  • You agree with the Backdrop CMS Philosophy

Philosophy?

Backdrop CMS Mission

Backdrop CMS enables people to build highly customized websites affordably, through collaboration and open source software.

https://backdropcms.org/philosophy

Backdrop CMS Principles

  1. Easier updates: Backwards compatibility is important.
  2. Simplicity: Write code that the majority can understand.
  3. Focus: Only include features that benefit the majority.
  4. Extensibility: Ensure Backdrop can be customized.
  5. Security: Keep sites and people safe.
  6. Performance: Meet low system requirements.
  7. Release on-time: Plan and schedule releases.
  8. Freedom: Remain both Free and Open Source.

https://backdropcms.org/philosophy

What kinds of sites are upgrading?

  • Simple sites -- can upgrade in as little as 1 day
  • Medium sites -- upgrade in ~1 month
  • Highly customized sites (lots of custom code) - varies

I'm in!

Upgrade from Drupal

in 4 steps

  1. Research what's necessary
  2. Prepare your Drupal 7 site
  3. Upgrade to Backdrop CMS
  4. QA & Adjust
  5. Repeat steps 2-4

Step 1:

Research what will be necessary to upgrade to Backdrop CMS

  1. Review your current theme
  2. Review your current layouts (if any)
  3. Review your current modules

Review your theme

Are you happy with your current theme?

  • If so, you'll need to "port" it.
  • If not, you might want a new one: contrib or custom.
  • Familiarize yourself with the time/effort required for either decision.

Theme differences from Drupal 7

The page template (page.tpl.php) becomes
the layout template (layout.tpl.php)

Drupal 7

regions in theme
blocks in database

Backdrop CMS

regions in layout templates
blocks in configuration

Minor markup changes: semantic tags, no IDs.

Drupal 7


div
id="page-title"
            

Backdrop CMS


article, nav, section, aside
class="page-title"
            

classes and attributes printed differently in templates.

Drupal 7


class="< ?php print $classes; ?>" < ?php print $attributes; ?>
          

Backdrop CMS


class="< ?php print implode(' ', $classes); ?>" < ?php print backdrop_attributes($attributes); ?>
          

functions are called from within templates

Drupal 7


print $styles;
print $scripts;
            

Backdrop CMS


print backdrop_get_css();
print backdrop_get_js();
            

Review layout templates

What's a layout template?

Core Layout Templates

(think "page template" from Drupal 7)

  • .info file
  • .tpl.php file
  • .css file
  • optional .php file

What's a layout template?

Top-level add-On (like module, theme)

  • .info file
  • .tpl.php file
  • .css file
  • optional .php file

Review layout templates:

  • Can you make do with the layout templates in core?
  • If not, you will need to create your own:
    • Flexible Layout Templates (UI)
    • Custom code

Review your modules

What modules is your site currently using?

  • Core modules
  • Contributed modules
  • Custom modules

Review core modules.

A few D7 core modules have been remvoed from Backdrop.

  • Were you using any of these?
  • If so, were they replaced by something else? (dashboard)
  • If not, did you really need them? (overlay)
  • If so, do they exist in contrib? (aggregator)
  • If not, are you ready to port them? (poll)
Core Modules

Review contributed modules.

  • Have any been moved into core in Backdrop CMS?
  • If some have not, do they exist in contrib?
  • If some do not, are you ready to port them?
Contrib Modules

Review custom modules

  • How many do you have?
  • How complicated are they?
  • Will they need any changes for Backdrop?
  • Should they be made 100% backdrop-compatible?
  • Custom Modules

Differences in modules

the info file needs to be updated

Drupal 7


core = 7.x
            

Backdrop CMS


backdrop = 1.x
type = module
            

Your module might work after this one change!

(Backwards-compatability with Drupal 7)

There's some more

(You'll likely also want Configuration Management, so...)

configuration management

Drupal 7


variable_set()
variable_get()
            

Backdrop CMS


config_set() or $config->set()
config_get() or $config->get()
            

There's a little more

But we have a record of all API changes at
https://api.backdropcms.org/change-records

It should be straightforward to port modules.

Backdrop

It's not very different

Step 2:

Prepare your old Drupal 7 site

  • Ensure you are on the latest stable release of Drupal 7.
  • Ensure you are on the latest stable versions of all add-ons.
  • Ensure all configuration is in the database (views, etc).
  • Optional: Delete content you don't use/need/want.
  • Optional: Uninstall modules you don't use/need/want.

Step 3

Upgrade your Drupal site to Backdrop

  • Replace all Drupal code with Backdrop code:
    • Add all custom and/or contributed modules
    • Add all custom and/or contributed layout templates
    • Add all custom and/or contributed themes
  • Update the settings.php file
  • Run the update script! (visit update.php)

Step 4

QA and adjust

  • Confirm that everything is working.
  • Adjust configuration as needed (commit to vcs!).
  • If this is the first upgrade:
    • This is a good time to create/update the theme.
    • This is a good time to create custom layout templates.
    • this is a good time to port modules

As with all upgrades

Repeat steps 3-4 as needed, sync config each time.

Questions?

Show and Tell!

Questions?