340 likes | 356 Vues
Are you a beginner or intermediate Drupaler who wants to learn about the Features module? Join Kristen Pol CruzTech, LLC as we explore the good, the bad, and the ugly of using the Features module in the real world. Discover how to create a feature module, what can and cannot be saved, and how to push features to staging or live sites. Don't miss out on this informative session!
E N D
Want to learn about Features module Are a beginner or intermediate drupaler who hasn't really used it yet Don't have an aversion to cute animals Are You in the Right Room?
Kristen Pol CruzTech, LLC (Freelance) Web, Drupal & SEO drupal@kristen.org Santa Cruz, CA Features in the Real World... The Good, The Bad & The Ugly
What is the Features module Common use case How to create a feature module Reasons you should use it What can and cannot be saved What you should not save Pushing features to staging or live What We'll Cover
“The features module enables the capture and management of features in Drupal. A feature is a collection of Drupal entities which taken together satisfy a certain use-case.” ---- drupal.org/project/features What is Features?
What is Features? mycoolmodule.module
Common Use Case The Old Way... DEV SITE - Step #1: Configure your content types
Common Use Case The Old Way... DEV SITE - Step #2: Configure your views
Common Use Case The Old Way... DEV SITE - Step #3: Configure your imagecache presets
Common Use Case The Old Way... DEV SITE - Step #4: Configure your permissions
Common Use Case The Old Way... DEV SITE - Step #5: Configure some other stuff
How do I get all these changes to the staging and live site??? Step #1: Configure your content types Step #2: Configure your views Step #3: Configure your imagecache presets Step #4: Configure your permissions Step #5: Configure some other stuff Step #6: Pray that you didn't screw anything up Step #7: Figure out what is wrong and fix it
Common Use Case The New Way... Step #1: Configure your content types Step #2: Configure your views Step #3: Configure your imagecache presets Step #4: Configure your permissions Step #5: Configure some other stuff Step #6: Create your feature module
How do I get all these changes to the staging and live site??? Step #1: Copy feature module Step #2: Enable feature module Step #3: Smile!
10:45 Demo...
11:00 More Reasons...
Settings are Saved in Code • Revisioning system • See changes in module • Tag revisions • Revert back to old tags
Port your Module to Another Site • Reusable features • Requires careful thought • Beware of dependencies • Watch out for conflicts
Share Between Developers • Sharing is nice! • Coordination is required • Different feature modules for different developers
Push Changes to Staging & Live Sites • Streamline deployment • Keep sites in better sync • Less downtime
Know If Something Has Changed • Spying is good • Diff module is your friend • Catch problems before they break your site
What Can Be Saved? Anything* exportable or jiggered to work with features module... • CCK fields • contexts • content types • dependencies • imagecache presets • menus • menu links • mini panels • panels • permissions • roles • rules • taxonomy • variables (strongarm) • views • etc...
What Cannot Be Saved? • Anything already in code • Content (nodes, comments, etc.) • Blocks* • Module settings that aren't exportable & aren't in variables table • * try features_extra module (in dev)
What Should NOT Be Saved? Do NOT save variables that change automatically in code or very BAD or very UGLY things may happen...
Push to Staging & Live • Make sure your feature modules are updated • Check in code to repository & create tag • Put staging/live site in maintenance mode • Back up staging/live database • Add/update any contrib modules if necessary • Push code to staging/live site • Revert feature modules on staging/live site • Do additional configuration as needed • Test! • Take out of maintenance mode
The Good • Config in code • Reusable features • Better collaboration • Easier deployment • Track changes
The Bad • Cannot save everything • Can have a gazillion checkboxes • UI is slow for large features • Javascript-only UI
11:15 The Ugly • Browser can crash after you have clicked a gazillion checkboxes • Saving certain variables can cause ugly things to happen • Site can crash if you update feature modules before contrib modules
EXTRA Drush • drush features • drush features-update [feature-module(s)] • drush features-update-all • drush features-revert [feature-module(s)] • drush features-revert-all • drush features-diff [feature-module(s)] • drush features-export ...
EXTRA Features Hooks • hook_features_api • hook_features_export • hook_features_export_alter • hook_features_export_options • hook_features_export_rebuild • hook_features_export_render • hook_features_export_revert • hook_features_pipe_component_alter