Updated on 15 March 2018
The big picture
Of code and (wo)mens
Drupal is based on a core that provides the kernel and its own modules and themes.
The core is maintained by a dedicated crew. It provides a starting point that can be extended by other projects maintained by the community: contributed modules, themes or distributions.
While you can append contributed modules and themes to the core on your own project, distributions are packaging them with the core with their own installation profile, to achieve a dedicated use case. Example: Drupal Commerce.
Distributions can also be extended by other projects. Example: add a new theme or module on Drupal Commerce.
Distributions provide site features and functions for a specific type of site as a single download containing Drupal core, contributed modules, themes, and pre-defined configuration. They make it possible to quickly set up a complex, use-specific site in fewer steps than if installing and configuring elements individually.
Drupal site building concepts
Full documentation is available on the Drupal 8 User Guide.
Here is a summary to understand the underlying infrastructure for the site builders.
Structural information and storage
Storage (persistence) is the responsibility of entities that can be
Content entity : stored on the database, used by any Drupal user.
Configuration entity : stored on configuration files, mostly used by the developer and the site builder.
We will focus here on the content entity concept.
Note that content entities can have several display modes (e.g. full and teaser).
Content type [/admin/structure/types] and node [/admin/content]
A node is the basic piece of content
Nodes can be from several types (known as “content types”), describing the business model: Article, Basic Page are coming out of the box, Event, Session, Training, Organization, … are customized.
Nodes can be created, edited and translated with the contributor role.
Taxonomy vocabulary [/admin/structure/taxonomy] and term
Taxonomy vocabularies are used for content (node, user) categorization
Each vocabulary is composed of terms
Terms can have an hierarchy and multiple parents
User [/admin/people] and role [/admin/people/roles]
Users are being used to access the Drupal backend
Users are grouped by roles
Roles can be cumulated
Each role has a set of permissions
Blocks are being used to handle page display exceptions
They can appear on regions, defined by themes
Their display can be based on conditions (by path inclusion or exclusion, by role, …)
Fields can specialize content types, taxonomy vocabularies, users and blocks.
Fields can be shared among the same entity type (you can share the field Image with Basic Page and Article), allows one single instance on the same content type (you cannot create two image fields with the same machine name on the same content type, but you can create a field_image and a field_logo).
Fields are not shared among different entity types, so they can adopt the same machine name: you can create a field_image for vocabularies, even if it already exists for content types.
Some are simple (text, long text, float) while other can be composite (address)
Fields have cardinality (one to many values)
Fields can be used to reference any another entity (the Article content type can reference a Article Type vocabulary).
Fields can be defined as sub structure with some modules (e.g. Field Collection or Paragraphs) that can also have cardinality. Note that Field Collection is probably on its way to be deprecated.
Fields can be synced among content translation or be defined as translatable
Views are SQL query builders that are primarily focusing on one entity type.
They can use filters that are implicit or exposed to the user, relationships and much more...
Translation occurs at several levels
Content entity translation
Configuration entity translation
User interface translation : system global, like button labels or pagination
Menus are being used for frontend or backend navigation (e.g. About in the footer, Main navigation, User account menu, ...).
Available once logged in as admin
Content edition: frontend and backend views
Content creation: backend view only
Backend view provides filtering
Single node edit
HTML editor : use “Paste from Word” feature to avoid HTML issues
HTML (bold, italic, headings, ...) is interpreted with the frontend guidelines (no user defined styles)
Automatic summary (for lists) is by default, can be overridden by a custom summary for the body field or other fields defined with this feature
Inline images should be avoided as much as possible (no automatic crop / resize), prefer image fields.
Menu item creation shortcut : menu title can be overridden (shortened version). Menu item description and sort is only available via the Menu interface (“Structure > Menu’s”).
Content list (backend view) [/admin/content]
Can be filtered (published status, content type, title, language)
Can be sorted by column (title, type, ...)
Bulk actions are available (delete, unpublish, …)
A note about the naming conventions
There are only two hard things in Computer Science: cache invalidation and naming things.
-- Phil Karlton
Historically, depending on the context (user interface, code, ...) we can find several synonyms for Drupal data structures.
Content type can have several bundles (Page, Article) that are producing nodes.
We should talk about Entity type of Node for a Content type and Node type for a bundle.
This is the case in the code.
Taxonomy can have several vocabularies that are producing Taxonomy terms.
We should talk about Entity type of Term and Term type.
Display and view modes
Entities can have several Display modes (Teaser, ...). In some situations they are called View modes.
Do not get confused with the Views that are SQL query builders.
Title and name
Node entities have title while Taxonomy Term have name.
Drupal 8 User Guide
Drupalize.me provides free video tutorials to get started with Drupal 8, one of the best resources to get solid site building knowledges.
- Chapter 1. Understanding Drupal
- Chapter 2. Planning Your Site
- Chapter 3. Installation
- Chapter 4. Basic Site Configuration
- Chapter 5. Basic Page Management
- Chapter 6. Setting Up Content Structure
- Chapter 7. Managing User Accounts
- Chapter 8. Blocks
- Chapter 9. Creating Listings with Views
- Chapter 10. Making Your Site Multilingual
- Chapter 11. Extending and Customizing Your Site
- Chapter 12. Preventing and Fixing Problems
- Chapter 13. Security and Maintenance
- Chapter 14. Final Thoughts