I'm creating, say, a movie database. Most modules I saw (like Quotes) use Drupal nodes with some custom fields added. I found that it is possible to create totally custom solution starting with MENU_CALLBACK declaration in hook_menu, form generation, form_submit and so fourth. But now I am not so sure of the way I've chosen.
I thought that I didn't need all that additional fields and capabilities node has, like revisions, body, teaser etc. Too much overkill...
Could you please tell me the benefits of creating custom nodes one per each movie over my custom solution?

Comments

coreyp_1’s picture

There are a couple of factors involved.

First, Drupal's node system provides a uniform basis of data for other modules to interact with. For example, if you use Drupal to create the node for the movie, for which CCK is probably more than sufficient, then all you need to add more features is to add more modules. If you want a five-star rating system, there's a module for that. If you want people to be able to leave comments, there's a (core) module for that. If you want automatic lists of your movies by category, there's a module for that (taxonomy + views). Do you want people to be able to write reviews, and have the reviews rated by others? That's another possibility, using another node type for the review, and one of the relationship modules. You can also control who has access to the movie nodes, as well as who has the ability to edit them, etc. built in. The list truly goes on and on.

Now, let's say that you create your own system for storing movies. You can add the ratings, but you'll have to code it yourself. You can add comments, but again, you'll be coding it yourself. You will truly have absolute control in the design, but you'll also be bogged down in re-creating already existing functionality.

Long story short: there are situations when creating custom functionality is necessary, but most of the time, everything you want to accomplish can be done using elements already available. You may have a little custom coding and theming to get the interface streamlined like you want it to be, but that surely beats hours of re-inventing the wheel.

As for the elements of a node you don't want to use... just don't use them. Revisions can be turned off by default for different node types. As for the teaser vs. body thing, think of it as two different ways to display information. With the contemplate module, you can have an amazing degree of control, whether viewing the movie in a list, or as a full page.

Just some stuff to think about.

- Corey