Organizing content in Drupal can be very liberating -- or very frustrating, depending on what methods you're used to using.
Almost all information in Drupal is stored as a 'node', the basic unit of content. By default, there is no hierarchy or structure imposed on these nodes: they do not reside in specific 'sections' of your site, and different kinds of nodes (images, blog posts, news articles, etc.) are not automatically grouped or sorted into different groups. Rather than hard-coding specific hierarchies or styles of display, Drupal treats your content as a giant soup, with each piece of content having properties like a title and an author, a 'published' flag, a publication date, and so on. Specific kinds of pages, specific sections of your site, and so on are created by pulling up any content with certain properties and listing it.
Some examples can help clarify this concept.
- Default front page
The default front page of a Drupal site (http://www.example.com/node) is a blog-style list of the latest stories posted. This simply pulls up any content nodes with both the 'published' and 'promoted to front page' flags set to true. If any pieces of content also have the 'sticky' flag set to true, they'll be moved to the top of the list, which is otherwise sorted by the date the content was posted. Different content types can be configured to have these flags on or off by default, and different user roles (editors, authors, etc.) may be given permission to override these defaults on a per-post basis. In a stock installation of Drupal, 'story' content has the 'Published to front page' flag set to true by default, while 'page' content (often used for 'about us' information, and so on) does not.
- Organizing content by taxonomy
The taxonomy module has a number of uses, one of which is to allow keywords to be used to define sections, categories, and different types of content. For example, you might use taxonomy to set up a list of topics that news stories can be filed under. When the Taxonomy module is used in this way, the descriptive terms associated with a piece of content become just another property to use when organizing. The Taxonomy module provides a dedicated listing page for each one of these descriptive terms, displaying all the content associated with the term.
- Organizing content in blog style
The Blog module implements group blogging features with just two additions: a custom 'blog' content type, and a set of new listing pages that show only blog entries, and blog entries by specific authors. When the module is enabled, http://www.example.com/blog becomes a sitewide blog, and http://www.example.com/blog/1 becomes the blog, filtered to show only posts by user #1.
- Organizing content using Views
The Views module is a popular contributed (third-party) module that allows you to display content in pages and sidebar blocks using a wide range of criteria. For example, a list of the top 10 pieces of content that are published, but NOT 'page' content -- can be sorted by the number of comments they've received and used as a 'most popular content' section.
The important concept to remember is that all content 'nodes' in Drupal are treated equally. Different sections of the site, and different kinds of organizational structures, are built by filtering down content based on properties like number of comments, creation date, author, associated keywords, and so on. You can have menu links to stand alone pages aliases with path module stand alone or nested. By planning your structure -- and sometimes adding new contributed modules that layer additional properties on to your content nodes -- you can build complex and powerful sites that grow with your organizational needs.
Content laid out by different custom types can also be a benefit in organizing and searching content in the content manager. Filtering by type makes finding a node much simpler in a website with many nodes.
Some other benefits of using different node types:
- Easier block visibility - display a block when the node viewed has this type
- Different URL schemes when auto-naming - EG: /node-type/*
- Theming by content type - content-type.tpl.php
Often a KISS (Keep it simple stupid) approach to designing content will be the best and allow easier maintenance or changes in the future.