Drupal is an amazing CMS framework engine, allows us to manage complex information architectures with minimal effort. To build Drupal site effectively, one should learn important, non-trivial abstrations and learn when and how to use them effectivey. Mastering those abstractions is essential in order to design the architecture of any non-trivial Drupal site. Not using them has the risk of re-inventing the wheel and creating a non-maintainable site.
So start by grasping the following abstractions:
- Nodes - most content is stored on the database as nodes. They are the most common type of entity in Drupal.
- Content Types - each node belongs to a content type (e.g. Article, News Item), which defines the fields available for that node.
- Taxonomy - nodes may be classified according to taxonomy terms (also called tags).
- Fields may be attached to nodes, users, taxonomy terms, comments and most other entities.
- Each field has a field type - e.g. Integer, Text, Image, Media, Longtext, Date.
- Drupal is extremely extendable - E.g. more field types may be defined by addon modules.
- When using a field, one may select which widget to use - e.g. an integer ield may also be displayed as a selection list.
- Views - allows us to filter lists of data and format them to presentation in many interesting ways - blocks, reports, slideshows and sliders, tabs and collapsible regions.
- Contexts - allows us to define which blocks will be displayed according to various rules (user's role, language, and page URL, to name a few).
- Panels - allows us to build landing pages (or page parts) composed from many regions (called panes).
- Rules - may define business logic (e.g. when a new node of a certain type is saved, send email.
- Entities - Are small data items which may have fields. They are the basic object in Drupal. Nodes are the most common entities. Other entities are users and taxonomy terms, and you may define your own.
- Roles - each user belongs to one or more roles. The roles define the user's permissions.
- Themes: Drupal's information architecture is separate from the user interface - the same data may be presented in different Themes.