A basic structure for teaching (or learning) Drupal 8.x/9.x with lesson bundles. Bundles can/should be taught independently.
- Drupal 8.x+ lessons
- Simple explanation
- Dries Buyaert, the Drupal "leader"
- Who uses Drupal
- (System) Requirements
- Drupal core
- Basic knowledge required for development (php, server, database, yaml, html, css)
- Drupal vs "Others"
- Several ways to do the same thing
- Think with Drupal
- Why Drupal is a "more expensive" CMS
- Why is Drupal hard
- Drupal Frontend vs Backend
- Architecture
- Code structure
- Entities
- Bundles
- Blocks
- Fields
- Nodes
- Themes
- Regions
- Modules
- Libraries
- System files
- Users and Roles
- Configuration
- Distributions (Profiles)
- Drupal versions
- What are modules
- Where to find modules
- How to create modules
- Module issues etc
- Submit patches and MR to modules
- Publish modules
- Types of entities
- Data vs Configuration entities
- Create new entities
- Entity factory (bundles, fields, view modes, form modes)
- Content types (Nodes)
- Entities on the database
- The Block management UI
- Drupal configuration UI
- Register new blocks
- Create custom Block Plugins on code
- Users, Roles and permissions
- Permissions UI
- Register new permissions
- User Roles
- Assign Users to Roles
- What are Views
- Create new Views
- Views terminology
- Advanced Views
- Core JSON:API
- Create resources
- Authentication
- Data Serialization
- Extend JSON:API
- Core REST module
- JS frontend libraries with Drupal
- Build a Drupal form (how to)
- Webform module
- Entityform module
- Contact forms
- Node forms
- Get Drupal themes
- The theme anatomy
- Base themes and inheritance
- Create a new theme
- Theme settings
- (Theme) layouts and breakpoints
- Twig templates
- Render arrays
- Controllers
- Theme templates and theme hooks
- BEM, SMACSS and other CSS methodologies within Drupal
- Attach CSS and JS (internal, external) with libraries
- Working with JS (behaviors etc)
- Useful modules for theming (kint, webprofiler, twig related etc)
- Installing Drupal
- IDE
- Working environment
- Working with composer and git
- Drupal configuration (move a site to test, staging, live etc)
- Drush (command line tool)
- Drupal-Console (command line tool)
- Debug Drupal
- Testing Drupal
- Working with the database
- Update/upgrade Drupal core & modules
- Backup Drupal
- Applying and creating patches
- Using simplytest.me
- Useful modules for development
- Migration to Drupal
- Using (external) libraries
- Multilingual Drupal
- Image styles and picture breakpoints
- Media and files management
- Plugins
- Symfony services
- Routing
- Menus
- Text filters and CKEditor
- Contextual links
- What is Drupal.org
- Community and Accounts
- Drupal documentation
- Ask for help and contribute
- Meetups and events
- Drupal association
- Drupal APIs
- The Drupal initiatives
- Publish projects on D.O. - procedure
- Keep it simple, reduce complexity
- Less is better (how to avoid contrib modules)
- Stick with the default (core) backend theme (seven)
- How to sell Drupal
- The Drupal way
- Learn by doing
- Long term investment
- Best/top Drupal modules
- Which Drupal version should I use
- How to search for projects on D.O.
- Create your Distribution
- Study the Drupal Cases on D.O.
- Search more, develop less
- drupal.org/documentation
- Drupal 8.x User Guide
- Drupal 8.x User Guide downloads & translations
- drupalize.me
- youtube.com/@DrupalAssociation/playlists
- Video: Surviving the Drupal Learning Curve, 2020
- Video: Why is Drupal So Hard to Learn, 2017
- drupal.tv - Video collections
- debugacademy.com
- Acquia Certification Study Guides
- LevelUpTuts - Drupal 8 Basics
- OSTraining Will Release 200 Drupal 8 Videos for Free
- redcrackle.com/blog/drupal-8/free-tutorials-list
- Drupal 10 Development Cookbook - Packt Book
- Getting Started with Drupal Workshop, Drupal.org
- Study Drupal 8 for Drupal 8 Developer Cert (2019)
- PHP: The Right Way
- Create a simple website with 5 pages and 4 custom blocks
- Create an image gallery website
- Create a multiuser blog
- Drupal as a Backend CMS (BaaS)