Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
CORNELL DRUPAL CAMP 2015: One Content Type to Rule Them All
1. One Content Type
to Rule Them All
Case study of “Any Page”, a single-content
type implementation
CORNELL DRUPAL CAMP 2015
2. Presenter
Will Jackson - New Valley Media
Senior Drupal Developer
Resident Commerce Consultant
System Administrator
DevOps Engineer
3. New Valley Media
Drupal Development and Support
On-site/Remote Training
Supplemental Staffing
Drupal Consulting Services
Site Audits & Performance Reviews
UI/UX Responsive Enhancements
and much more...
Company
4. Introductions
Why single-content type?
Our model: Any Page
ECK and other construction
tips
The Future of Drupal
Who are you?
Site builders, developers,
themers, content
managers, etc
Most content types
on a site?
6. Problem 1: Content type overload
Advantage of Drupal: Add as many content
types and fields as needed
Disadvantage of Drupal: Add as many content
types and fields as you think you need
And content types are rigid!
8. Traditional Content Models
Focus on “content types.”
Assume that unique content type is needed
for each page variation.
Still connect presentation to architecture.
(References:
http://pointnorth.io/#content-modeling
http://alistapart.com/article/content-modelling-a-master-skill)
9. Single-page and long-form pages.
Mix of visuals: images, videos, graphics.
Editors want to control order of elements.
Mix of default and custom sidebar blocks.
Problem 2: Design trends
11. Rather than content types, IA focuses on
content organization.
Complex pages (such as landing pages) can
be controlled by editors.
Easier flexibility for non-content regions, such
as sidebars.
Single-content type solutions
12. Single content type: Any Page
Content model
Content type
Fields
Custom Theming
⇒ Site structure
⇒ Page type tags
⇒ Reusable blocks
⇒ Built-in style options
14. STRUCTURE
Entity Construction Kit
Entity Reference
Inline Entity Form
Context, Features
Views, View Field
Media
Automatic Entity Label
Any Page: Module magic
UX ENHANCEMENTS/PRESENTATION
Field Group
Multiple Selects
Display Suite / Extras
Fields Conditional
Field Formatter Settings
Field Formatter Conditions
15. Entity Construction Kit
Create/Manage entities and bundles from UI.
Manage properties and custom behaviors.
Create bundles to share entity configuration.
Thousands of compatible modules (Field UI).
19. Alternative tagging: Options entity
“Options” entity type with two bundles
Option Type: parent, such as Page Type
Option: child, such as Event, Blog, Product,
News, etc.
Also used for supporting options in the Any
Blocks: Layout Options, Link Style, Image
Style, Color Scheme, etc.
20. Option fields
Label: human-friendly description
Machine name:
CSS-friendly string
Applied as classes to streamline theming
Related to Bootstrap classes or variables
Example - Block Color Scheme:
Label: Purple background / white text
Machine name: color_brand_contrast_white
22. Any Page node fields
Title
Tags: Page type,
categories
Teaser and teaser
image
Entity reference fields:
Main content
Left sidebar
Right sidebar
Content top
Content bottom
Default globals
23. Any Page node fields
Title
Tags: Page type,
categories
Teaser and teaser
image
Entity reference fields:
Main content
Left sidebar
Right sidebar
Content top
Content bottom
Default globals
24. Page Type tag is
alternative to separate
content types. Can be
changed as node usage
changes.
Other functional or
presentation tagging
can be added as
needed.
26. Any Block types
Each type based on functionality.
Most block types can be used in any field.
(AKA page region: main content, sidebar, etc.)
Limited field reuse.
27. Any Block types
Text block
Accordion block
Contact block
Document Attachments
block
Event block
Featured Media block
Form block
Image (grid / slideshow)
Link (menu-style)
Location block
Product
System block (blocks from
core and modules)
Video block
View / List block (blocks
from Views)
28. Any Block: Text block
Administrative Title
Display Title
(with optional link)
Style Options
(alignment, padding, color,
layout)
Body
Image
Options
(style, position, link)
Image
(base and hover)
Links
Link style
(text or button)
Title (optional link)
Links
29. Created by the Commerce Guys for Commerce Kickstart.
Create referenced entities inline without leaving the form.
Integrate with any new or pre-existing entity.
Streamline content forms
Inline Entity Form
31. Life cycle of a page
1.Announcement: Text, images
2.Event: Retag. Add Event, Location blocks
3.Report: Retag. Add Video block.
4.Resource: Retag. Add Document
Attachment block.
32. Performance
Complex configurations may be resource intensive.
Commerce
Additional customization required for contrib displays
Search
Contributed Module Limitations
Technical considerations
33. Review
Advantages of a single content type
Content that evolves to what you need
Simplify the process for content editors
Condense Content Types
Solve the problem of “a content type for everything”
37. Two custom entity types
Any Page uses two custom
entity types: Any Block and
Option Type
38. Related: Item Sets
used in block
Special Purpose
Parent Bundle (no blocks)
Container block
“Workhorse”
Any Block bundles
Any Block: parent bundle
Text Block: multi-purpose
“workhorse” also includes image
and links
Accordion Block: primary field is
multi-field Accordion Item Set.
Multi-Block Wrapper: allows other
blocks to be displayed in one row.
SEO Description: not available as
block; used separately.
40. Main content field
Create or reuse entities in
this region.
All blocks are displayed in a
vertical stack.
41. Left sidebar field
Create or reuse entities in
this region.
All blocks are displayed in a
vertical stack.
Option to override default
display settings on Global
sidebar blocks.
42. Right sidebar field
Create or reuse entities in
this region.
All blocks are displayed in a
vertical stack.
43. Content top field
Display options for blocks
displayed in Content Top
region.
Create or reuse entities in
this region.
44. Content bottom field
Display options for blocks
displayed in Content Bottom
region.
Create or reuse entities in
this region.
Editor's Notes
Add details on background. Will, can you add yours?
Add details on background. Will, can you add yours?
Add details on background. Will, can you add yours?
Question for attendees: Prize for most?
Design trend toward long, parallax scrolling pages. How can we provide editorial control?
Sometimes that page calls for a single image, other times a gallery or slideshow, other times a video. How can we provide flexibility for building these pages?
Editors don’t want to be stuck in a box or with static displays. They want to be able to reorder elements on the page.
Editors also want more control over sidebar blocks. Drupal’s block configuration makes this difficult, even when using context instead.
IA focuses on content organization, which means fewer one-off pages fall through the cracks.
Designs are becoming more complex, with mixture of images and content blocks.
Clients want granular control over sidebars
Key differences between Any Page and content type for each presentation type -- content models focus on site structure rather than content types, which allows laser-focus on user needs.
Instead of content types, use page type tags.
Instead of an unending list of fields, implement reusable blocks.
Conventional content type: starting adding fields. And even after adding fields, typically locked into a static layout.
Single content type: Core fields, then flexible blocks. Event block includes date/time and location. Reusable, can be reordered.
WILL: Can you flesh out this list? List modules in order of importance.
WILL: Can you provide an overview of ECK, how it works, etc. Add supporting slides as needed.
WILL: Can you provide an overview of ECK, how it works, etc. Add supporting slides as needed.
WILL: Can you provide an overview of ECK, how it works, etc. Add supporting slides as needed.
WILL: Can you provide an overview of ECK, how it works, etc. Add supporting slides as needed.
Before we talk about fields in the Any Page content type, let’s look at a supporting entity type: Options
Before we talk about fields in the Any Page content type, let’s look at a supporting entity type: Options
Core fields on Any Page content type: title, tags (using Options entity reference), teaser and teaser image. Then the meat of Any Page: entity reference fields. Our structure is based on the regions in our standard page template.
Core fields on Any Page content type: title, tags (using Options entity reference), teaser and teaser image. Then the meat of Any Page: entity reference fields. Our structure is based on the regions in our standard page template.
Tags instead of page types. Allow multiple page type tags.
Teaser: recommend requiring since there’s no body field to use as fallback for teaser.
Now, we’ll turn our attention to the Any Blocks, the entities that are referenced in the Entity Reference fields.
Except for Text block, each is focused on a single bit of functionality.
Add features on text block, the workhorse of Any Page.
WILL: can you add details on how it works, considerations in use, configuration, etc? Feel free to add supporting slides.
WILL: can you add details on how it works, considerations in use, configuration, etc? Feel free to add supporting slides.
WILL: can you add information on technical considerations, such as performance, search, commerce, data integrity
Anypage Demo: http://bcns:bcnsdev@fldrupalcamp.bcns.devops.ourdrop.com/
Any Page content type
Review Entity reference fields
Note default fields for sidebars and content top
Briefly review display
Introduce two entity types
Any Block bundles
Review Any Text block: show fields groups, usability for content editor, layout and styling options for each group
Review Any Text display: use of Display Suite, different display modes available for regions and/or views