the panels family
DESCRIPTION
Presentation given at LA Drupal camp, describes the basic components of the Panels family of modules and how they break down.TRANSCRIPT
The Panels Family
An overview
High Level
• Structure– Page Manager Page– Panels Everywhere
• Content– Panelizer
• Miscellaneous– Panel fields (Views)– Display suite
• Components– Custom content– Custom layouts– Custom styles– Mini Panels– Views panes– Views contexts– Custom rulesets
Typical Drupal Design• Blue areas are regions• Blocks in regions are
unrelated to the content• Have to use PHP snippets
to make blocks context sensitive
• Can only place a block in one region
• All regions always render even when not displayed in page.tpl.php
Header
Left Sidebar
Footer
Right Sidebar
Content
How Designers See A Page
• Everything on a page is a part of the content of that page, taken within the context of the entire site.
Content
How Designers See A Page
• Everything on a page is a part of the content of that page, taken within the context of the entire site.
• Also, designers like grids.
Content
Structure: Page Manager page
• Has URL path of its own• System pages override existing Drupal
functionality• Can assign arguments to contexts• Variants can provide different pages on criteria• Exportable, can be provided by modules
What the Frog is Context?!?!
• Context is the underlying data you need to render a page.
• A context is an object in Drupal: i.e, node, user, view, entity, form, taxonomy term, etc.
• Arguments and relationships produce context• Access rules, relationships, content panes
consume context.
Contexts are objects
• Nodes• Users• Taxonomy terms• Forms• Any other object someone writes a plugin for
Context source: Arguments
http://www.example.com/node/12345
Node: Story XYZ
Context source: Relationships
Node: Story XYZ
Taxonomy Term
Post Author
Node: Author Profile
Context at workHeader
Left Sidebar
Footer
Right Sidebar
Node: Story XYZ
Taxonomy Term
Post Author
Node: Author Profile
Structure: Panels Everywhere
• Partially or Completely replace page.tpl.php and block admin UI
• Change “page template” based upon context.• Assign specific page templates directly to
specific pages.• Exportable, can be provided by modules and
themes.
Content: Panelizer
• Panelizer.module• Node which contains a panel• Can have default panel layout• Content creator can create new layout• Lots of room for future expansion.
Contributors wanted!
Component: Custom Content
• Can simply from the UI or complex from a plugin
• Equivalent to custom blocks in block UI• Can control naming and categorization• Text with an input filter• Reusable• Exportable
Component: Custom layout
• Regions that can contain blocks• Can create as a plugin or using the “flexible”
layout builder from the UI
Complex layout
Component: Custom style
• Can add decorations, such as rounded corners• Can control CSS properties such as font size,
weight• Can repurpose panes to create tabsets,
accordions• Can be plugins, or simpler custom styles can
be created in the UI and exported.• See: Stylizer module
Component: Mini panel
• Anything you want in a panel…in a block (or pane)
• Useful for side by side or for putting several distinct content pieces together for re-use
Component: Views pane
• A special display type that makes a view available as a content pane
• Can use contexts as arguments• Can control the appearance in the Add Content dialog• Can control what config option is available• Can optionally allow panel config to control which
fields show• Can repurpose exposed filters into panel config to
improve experience of content managers
Component: Views context
• Load a view into a context• Split the pieces of a view across a layout• Extract other contexts from view results
Component: Custom ruleset
• Group complex rules (a & b & c) into a single rule to make life easier for content managers
Misc: Panels fields
• Style plugin for view• Split the fields of a view across a layout
Misc: Display suite
• Display suite now can use Panels layout and content to control node layout directly from the display suite UI
Pain Points
• Too many ways to do Views• Can be hard to do forms that aren’t nodes• Modules that don’t talk Panels don’t put their
content in a way Panels can use it• Block system sucks, spreads suck to everything
it touches