Moving stuff around on your Drupal web pages Dept. Agriculture & Food

Moving stuff around on your
Drupal web pages
Alex Bergin / @alexbergin
Dept. Agriculture & Food
@drupalwa
Background
• Websites are dynamic that’s why we’re here,
that’s why we use Drupal.
• Not all pages will want to look the same
@drupalwa
Scenarios
• Websites may have:
– Homepage presenting a dashboard of content.
– Content Pages: Basic pages, products, events, etc.
– Index taxonomy term pages, landing pages.
– Search results, sitemaps.
– User profile pages.
– And more!
• All of which may have different layouts.
@drupalwa
SO HOW DO WE DO THIS IN
DRUPAL?
@drupalwa
Blocks
@drupalwa
Blocks
•
•
•
•
Baked into Drupal core since 4.x.
Manage blocks in your themes regions.
Suited for basic brochure sites.
Problem: dozens of blocks for dozens of
regions, not enabled for all pages?
• Problem: visibility conditions limited. Php in
db bad mkay.
@drupalwa
Options
• Various contributed modules make layout
management easier:
1. Panels: http://drupal.org/project/panels
2. Context: http://drupal.org/project/context
3. Display Suite: http://drupal.org/project/ds
We’ll try go over each of these.
@drupalwa
What do they basically do though
Everything on the page
Or, all theme’s body
content region
Or perhaps only node
content
So you can use these modules in conjunction with Blocks and your
theme regions, if you want to.
Additionally, these things modules can use block content defined by
other custom modules, themselves too
1. Panels Module
Screenshot courtesy of themonthly.com.au
@drupalwa
1. Panels explained
• By the same legend as the Views module –
Earl Miles (aka merlinofchaos). Since D4.7.
• Dependant on Ctools which includes the Page
Manager module that is kind of required to
use Panels.
• Panels module includes several modules:
Panels, Mini Panels, Panel Nodes, and In-Place
Panel Editor.
@drupalwa
1. Panels explained. More..
• Panels is path driven. So a panel object exists for nodes, node
edit forms, search, etc.
@drupalwa
Panels has its own terminology
• Of each panel, you have Variants, which each
let you have different layouts, e.g. One for
each content type.
• Each Variant can have a Layout set. Use built
in panels layouts or write custom layout.
@drupalwa
Panels has its own terminology
• Selection Rules, lets you define conditions in
your Variants, e.g. Different layout for a
different node content type.
• Contexts – allows you to draw on other
material: content, views, etc. i.e. Product
panel variant bring postage conditions node
into context. Not to be confused with context
module.
@drupalwa
More on Panels
• Panels designed to be very extendable and
powerful.
• Advanced plugin system via ctools for custom
access controls, layouts, content blocks
(content types), and block styles.
• Modules that extend Panels:
– Panels Everywhere
– Panelizer – like panel_node module
@drupalwa
2. Context
@drupalwa
2. Context
• Around since D5.x, fairly mature.
• Comes with Context, Context Layouts, Context
UI.
• Create contexts by specifying conditions and
then the reactions – be it blocks to show in a
region.
• No field support though.
@drupalwa
2. More on Context
• Relatively easy interface to manage.
• Addons for Context:
– http://drupal.org/project/context_node - lets the
content creator select which context to use for
their node.
– http://drupal.org/project/context_by_node automatically creates a context when the node is
created (no official 7.x version available though).
@drupalwa
3. Display Suite (DS)
@drupalwa
3. Display Suite
• Stable. Relatively new. Still catching on.
• Specially built for Drupal 7 Entities: nodes,
users, terms, etc.
• Layouts – includes common layouts, but easy
to create new layouts by drush instead of
manually.
• View modes. i.e. Event has a full, teaser and
monthly calendar view.
@drupalwa
3. Display Suite
• “Disable drupal blocks/regions” setting.
• DS Custom Fields (not content fields) lets you
create more flexible fields:
– Code field - meta tags, tokens, php field.
– Dynamic field – kind of like panels context.
– Block field - how you add other module blocks
“block fields”.
– Preprocess fields – possibly lets other modules
populate them? Haven’t used this myself.
@drupalwa
3. Display Suite – Advanced Stuff
• Integration with panels layout manager.
• Integration with Views Displays.
• Re: Custom layouts with Drush, look for the
“ds-build” argument in Drush help.
• Very decent screencasts here:
http://bit.ly/ds-d7
@drupalwa
So what to use then?
• Based on Number of Installs:
1. Panels: 120,000
2. Context: 65,000
3. Display Suite (DS): 30,000
All growing, but DS growing the fastest.
@drupalwa
So, what to use?
• Depends on your circumstances.
– Basic Brochure site – blocks
– For larger sites though:
• Panels is probably the most powerful, but has a steep
learning curve.
• Context is probably the easiest of the lot to learn but
still requires templating for laying out field content.
• Display Suite looks like it has a good balance of
usability, and power. Probably the most exciting.
@drupalwa
What to use, Continued..
• All are Exportable to features.
• One way or another it’s probably possible to
do anything in any of the layout modules.
@drupalwa
Further Info
• Blocks vs. Context vs. Panels:
http://www.lullabot.com/articles/assemblingpages-with-drupal
• Comparison of Layout Editors:
http://groups.drupal.org/node/15851
• DS vs. Panels:
http://www.jyvesgarden.com/blog/display-suitevs-panels
• Great DS instructional videos: http://bit.ly/ds-d7
@drupalwa
What’s ahead
• Drupal 8 Initiatives: “Concept Model”
• Thomas, Sam, anyone read up on this, please
share?
• D8 discussions on the topic is found here:
http://groups.drupal.org/node/227543
@drupalwa
Cheers to Thomas for organising
these meetups month in month out!
@drupalwa