I'm a Java programmer trying to get started with Drupal. Specifically, I want to be able to create custom pages. More specifically, I want to understand the nuts and bolts of how this is done (I'm an engineer; it's just my nature) I have a little PHP experience and I've configured Drupal installations for years. I'm aware of many of the modules that help make this process easier (such as the Views module), but again--I'm interested in working through the nuts and bolts myself.
I'm not specifically interested in creating new Drupal modules, unless that is the only way to create new pages in Drupal. My primary interest is in being able to create a custom page. Let me give a few examples:
- I have a db of funny quotes. I'd like to be able to use Drupal to display a selected quote AND HAVE COMPLETE CONTROL OVER THE PAGE LAYOUT (and again--not using an existing module; I want to understand the inner workings). Don't ask why I'd want to use Drupal for this, or suggest alternate methods of accomplishing it. It's a made up example to illustrate what I'm wanting to learn. :-)
- This is a less made up example. I'd like to create a "newsletter" where the site editors can select submitted content and customize layout (all in a custom UI) and then create a page with that content, one suitable for either viewing in a browser or printing. Sort of a "desktop publishing" concept for Drupal. Again, don't suggest ways of accomplishing this. It's an example to illustrate what I'm wanting to learn.
Basically, I like Drupal's permissioning, modularity, and content management but I'd like to learn how to control display (as complete control over display as possible). The problem is that I don't even know what topics to start learning. Creating modules? Themeing? Something else? What is the mechanism or system that I need to learn to be able to completely control how Drupal pages are rendered?
Corollary question: does such control (not limited to just a block or region, but including menus, headers, footers, and everything visible on the page) require modifying the Drupal code directly or can it all be done in the theme/module systems?