This is an attempt to document how I used Drupal, the popular CMS, to create the website for the Tampa Bay Independent Media Center. While my goal was a community-based news site, I believe this can be useful for anyone looking to create a dynamic yet simple and clean website. No knowledge of HTML, CSS, PHP or other markup/programming language is basically necessary, as I was able to build this entire website by simply configuring Drupal from the graphical administrative interface (besides some small optional hacks for aesthetical purposes).
Installing Drupal is very straightforward. Many hosts even come with Fantastico, which can automatically install Drupal. Many times it does come with an outdated version however, so I would recommend just installing manually. This can be easily done by checking out this brief how-to (if you don’t want to mess with SSH or don’t have shell access, you can skip step 1 and simply unpack the files on your local computer with WinRAR and upload them with a FTP client to your host).
I use A2hosting.com, which has been around for a while, seems to have decent prices and good support (I have since used the “Walmarts” of hosting, Godaddy and Dreamhost, and found that while A2hosting.com is a few bucks more expensive, it is noticeably better in terms of server response and tech support). I also found this 20% discount coupon, “20PERCENTOFF,” which can be entered at checkout. For Windows, I recommend the free FTP client FileZilla for uploading files to your host and HTML-Kit for editing files once you upload them to your host (to edit files on your host go to Workspace>>Add Folder / FTP Server in HTML-Kit).
A Brief Introduction to Drupal Terminology
Drupal appeared a little overwhelming at first. Not only does it have a myriad of options and potential customizations, but it also uses a lot of proprietary terms. Below I will attempt some clarification, but don’t worry about immediately mastering these:
- Nodes: a unit of generated content, like a page or post
- Modules: plugins that are created by the Drupal community and hosted on Drupal’s website
- Theme: a “skin” that affects the graphical rendering of the site (colors, layout, etc.)
- Block: a section of the website that is able to contain content; by default there is a navigation sidebar and a top menu
- Taxonomy: Drupal’s implementation of categories, featuring customizable hierarchy (like sub-categories or mere lists) and symmetry (related categories)
Selecting a Theme
A theme that is simple and well-coded will make future customizations much easier. Since Drupal is continually being updated to fix bugs and add new features, an up to date theme is important as well. Themes are hosted at drupal.org/project/themes and themegarden.org has live previews of many themes. Once you have a selected theme, upload it to /public_html/sites/all/themes/themename on your host.
Recommended Modules
One of the strongest points of Drupal is its customizability. There are hundreds of community-developed modules, extending many features and allowing much flexibility. I would recommend using the latest dev version of modules if available, since they usually include the most recent bug fixes. When you download a module, make sure you check the README.txt so you don’t miss any required installation or configuration instructions (like enabling permissions, see the next section). The modules I am currently using are:
- Actions: automatically executes an action, like sending an email, when certain conditions are met
- Administration Menu: rather than using the default navigation menu to access the administrative back end, this creates a small and fast AJAX version of the administration menu located on the top of your site. To enable with my theme, I had edit my theme’s page.tpl.php file per the module’s instructions.
- Block Cache: Drupal has caching built in for anonymous users, but this allows the caching of blocks. I use it for my block that contains javascript to make a collapsible list of all the collectives in the Indymedia network.
- Calendar: used with the Views and Event module for a calendar of events
- Content Construction Kit: aka CCK, allows custom content types (like articles and events) and custom fields (like a “source” text box for users to provide the original link from where they got an article)
- Comment Upload: provides the ability to add attachments in a comment
- Date: necessary for the Event module
- Embedded Field: builds off of CCK to allow media like You Tube videos to be embedded
- Event: creates a custom “event” content type
- Form Store: used with MyCaptcha to put those annoying tests on custom content types (events and articles) to stop automated spam bots
- Form Filter: removes unwanted things from forms without hacking code
- Hidden: rather than deleting unwanted user-submitted content, this “hides” (i.e. moves) content either by filters, user reporting, or manually. Since the content remains accessible via a “Hidden” link in the navigation menu, it’s a good way to ensure transparency and prevent abuse of admin privileges.
- Javascript Tools: a collection of modules that enable AJAX in various ways, I use it mainly for the AJAX search
- Location: allows location info to be entered for an event (or any other content type) and then generates a link to a google map
- Login Menu: adds a Login link on the navigation menu that shows just for users that are not logged in
- MyCaptcha: see the Form Store module above
- Override Node Options: creates a permission for a special class of users (defined via roles) to publish a story to the front page, which is disabled for all users except admins by default
- Pathauto: automatically generates a custom URL alias based on the title of the content, i.e. rather than http://sitename.com/node/234/ a story titled “U.S. Government Crumbles” will be http://sitename.com/article/us-government-crumbles
- Persistent Login: adds a “Remember me” option
- Safe HTML: filters posts to make them look nice
- Search 404: automatically performs a search and redirects to a match rather than display 404 error for pages not found
- Similar by Terms: creates a “Similar” block below articles
- Taxonomy Manager: uses AJAX to overhaul the clunky interface for managing Taxonomy
- TinyMCE: a rich text editor replacement (I now like FCKeditor better for its easier setup and customizations)
- Update Status: checks for updates for most modules
- Upload Preview: adds a preview when attaching images and then displays the preview rather than just listing attachments
- Views: creates all kinds of custom blocks and pages. I use it for the Eventlist and Newswire
- Vote Up Down Package: adds digg-like voting. I use this to automatically promote a story to the front page if it receives a certain number of yes votes.
- Voting Actions: used in conjunction with the above
- XML Sitemap: creates a sitemap to for better interaction with search engines
Creating Content Types and Taxonomy
After installing the modules, I created an ‘article’ and ‘event’ content type in Content management>>Content type. I changed “Default options” under “Workflow” to “Published” and “Create new revision” so when an article or event is submitted it will go to the Newswire/Eventlist on the side and create a new revision by default when it is edited, allowing anyone with the “view revisions” permission to see any changes.
In Content management>>Categories, I created a ‘topic’ and ‘issue’ categories for articles and events. Using the Taxonomy Manager module in Content management>>Taxonomy Manager (if you can’t see this see below for adding the proper permissions), I added terms or sub-categories for each. See my list here.
Roles and Permissions
Many modules require the correct permissions to administer or even just work. The first thing I did was create an admin role in User management>>Roles and checked all available permissions in User management>>Access control. I also gave anonymous users all the available view/access permissions (except “access administration pages” of course) and create permissions for articles, events, and forum topics, except for editing their own content. This is because Drupal does not distinguish between one unauthenticated user from the next (there is a hack somewhere to fix this if you really want to though). I gave all the same permissions for authenticated users plus allowing them to edit their own content.
Using Views to Create Dynamic Blocks
I created the Newswire, a list of incoming user-submitted stories, by going to Site building>>Views>>Add. In the page view of the Newswire, I set view type to teaser list and used a pager so it would not list all the stories on a single page. For the block, I used a list view with a ‘more link’ as well as fields set to node: title, filters to node: front page equals no, node type is article, and node: published equals yes, and sort criteria set to descending.
For the Eventlist, I just provided a block, setting the page view as a calendar separately. View type is list view with a ‘more link’ as well as fields set to node: title and event: start time as short date, arguments to calendar: year display all values, filters to node: type is event and event: start date is greater than now, and sort criteria set to event: start time ascending. To properly display the calendar of events, I enabled the default calendar view located under “Default Views” in Site building>>Views>>List, adding the field event: start time as short date and node: type is event filter, removing the filter node: published equals yes.
Maintenance
Keeping the site well-oiled can prevent potential interruptions and headaches. Cron must be ran every so often to index all the content for Search and Aggregator (used for RSS feeds). If caching is enabled, cron will also refresh this. Through my host’s cPanel, I set cron to run every 4 hours with the command “curl –silent –compressed http://tampabay.indymedia.org/cron.php”.
Keeping modules up to date is key to ensure the site is always performing well and necessary to patch bugs. The Update Status module automatically checks for updates after cron runs, which can be viewed in Logs>>Available updates.
When updating a module, simply delete the old version’s folder (ensuring any customizations are backed up) and upload the new version with a FTP client. Be sure to check Logs>>Status report in case Drupal’s database needs to be updated by running update.php.
Conclusion
There are many more minor settings and customizatons I did to get Tampabay Indymedia up to its current state, but many of these are unique to the site’s purpose and my aesthetical tastes. The above guide should be sufficient to get a nice site up and running. If not, please feel free to comment below. Also, I have found the documentation and many people in the community at drupal.org to be extremely helpful. Good luck and have fun with Drupal!


13 comments
Comments feed for this article
March 3, 2008 at 2:44 am
drupalina
hi,
I’m trying to make an indymedia-esque site too
thanks for a nice and streigt forward tutorial.
I’m wondering which theme di you use??? Looks very neat and easy for the readers.
And I’m also wondering how did you set up IP anonymity for the authors??? I mean so that the IP addresses of the authors and users cannot be traced
many thanks
March 3, 2008 at 3:44 am
rob
Oh that’s great, what Indymedia-esque site are you building?
I used the sky theme. I also like & use on other sites some of the RoopleThemes for being simple, clean and easy to configure as well.
I actually don’t have IP anonymity. Since I’m using cheap shared hosting, I don’t have full control over the server. If you do, there is a module for apache to do this:
http://dev.riseup.net/privacy/apache/
I have read about a hack that removes the IP address from Drupal’s logs, but this still leaves them in apache. I would search/ask around drupal.org and the imc-drupal-dev list.
I’m glad my experiences could be of help to you. Let me know how it goes or if I can help in any other way.
Take care,
Rob
March 3, 2008 at 7:58 am
drupalina
Thanks Rob, thanks for a prompt reply…
the site that I’m trying to put together is for country (which I’d rather not nmention, but it’s all over the news and the fascists are taking over) … and all the media sources are being shut down. They don’t have their own IMC, so I’m trying to put something togethr within days. And this is also why Anonyminy is very important to me.
I asked for this question on Anonymity in indymedia group on drupal.org… waiting to see what sort of replies I get,
I’m building it in 5.7 and 6.1 simultaneously, so as to compare on pros/cons. And I’m trying to make it in Drupal 6.1 – to avoid all the the hassle of future upgrade.
It’s not strictly speaking an Indymedia… because like your version, it will be governed by the Digg-style Up/Down votes (which are still not available in 6.x — and this is the main reason why I might choose to go with 5.7
I still have to find a lite solution for a WYSIWYG, images, video-embedding and audio … but for now the important thing is that there is at least some information outlet…. even if it’s just basic text.
Sky theme looks really nice… Thanks. I think I’m gonna go with that for now, even though it doesn’t seems to have the Right sidebar.
Do you know any more resources that can tell me about Anonymity of authors … and also about what to do is the site is attacked and taken down.
Many thanks!!!
March 3, 2008 at 3:16 pm
rob
It sounds like your site is sorely needed–that’s great that you are doing it.
Have you tried FCKeditor? I have since built a few more Drupal sites and like it better than TinyMCE. Seems like its a little easier to install and customize.
If you are really worried about a security compromise with your site, have you looked into a good host that won’t turn over your data to authorities at the first sign of trouble (maybe like https://www.nearlyfreespeech.net)?
There are some options discussed for disabling IP logging at http://drupal.org/node/19690
I have tried to build a test site in Drupal 6, thinking like you that I could avoid future upgrades, but found that many of the modules I needed either didn’t have releases yet for Drupal 6 or they were very buggy. One thing with Drupal is that development is very active, and it seems like there are always upgrades that I can do with my sites. I have kind of learned to relax a bit with always needing to have the latest version, since I was spending time everyday upgrading something at one point.
April 5, 2008 at 2:36 pm
drupalina
Hi Rob,
…so it has been a month of intense building and testing… and I’d say I’m getting very close to launching the first version of the site (keeping fingers crossed)…
Thanks a bunch for helping me out and showing some important links!
But I have one major problem and I need you to tell me how did you manage to sort it out?
Basically, the Voting Actions module doesn’t promote a node to the front page. Did you manage to get it to work?
I’ve set up a content type (published, un-promoted by default) and if the sum of votes is greater or equal to 4 (for now) then the voting action is supposed to promote it to the front page.
But it’s not happening!
I’ve raised an issue with Voting Actions module here http://drupal.org/node/213104 , but they never reply.
I wonder how you managed to get that voting and promoting system working?
April 5, 2008 at 4:33 pm
drupalina
also… Are you sure you’re using FCK_editor on Tampa Bay indymedia site? I looked at it, it seems like you’re actually using TinyMCE. Am I right?
My main concern is to find a good WYSIWYG editor that will easily handle “Ctrl+V” function (because I’m sure people will write their articles in Word with bold, italics etc) and then come to my site and press Ctrl+V.
I’m currently using TinyMCE, but it really breaks lines into weird paragraphs… in a very very strange manner.
July 1, 2008 at 9:22 pm
Bobby Meade
Dear Rob,
Your readership has been concealed from you. IMC is mostly automatic to begin with. To come and delete unwanted posts a few times a day is no big deal. It was good while it lasted though. You have to understand that Miami is trying to control all access to Florida via the Internet. Bobby Meade
July 2, 2008 at 1:02 pm
Bobby Meade
Dear Rob,
Are you listening to the Hitlerites or are you one of them? Why would one person be in charge of an IMC to begin with? “Argue for your limitations and they are yours!” Whether you live or die, the only thing that matters is how you dealt with the Word of the Lord. His words are a “fire” that cannot be quenched. Sincerely, Bobby Meade The Lord’s
August 9, 2008 at 2:08 am
rob
Bobby, I appreciate your comments but can you please stop posting entire stories here? I think if you want to link to stuff you’ve written that’s cool, but these lengthy posts of your’s really make it hard to see comments below you. I’d like to keep it available for anyone wanting to actually talk about Indymedia and Drupal. Thanks.
August 13, 2008 at 2:17 am
Ryan Moir(Fake)
Im affraid I’m being watched and folloed so I’ve shedded my name. Just works out better for my nine to five. Anywho Im interested Im in sarasota I saw a video you all did earlier this year after the taping however I was followed home and have had my email accounts fished by lots including homosexual escort fronts and narcs. Ive been posting a blog on what I personally would begin writing on on my myspace but Im affriad. But I want to start doing my part. I used to in college but i was caught up playing college hoops so now I have a big debt of talking and complaining to back up and I ddont really know where to start and I have chosen mainly to be distracted into comfortability by the choice herb. SO any way I can at the very least find protests in my area or in florida pertaining to the things that have failed to be said I’m down. Help me help myself and my community.
August 13, 2008 at 2:18 am
Ryan Moir
website is…
August 23, 2008 at 3:24 pm
Bobby Meade
Hey Rob! Who told you that there was a problem with readership on Tampa IMC? Some sh*thead? I’m sure! There is no way that you could confrim what was happening if you listen to such people! IMC is supposed to be free of the stupidity of such people. Why don’t you go do computer logs in the area and see who is on line? Get your head straight!
Could Give McCain the Reagan Treatment
author: Bobby Meade
Aug 23, 2008 07:24
Remember when Reagan allegedly fell off his horse? There was allegedly a “snow storm” before that happened followed by a mist. It was dry ice, and the mist was CO2. The horse was overcome too! There was no attempt to revive Reagan. Try to find a record of what happened. That’s a surefire way to kill the brain! Deprive it of oxygen. No brain, no McCain! I would do no such thing! I save Bush Nazis!
Saving Bush Nazis
gloucs | peace | news report Friday August 22, 2008 16:26 by KoolKat – The Lord’s
Thafe Thaviour is Here! I Will Save Your Sh*theads!
You Feel Thafe? Aug 20, 2008 14:33
GHW Bush keeps saying that I have been murdering sh*theads! In fulfillment of Isaiah 14’s prophecies about the “King” of Babylon, GHW Bush is the one who is murdering “his own people” by having them do the most dumb*ss stuff that gets them killed. I save sh*theads! I will save brainless Bristol; brainless Britain; and more!
End of the Bush Nazi Olympics
…8/23 After they removed excerpts from this story from the NBC communication site, I realized that they are part of Nazi Bush Communications just as the other networks are. Have they convinced you that the Olympics are all about volleyball, synchronized diving, BMX, and torturing horses? They do so well manipulating the careers of swimmers because the swimmer is in a “closed environment”. If these Nazis weren’t censoring every damn thing I say, you would have known 7 years ago about how they dumped a handful of asbestoes and iron dust on me in Teagle Pool on Cornell campus, instantly scarring my lungs. You would know by name all of the people that were involved in forcing me off that campus. No one can oppose what these sh*theads do with the media or toxic substances to prolong the rule of their stupidity, for they will lock you up for talking about such stuff. Maybe the best way to teach them is to send their own people after them to throw handful after handful of stuff like anthrax, arsenic, cyanide, and pesticides in their faces until they understand what this “joke” is all about, especially these Olympians who have benefitted from embracing such stupidity.
… All forums, especially military forums, chat rooms, news.com sites, and many IMCs seem to be infested with Bush Nazis who feign distress and get rid of anyone who publishes information about the Bush Nazis. Go to chat rooms and witness what they do there. The hackers talk in a code of gibberish, thinking that no one can understand what they are up to. Recently they have apparently disabled Austin, N. Texas, New Orleans, Maine, Buffalo, Oklahoma, St. Louis, Richmond, Tampa, Madison, most Canadian, and many European IMCs in an attempt to protect the stupidity of the Bush Nazis. Note that a lot of com. sites ban words such as “damn”, saying that it is profane when it is not. Then when you remove the word, it still says that it is there, and you cannot post! 8/23 The Bush Nazis have also messed with the definitions of copyright and public domain. All IMC posts are copyrighted! You can use excerpts from them, but not out-of-context. Significant excerpts must be accreditted to the author. All IMC posts are copyrighted and in the public domain, meaning that they are available for public use without charge. Any copyrighted works, including newspapers can be reproduced without charge as long as you label them “For Educational Purposes Only”, and you do not make any money on them. Copyright laws are very simple and unchanging, yet the Bush Nazis have tried to obfuscate them by writing tons of gibberish on them.
November 7, 2008 at 3:14 pm
Druppel
Wish i had found this when i started off with drupal. Good quote though with the automated cron. I could never figure cron thing that out. Got it running now. Site runs more smooth now.
Thanks for the drupal list.
Take care