When this website was nothing more than an idea in my head, I planned to build it on Xaraya, which has been designed to handle large corporate and community sites. However, it soon showed that Xaraya was just too comlicated to get any reasonable results in adequate time.
Drupal on the other hand was so simple that most things seemed trivial. It certainly lacks standardization and a lot of the modules you find on the drupal site have crappy code in them, but the friendly URL scheme and the wealth of available modules finally convinced me that this was the way to go.
Node Organization
I've thought long and hard about how to best use Drupal's node system and flexible category trees. What I ended up with were two main category trees:
- Topics - Used to globally categorize all nodes so users can quickly locate everything my site has to offer for any particular topic.
- Pages - Used for the static site structure. I wanted to organize the static content of my site in a tree, but drupal nodes normally have no relation to each other. The pages tree allows me to still put static site content into a tree by means of the taxonomy module.
There are four major node types I'm using:
- story - An item in the site news. Can be browsed in the news section.
- weblink - A weblink is a very simple node that contains a title, description and URL of another site it links to. Weblinks are categories using the global topics hierarchy.
- article - Articles are guides, tutorials, code snippets, tips and other loose content that is published on the site. Articles are categorized in the global topics hierarchy.
- page - Pages are intended to be used for static content on this site, such as the welcome page. Basically, they are no different from articles, only that they have a place in the pages tree.
Drupal Modules
During the construction phase, I kept two drupal installations in parallel, one as a test site and one for putting together what should finally become nuclex.org. If a module seemed interesting, I installed it on the test site first, and when I was pleased with the results, I moved it over to the production site. Most modules have been installed as-is, but some needed minor modifications to do what I had in mind. Here's the list of modules currently active:
-
aggregator
Collects and displays news from the news feeds of other sites. Keeps google entertained and your visitors informed ;) -
article (modified)
The articles module displays the taxonomy terms in a nice tree. The only modification I've done to this module is letting in show only one specific node type. -
autotimezone
This module automatically detects a user's timezone using JavaScript -
contact
Provides a site-wide contact form and inter-user messaging. -
disknode (modified)
Manages access to external files. Modified so that file nodes are called 'file' instead of 'disknode'. -
excerpt
Allows you to enter your own summary in the content types of your choice. -
filerequest
Fixes the lousy drupal file download implementation. -
forum
A discussion forum. Any public site would be dead meat without an active community. -
freelinking
Allows you to use Wiki-like links in your code to point the reader to other articles on the site or the net. -
geshifilter
Highlights source code that is enclosed by special tags. -
janode (modified)
Provides a new node type that stores links to other web sites in the normal drupal node tree. Modified so the node is named "weblink node" instead of "janode node", which seemed confusing. -
paging
Enables you to split long articles into multiple parts by placing a simple page break marker into the articles. -
quotes
Used to display motivating or funny quotes on some of the pages. -
robotstxt
Stories a different robots.txt for each site in a multi-site environment. Or simply saves you from writing one yourself :) -
search
Searches the entire site if my users are looking for something they can't find on their own. -
story (modified)
This site runs a modified story module where a search & replace has been performed to rename "story" to "article". -
taxonomy_breadcrumbs
Shows the users where in the taxonomy tree he is when a term is viewed. -
taxonomy_context
Kinda like the opposite of taxonomy_breadcrumbs, this module shows all childs when a taxonomy term is viewed. -
taxonomy_menu (modified)
Puts your taxonomy trees into the navigation menu of your site. Useful for arranging pages in a static tree. The only modification done is to rename this entire module to 'navigator' for nicer and more obvious URLs. -
tinymce
Visual editor so my users don't have to enter cryptic html or bbcode if they don't want to.