3. This Talk
● Based on my own experience, YMMV
● Intended to help you better define what your module should do,
and why
● A resource guide
● Amount of code === NULL
4. Site Builders: A Renewed Focus for Drupal
● Less Technical
● Need low code solutions
● Likely new to Drupal
5. Site Building: The Process
● Create content types
● Construct views
● Add magic!
○ Extra modules as needed
7. Configuration Kits: The concept
● Often a Drupal module without PHP
○ Mostly YML, sometimes CSS, JS, etc
● Put a logical system into a module
○ Staff directory, events calendar, etc.
○ Most useful if they address something tricky
■ e.g. sort staff directory by last name
● Allows for modular reuse of common systems
8. That sounds a lot like
a Feature...
● Configuration as code
● NOT intended for an ongoing sync
○ Install and customize
● Uses core config management
9. How They Help
● New to Drupal
○ Implement common features
■ Customizable
○ Reference for learning
● Experienced Drupalists
○ Head start on site building
■ More time to innovate
○ Other code more portable
■ CSS, JS, PHP
10. How They Help: Module Maintainers
● Easy to try out
● Faster to incorporate in a site build
● Reference “known good” configuration
○ Helps issue triage
11. How They’re Made
● drupal generate:module
● drupal config:export:content:type
● drupal config:export:view
● Manually add module dependencies to info.yml
● Balance config between install and optional
config subdirectories
12. A Little Something Extra
● Submodules for:
○ Formatting
○ Specialized functionality
○ Additional integrations
13. The Existing Arsenal
● Smart Date Starter Kit
● Smart Date Calendar Kit
● Quick Links
● Tasks
● Person
15. Try This At Home!
● composer create-project drupal/recommended-project test
● cd test
● lando init --recipe drupal9 --webroot web --name test --source cwd
● lando start
● composer require drush/drush
● lando drush site:install --account-pass=[my_secure_password]
--db-url=mysql://drupal9:drupal9@database:3306/drupal9 --site-name="Drupal 9 Demo" -y
● composer require drupal/gin:^3.0@alpha drupal/gin_toolbar:^1.0@beta drupal/admin_toolbar
drupal/pathauto
● lando drush theme:enable olivero gin && lando drush cset system.theme default olivero -y && lando
drush cset system.theme admin gin -y && lando drush cset gin.settings classic_toolbar 1 -y &&
lando drush en admin_toolbar admin_toolbar_tools gin_toolbar pathauto -y
Requires:
● Composer
● Lando
16. Smart Date Calendar Kit
● Dependencies
○ Smart Date Starter Kit
■ Smart Date
■ Add Content By Bundle
○ Fullcalendar View
● composer require drupal/smart_date_calendar_kit
lando drush en smart_date_calendar_kit -y
● Built to work with
multivalued and recurring
dates
● Multiple views displays
connected as tabs
17. Person
● Dependencies
○ Add Content By Bundle
○ Auto EntityLabel
● composer require drupal/person
drupal/auto_entitylabel:^3.0@beta
lando drush en person_olivero -y
● Manage and display info
about people
● View sorts alphabetically
by last name, grouped by
initial
18. Quick Links
● Dependencies
○ SVG Image Field Media Bundle
■ SVG Image Field
○ Add Content By Bundle
○ Display Link Plus
○ Draggable Views
○ Storage Entities
● composer require drupal/quick_links
lando drush en quick_links_olivero -y
● In-context management of
home-page links, with icons
● Submodule provides
formatting, places home
page block
19. Tasks
● Dependencies
○ Flag
○ Add Content By Bundle
○ Display Link Plus
○ Draggable Views
○ Storage Entities
● composer require drupal/tasks drupal/flag:^4.0@beta
lando drush en tasks_olivero -y
● Submodule allows for
managing the tasks of
others
● Submodule provides
formatting, places home
page block
● Optionally add
views_flag_refresh
21. Smart Date Registration Kit
● Dependencies
○ Smart Date
○ Add Content By Bundle
○ Field Group
○ Fullcalendar View
○ Inline Entity Form
○ Drupal Commerce
● Paid (or free) event
registration, with capacity
limits
● Event dates as product
variations, to support
multiple dates
● Submodule alters the
wording in form to create
event products
22. Smart Date Registration Kit
● git clone git@git.drupal.org:sandbox/surgemartin-3209977.git
smart_date_registration_kit
● composer require drupal/add_content_by_bundle drupal/commerce
drupal/field_group drupal/fullcalendar_view
drupal/inline_entity_form:^1.0@rc drupal/smart_date
● lando drush en commerce commerce_cart commerce_checkout
commerce_price commerce_product
● [create your commerce store, other commerce setup]
● Lando drush en smart_date_registration_kit
smart_date_registration_kit_form_tweaks
25. Acquia CMS Places Leaflet View
● Dependencies
○ Acquia CMS Place
■ Acquia CMS Image
■ Field Group
■ Address
■ Geocoder
○ Leaflet Views
■ Leaflet
● Plot Place nodes on a
Leaflet-based map
● Attachment to display
teasers below the map
32. The Importance of Being
Composable
● Maximise your organisation’s ability
to build, assemble and reassemble
core business elements
● Modular philosophy
33. Agile Web Development By Many Names
● MVP Web Development
○ Get to market as quickly as possible
○ Collect feedback
○ Iterate often
● Lean Startup
● Growth-Driven Design
35. Build-First Development
● For clients that find requirements definitions too abstract, start
by showing them basic versions of common website systems
● Easier to understand when seen visually
● Document when accepted
36. Resources!
● Config Kits project page
● Add a Robust Events System to Your Drupal Site in Minutes / DrupalCon North
America 2021
● Acquia CMS makes it easy to harness the power of Drupal
● Broken title in modal dialog when title is a render array