Intro to Drupal

Intro to Drupal: Build a Simple CMS

Drupal’s popularity has lately been rising. It’s a great platform for setting up content management systems and community driven sites. Here, I’ll give a general overview of Drupal and build a simple site for a fake client. We’ll begin with outlining the client’s needs, installing and configuring a few modules, creating user roles and assigning permissions, and finally we’ll add in some content. We won’t go into theming, as it’s a bit out of the scope of this article.


1. A fake client

Let’s start off with a fake client.

SmartMarks is a small marketing consulting firm, with 4 employees. Each employee would like their own blog. The site will need a few pages in addition to the blogs:

  • Home
  • About
  • Contact
  • Links
  • Blogs

Shannon, the business owner, wants full control over the site. The rest of the employees (Bill, Jean, and Terry) should only be able to write blog entries, but Bill may publish links.

The contact us form will accept the user’s name, phone, email, and a short message. Submissions of the contact form should be sent only to Shannon.

Sounds pretty simple, huh? Well with Drupal, a lot of this core functionality is already built in. We’ll use as much of the core functionality as we can, and we’ll add in a few other modules to make building this site a breeze!


2. Install some stuff

First, start out by installing Drupal. I’ll be developing this one on my local machine, but you can install it anywhere you wish. For this tutorial, I’ll be working with Drupal 6.x.

To install Drupal, simply download (http://drupal.org) and unpack it, create your database, and visit http://localhost/ (or your own dev URL). Installation should be relatively simple for ya.

You’ll need to create a config file. You can copy /webroot/sites/default/default.settings.php to /webroot/sites/default/settings.php. Be sure to make it writable to the server. Also, leave a copy of sites/default/default.settings.php where it is; Drupal will use it during installation.

After your config file is created, you can go ahead and install Drupal.

On the next screen, you’ll setup the first account for the site. This is the main administrator, or super user. This user will have permission to do anything and everything on the site.

And you can go ahead and specify a few server settings. If your server is configured for mod_rewrite URL rewriting, then you can go ahead and enable Clean URLs now. This will change your URLs from something like /?q=node/3 to just /node/3.

After successful installation, you can visit the site and login as the superuser.


3. Get some modules

For this site, we’ll be using a few contributed modules. We’ll have to download those and activate them before we can use them.

All modules that you’ll install will be placed in the directory /webroot/sites/all/modules. If the modules directory doesn’t exist there, just make a new one and name it modules.

Make sure to download the modules compatible with the version of Drupal that you’re using. I’m using Drupal 6.x.


4. Admin Menu

This module is a must have for working with Drupal. It’s not totally necessary, but it will save you loads of time.

Download it over at http://drupal.org/project/admin_menu and place it in /webroot/sites/all/modules

PathAuto & Token

Next, go grab a copy of PathAuto and Token. PathAuto is a module that will have Drupal automatically generate nice URLs. PathAuto requires Token to work.

Meta Tags (Nodewords)

Originally titled NodeWords, the Meta Tags module allows users to specify common meta tags, like meta keywords and meta description.

Get a copy of this module over at http://drupal.org/project/nodewords

CCK (Content Construction Kit)

CCK allows you to easily create new content types, without ever having to write any code! We’ll use this for the company’s external links section.

Get CCK at http://drupal.org/project/cck

Views

The views module allows you to configure custom views for displaying content. They’re very useful when you have complex content types and categories. Here we’ll use Views to display Links.

Get the Views module at http://drupal.org/project/views

Install some modules

After you’ve downloaded and unpacked the above modules into /webroot/sites/all/modules, you can go ahead and install them.

Visit http://localhost/admin/build/modules to turn some of them on.

For this site, we’ll need to install the following. Simply check the boxes and click “Save configuration”.

  • Administration – Administration Menu
  • Core – Blog
  • Core – Contact
  • Core – Path
  • Content – Content
  • Content – Text
  • Other – Meta tags
  • Other – Pathauto
  • Other – Token
  • Views – Views
  • Views – Views UI

5. Content Types

Before we work with users and roles, we’ll create our Links content type. Each Link will need a title, URL, and short description.

What’s a node?

Almost every piece of content in Drupal is stored as a single node. All nodes have a title and an optional description. By creating content types, you can add fields to the content type to extend the node.

In our case, each Link will need one additional field that’s not provided by default, the URL.

Create a Link content type

We’ll create a content type called Link. We’ll then add a field to the content type called URL.

Visit http://localhost/admin/content/types/add

In the name field, enter the human-readable name. In the type field, enter a unique name for the type. The system will use this name internally. You can make it up, but generally it’ll look like a variable name, lowercase and underscored. Also enter a short description of the content type.

Next we’ll modify slightly this content type from the general node. In the “Submission form settings” group, instead of “Body”, we’ll title the body field “Short Description”.

Next, we’ll edit the “Workflow settings.” Allow the link to be published by default, and disable automatic promotion to the front page.

And finally, disable comments on the Links.

Save the content type. If you visit the “Create Content” page, you’ll now see the new content type, Link.

Additional fields with CCK

So we’ve got our base Link content type set up. But we need to add an additional field to each Link: URL. Visit http://localhost/content/types and “Manage fields” for content type Link.

Add a field titled “url”, and name it “field_url”. Choose text data and text field.

Save it. Another page will come up, with some more options. The defaults are ok for this, so just contine by clicking “Save field settings”. After this, the Link content type should appear like this:


6. Views

Now let’s set up a view for our new content type, Links.

Views can become quite complex, but for our example, we’ll keep it very simple. We’ll make a page view that displays Links. Plain and simple

Visit http://localhost/admin/build/views to get started. Click the tab “Add” to create a new view.

Name the view “Links” and choose type node.

The next few pages can grow quite complex, but be paitent. A bit of practice will get you more comfortable with views.

Firstly, we’ll want our Links view to be a full page. So add a page display.

We’ll have to make some settings next. Change the name and title of the view to Links. Set the “Row Style” to node, and choose to display teaser and links.

Make sure you’re clicking “Update Default Display” every time.

Set the Path to “links”. This will be the URL path and our page view will show up at http://localhost/links.

Then set a menu for the view. Choose “Normal menu entry”, title it Links, and put it into Primary Links. (More on menus a bit later).

The Basic Settings area should be similar to this by now:

And finally for the view, we’ll need to setup a filter. The filter will allow us to restrict the view to only display nodes of type “link”.

Add a filter by using the “+” button at the top of the Filters box.

Scroll down until you find the filter titled “Node: Type”. Check it’s box, then add it as a filter.

Choose a node type of “Link”.

At this point, our whole view should look very simliar to the following.

Save the view. We’ll come back to it later.


7. Users, Roles, & Permissions

Next we’ll set up some user roles and permissions, and then we’ll create some real users. Refer to the site requirements above to refresh on what our users need to be able to do.

User settings

Only SmartMarks staff will be able to have accounts. Public registration will not be necessary for this site. So we need to restrict regsitration at http://localhost/admin/user/settings and disallow public registration.

Roles

We’ll need a couple of roles. Since Shannon wants full control, we’ll need an Admin role. Since Bill can modify certain things that others can’t we’ll setup a Manager role. And finally, the rest of SmartMarks’ employees will need to belong to an Employee role.

Visit http://localhost/admin/user/roles to get started.

Create a role titled Admin.

Repeat the process to create two more roles, Manager and Employee. We should have something like this now.

Perimssions

Next, we’ll define permissions for each of the roles. Visit http://localhost/admin/user/permissions to set up permissions. Set them up like so.

You may be wondering why we didn’t give Manager too many permissions. This is because we’ll set Bill to also be part of the Employee role, so Manager simply needs to be able to add and edit links. All of the permissions associated with Employee will be granted to Bill.

Now that we’ve got roles and permissions going, we can create our sites’ users.

UserRole
ShannonAdmin
BillEmployee, Manager
JeanEmployee
TerryEmployee

Go ahead and create these users at http://localhost/user/user/create, assigning roles to each of them. We should end up with something like this on http://localhost/admin/user/user:


8. Creating Content… Finally!

And finally we can start creating content. We’re well over halfway done at this point.

Create pages

First off, let’s begin with the home page. Visit http://localhost/content/add to create a new Page.

Enter the page title and some sample content for the home page. Set up a menu item for this page. You may also enter some meta tag info if you’d like.

Leave the URL alias setting alone. We’ll let Pathauto handle it, and we’ll set that up shortly.

Save the page and create another for the About page.

If you now visit the main page, you’ll notice that we’ve got a menu already going. These items come from the pages we just made and from the view we made for Links earlier.

Create some Links

Next, we’ll create a few links. Visit the create content page again, but this time choose Link. Create a few links.

After we’ve created a few links, we can visit the view for Links. Visit http://localhost/links to see our links. Here’s what I’ve got. Remember this is coming from the view we made earlier.

Contact form

Drupal’s built-in Contact module is totally sufficient for SmartMarks. We’ll just need to set it up. Visit http://localhost/admin/build/contact and click “Add Category” to begin.

Add a category for “General Enquiries”, enter Shannon’s email as the only recipient, and set “Selected” to yes. This will cause this category to be the default for the contact form. (You could setup multiple categories to handle contact submissions for areas such as Sales, Support, etc.)

You may now view your contact form at http://localhost/contact

Create some blog entries

Last of the content, we’ll make a few sample blog entries. We could log out, and then log back in as each user individually, creating a blog entry under each. Or, since you’re already logged in as superuser, you can create a few entries and change the author to each user.

Visit http://localhost/node/add/blog and create a sample entry.

Under the authoring info, enter shannon. This entry will become Shannon’s first blog entry.

Repeat that to create a blog entry for the other users (bill, terry, jean). Then visit http://localhost/blog to see the user blogs.


9. Finishing touches

We still have a few things to tidy up before we’re done. We need to setup pathauto to handle automatic URL aliases, finish our menu, check out each user account, and then we’ll add a few blocks to demonstrate a little about blocks.

Menus

Let’s start with menus. We’ve already created a few menu items beneath the Primary Links menu. We did this when we created the view for Links and when we created each static page.

Visit http://localhost/admin/build/menu. Here you’ll see several menus available. Choose Primary Links.

Choose “Add item”. We’ll create an item for the Contact form.

Note that the path is relative to the site root. So don’t enter “/contact”; just enter “contact”.

Repeat the above to create another menu item for user blogs, using a path of “blog”. Then visit the tab “List items” to view all the menu items within the Primary Links menu. Now we can reorder the items using the drag and drop handles on the left.

Make sure to save!!!

Now our primary links in the header should be complete and sorted.

Pathauto

Next up, we’ll setup pathauto to handle our nice URLs. Visit http://localhost/admin/build/path.

Before we configure paths, let’s remove any existing URL aliases. You can do this by visiting the tab “Delete Aliases”, then just go ahead and choose all aliases and delete them.

Now we’ll setup the automatic aliases under the tab “Automated alias settings”.

Open up “Blog path settings” and check the box to have the system “Bulk generate aliases”.

Now open up the “Node path settings.” Here we’ll set up a few rules to handle paths for different node types. Use the replacement patterns (this is where the Token module comes into play) to set up appropriate paths. Make sure your URL alias scheme will produce only unique URLs! And be sure to have it “Bulk generate aliases.”

Then save. Then view “List” again. You should see new aliases made for all of our existing content.

A note about URL aliases: Don’t forget to delete aliases if you change your URL scheme and regenerate aliases. Deleting and recreating aliases may seem a bit scary, but the more you do it, the more confident you’ll become in your URL scheme.

Blocks

Shannon just informed us that she wants the site to highlight the company’s recent office move. This is a good opportunity to go over blocks.

A block in Drupal is simply a ‘chunk’ of content, be it a list of nodes, some static HTML, a few images, or whatever. We’ll set up a simple block to hold the notice about the office move.

Visit http://localhost/admin/build/block. Add a new block by using the tab “Add block”.

After adding a block, you’ll have to assign it to a region for display. Assign it to the left sidebar on http://localhost/admin/build/block, and don’t forget to save!!!

You may also sort them with the drag handles, like menu items.

You should now see the new block displayed in the left sidebar after save.

Check user accounts

Now we’re almost there. Just want to login as the users to make sure they’ve got the right permissions and that they can access the links to allow them to get stuff done.

Log out of the system and log back in as Shannon. Shannon is our administrator, so let’s make sure she’s able to create/edit all content. After logging in as Shannon, we should see a link to create content.

Go through and login as each user. Just take a look to make sure each one has the permissions and links available to get stuff done. If they don’t, try going back to administer user permissions, and verify that they’ve been granted the correct permissions. Or also make sure you’ve correctly assigned roles.

Set the home page

We also need to tell Drupal to use our home page as the default home page. You can do this under http://localhost/admin/settings/site-information.

Before you change this data, though, we need to grab the node id of our home page. Visit our welcome page at http://localhost/welcome-smartmarks. Click or mouse-over the “Edit” tab; we just need the node’s ID.

Our home page has a node id of 1, so we’ll use that for the default home page. Visit http://localhost/admin/settings/site-information and enter some data. At the bottom, you’ll see a field for the default home page. Enter “node/1″. Note that we’re using the node id becuase of pathauto. If we were to change the URL alias of the home page, then we won’t have to change its node id, since it will remain the same. Drupal will automatically print out the correct URL alias.


10. Summary

This overview only scratches the surface of what Drupal can do. Hopefully I’ve given you a good overview of how to get started with the system in building this very simple CMS.

Themes

Drupal supports multiple themes, and each user can even chose their own theme.

Building a custom theme is out of the scope of this tutorial. But you can download and install some contributed themes. A good starting place is over at Theme Garden. Download and unpack themes into /webroot/sites/all/themes, then enable and configure them at http://localhost/admin/build/themes. Note that whenever you activate a new theme, you’ll have to visit the blocks page to assign blocks to the theme’s regions.

If you’re ready to start building a theme, you might want to check out the Theme Guide.

Good luck!

Good luck in your Drupal ventures, and feel free to ask questions! Also check out http://drupal.org for more information and helpful articles.

Note: Want to add some source code? Type <pre><code> before it and </code></pre> after it. Find out more
  • http://www.brainythink.com/ Amr T

    hi,
    when you’re “anonymous user” and check the “Links” that we made, you will not see url that we made it as an extra field for :Links”.
    so, in the user’s permission you have to check “view field_url” permissions under “content_permissions module” tab!

    Amr

  • http://www.kevinquillen.com Kevin Quillen

    “I could build the same thing custom, with Ruby On Rails”

    And this ROR application will handle traffic how? Server farm?

  • http://d3.lt Zy

    Imho good question!

  • http://carnevaledesign.com Paul Carnevale

    I just wanted to address the comments I’ve seen on here that regard Drupal as not a viable solution for a web site or application.

    Take a look at Drupal project founder Dries Buytaert’s site where he showcases sites powered by Drupal: http://buytaert.net/tag/drupal-sites. Sanyo, Disney, Mozilla, SourceForge, ICANN, Sun Microsystems, EA, Adobe, Universal Music, Nike, FedEx, AOL, NASA and several music bands including Metallica, Pearl Jam, Beyonce, Bob Dylan, and Led Zeppelin are just a handful of sites which have been developed using Drupal.

    Drupal has been used to create several web sites and applications and is extremely stable, efficient, secure and capable of handling heavy traffic. Joomla! and WordPress are also great systems which have thousands of hours of work put into them from their devoted communities as well. I don’t believe one should knock an open source system, no matter how much they think they may know about it.

    Even the communities themselves have tried to show that they have no hard feelings toward each other. Joomla congratulated Drupal on the release of 6.0 http://www.joomla.org/index.php?option=com_content&task=view&id=4585&Itemid=74, and Drupal congratulated Joomla on the release of 1.5 http://drupal.org/node/213524.

  • http://stevejamesson.com Steve Jamesson
    Author

    @milos – Sorry about that typo… Thanks for noticing!

    @Amr T – Thanks for pointing that out.

    -

    ROR and other proprietary apps might seem like a good alternative, but keep in mind that they’re always proprietary.

    The day your client needs to scale up is a day that you’ll probably wish you signed them to a very costly contract, because it’s likely you’re not going to get paid enough to scale it! :) Then, your client’s site is kind of in limbo.

    Going with a community-supported system is a great way to reduce risks like that. Because there are so many contributed modules, you can be prepared for scaling and adding new functionality, without having to sell the client on more proprietary development time.

  • http://www.jcowie.co.uk James C

    I have to say that i love drupal, Once you get over the initial learning curve it is very easy to create new themes, or take themes from designers and implement them into the site, I have built several sites using drupal and so far have had do problem.

    Great tutorial by the way.

  • http://www.ninoharris.com Nino

    I’ve tried both and honestly wordpress is as scalable and I know its not meant to be a CMS, but it can be used as one. Also I don’t know why but wordpress is more “fun” to code.

  • http://www.kevinquillen.com Kevin Quillen

    I’m just curious, how many people here handle a steady stream of clients from existing systems or starting from scratch? Why would you ever choose WordPress to run an entire site that isn’t a blog? I’ve done that only twice, and it was such a hassle, not to mention a nightmare for training.

    Also, why would you want to use different back-ends depending on the project? It is more efficient and sensible to choose what you consider the best one and dedicate yourself to it. It will make maintenance and upgrades easier, smoother and more sane for you and your staff.

    What if you had created a breakthrough module to enhance custom applications in your Drupal or Joomla site, then wanted to carry that change over to EE, WP, CMSMadeEasy or MoveableType? It would be a nightmare because the platforms are inconsistent. The client may pay for it, but it will take twice the time to learn the other APIs to duplicate the upgrade and time is money.

    From what I’ve seen, the cleanest looking backend of them all was Drupal. Joomla is seemingly too complex for the end-user. Even I thought most of its options were too much and over the top. How long does it take to brand a WP or Joomla backend that isn’t the default theme?

    When you roll up your sleeves and get dirty, bottom line is Drupal makes the most sense, then maybe Joomla. Let the designers worry about the visuals, and the programmers worry about implementing it and the rest of the scope. Thats what they’re there for. But don’t spend 5 minutes with Drupal and get mad that it may ask you to configure its options (the horror!), or be arrogant to say “I BUILD MY OWN KTHX”. I’ve done -both- of those, and neither were conducive to a business environment.

    Fact is, we’re lucky folks work on these open source systems and release them for free. Creating, maintaining, and selling a proprietary product is difficult these days and time is always against you. When we dropped our proprietary applications in favor of a platform like Drupal, we saw improvements in development time, custom programming, UI, training and overall usability. If the client needed something specific, chances are a module existed to do just that. They aren’t perfect, no. But they provide an excellent base to start from, and any competent programmer can fill in the gaps needed for the client. There is no way a team of 2-3 programmers can keep up with the thousands that provide enhancement plugins/modules weekly.

    No system is a silver bullet though. The idea is these systems provide you with 85% of the base- the rest is up to you. Nothing is perfect. I was no Drupal lover at first either.

    The reason I am so curt/blunt in my comments is because I want to spur more discussion like this. Most of the time you hop into an article thread and its mostly bot-like spam ‘Great article!’. That’s nice, but we gotta expand and spawn discussion, creativity, and ideas. Sometimes friction gets the ball rolling! :D

  • http://fourfather.com Paul

    All I can say is WOW! I’ve been waiting for an article like this to make it to Nettuts and you certainly didn’t disappoint. Great work sir.

  • http://jimjamesson.com Jim Jamesson

    What Kevin says is totally correct.

    What Nino says about WP being as-scalable though, I disagree. We started working on a new project for ourselves, and decided for toots and giggles that we’d build the site in WordPress AND Drupal.

    While WP 2.7 is nice don’t get me wrong, it’s still a WordPress and we quickly hit the ceiling in terms of scalability. When you start dealing with loads of taxonomy terms, templates, and different blocks and sidebars on different areas of the site, it becomes very messy in WordPress. Yes it can be done, but at what point do you have such a mashup of plugins and sidebar widgets and individual template files, that you are almost running the site statically.

    The difference in scalability is easy to see when comparing the same website built in two different systems. Drupal gives us far better chances of building a strong community-based website. Drupal also gives us superior control over taxonomy and templates, that in the end, I feel less time is actually going into the Drupal than did the WordPress.

    Its almost silly to me that every time the word Drupal is mentioned, the word ‘WordPress’ is surely to follow. I don’t know how people can even fairly compare the two systems. Drupal was unquestionably better suited for us in this case.

  • elramirez

    I hope this is the first of a LOT to come on Drupal. This is a project that could benefit from the NETTUTS editorial / writing love. Looking forward for theming, modules, and best practices tips topics. Thanks for putting your eyes in such a wonderful project and provide your two cents on letting the world know about it.

  • Paul

    Very cool tutorial. I’ve got everything setup and running as outlined in the tutorial, but can’t figure out how to them the Links view.

    When I go to Theme: Information on /admin/build/views/edit/link, it says it’s using views-view-list–links.tpl.php (it’s bold), but when I actually view the Links, it’s using the default Drupal view (or node template, whatever it’s actually using). I can tell because the Drupal default uses H2 tags for the title, and the View module template uses H3.

    I’ve cleared the Drupal theme cache as the View help doc says, but it just won’t show a custom view. I put it in the /sites/all/[theme]/themes directory, and like I said Theme: Information says it’s using it.

    I know this isn’t a Drupal help forum, but figured somebody here that has gone through the tutorial (or author) could provide some better feedback for this specific tutorial.

  • Pingback: Mine seneste bookmarks (16.12.08 - 21.12.08) | Morten Gade

  • paul

    One question I do have for the Drupal experts is where I should sign up for a VPS if I decide to start working with it. I’ve tried to run it before on a shared pro package and its too slugish to even be bearable. As of right now I’ve heard lots of good things about MT. Any suggestions or experience with Drupal on MT VPS?

  • Pingback: leg med nye medier. Eller noget.

  • ginkoQ

    good tutorial. thanks from Berlin.

  • http://www.kevinquillen.com Kevin Quillen
  • chris

    hi thank for the tut

    I keep getting this error any one know how to fix it

    Operations on Unicode strings are emulated on a best-effort basis. Install the PHP mbstring extension for improved Unicode support. (Currently using Unicode library Standard PHP)

  • http://www.kevinquillen.com Kevin Quillen

    Your server/host needs mbstring support for PHP. Are you using the latest version of PHP? 5.2.x?

  • http://stevejamesson.com Steve Jamesson
    Author

    @Paul – are you using a default theme, or did you install a contributed theme?

    If you’re using the default, then any file within sites/all/themes will not even be read or used. You’d have to install a contributed theme, then add the views template file. At that point, drupal should load your template file.

    If no template file is placed within the active theme’s directory, then Drupal will use the module’s default template. This isn’t always a file, though; often it comes directly from the module’s code.

    I’d say try installing a contributed theme, then work on theming the view.

  • Pingback: AndySowards.com :: Web Development Nerdy Daily Links For 12/22/2008 | AndySowards.com :: Professional Web Design, Development, Programming, Hacks, Downloads, Math and being a Web 2.0 Hipster?

  • Paul

    @Steve – Thanks.

    I took one of the Drupal default themes (Garland), moved it to /sites/all/themes/ and renamed it. It works and shows the modifications I made, so it’s not using the original Drupal theme.

    I’ll try downloading a contributed theme to see if I can get the view to change, maybe it’s something I did screwy with the one I copied/edited.

  • chris

    Kevin Quillen i am using 5.2.6

  • Pingback: Ook interessant! | Scriptorama.nl

  • http://www.kevinquillen.com Kevin Quillen

    Does your server have mbstring on it? Check your php.ini file.

  • chris

    i took the semicolon off this line

    extension=php_mbstring.dll

    and i have told it where the extensions are

    at the very bottom of the php.ini file there some option for mbstring i have left them alone

  • http://www.islandzilla.com ashvin

    great now there are other CMS than wordpress on nettuts.

    Drupal is gettin very popular..Yea now we need more tuts on drupal… want to see how it is really more scalable than the other CMSs..

  • http://www.kevinquillen.com Kevin Quillen
  • http://www.matus.it matus
  • Sarah

    Next Netuts Tutorial: Theming Drupal

    thanks!

    :)

  • Paul

    I cannot figure out how to theme the Links view we created to save my life. It would be great if there was a follow up to this tutorial on how to do just that.

    I’ve tried creating views-view-row-node–links.tpl.php, views-view-list–links.tpl.php, node-view-links.tpl.php, node-links.tpl.php, amongst other things in /sites/all/themes/[theme]/.

    Maybe somebody can explain exactly what template needs to be made/changed, and exactly how to get the CCK variables (URL, for example) to show up in that template.

    The Drupal and Views docs just aren’t helping, or I’m really stupid.

  • http://stevejamesson.com Steve Jamesson
    Author

    @Paul, you will probably need to alter template.php to tell Drupal to look for the new template. Drupal automatically looks for core overridden templates, but I don’t think it’ll do so for views unless it’s explicitly told to.

    Are you using the Theme Wizard? If so, it should instruct you to add a function to template.php. If not, then try googling a bit on theming views in general. In general, you’ll probalby need to both create a template and tell template.php to use the template.

    If you still get stuck, I’ll theme the views for my version of the site and will post something for your reference, but it’ll probably be a week or so before I can get to it.

    Maybe try installing the advanced help module. http://drupal.org/project/advanced_help

    Also, are you sure you need to override the template? Could you accomplish what you need with just CSS?

  • james

    I would like to see a PSD > Drupal tutorial. My impression from reading these comments is that that’s a tough task. If I have to bend a design around a CMS instead of the other way around, it doesn’t sound like a good option for me.

  • http://www.kevinquillen.com Kevin Quillen

    It’s no different than anything else. Drupal isnt voodoo.

  • Sam

    title for next nettuts article: Why Drupal is’nt Voodoo

  • Jimmy

    Steve, great tutes. I’m a little confused on one thing; in terms of complexity, if I have multiple users that can access the drupal cms and those users have (1)a blog (2)some links (3)other data associated with , (ie, images) how do you organize it on the site page?

    The idea is you don’t want them organizing the site’s layout, just their information. So the page would show teasers and say a pic. Is this a template customization thing?

  • Imko

    THANKS! I was waiting for a Drupal tutorial. There are huge site’s running Drupal as CMS and you’ll never get some of the things done with them in WordPress.

    Great example of a community/blog/social network site running on Drupal is PopSugar.com

  • Pingback: Drupal Tutorial « Rajivelou’s Weblog

  • http://www.honourchick.com Honour Chick

    awesome tutorial ;)

  • http://aiburn.com Sean

    Drupal is awesome and easy to theme. I’d like to see some advanced theming covered though. Like how to work with Views in your themes at the code level. Like how do I create custom views on the homepage? I tend to just use blocks and stylize the content that is pushed to the frontpage as well, which suprisingly has covered most of my requirements so far. For other issues I’ve copied and pasted some contributed code I’ve found. Thx.

  • http://priandoyo.com Anjar Priandoyo

    I am using wordpress for my personal website, since it’s very easy and simple, i have been working with wordpress for more than three years. However for managing client project or search engine optimization i prefer to used drupal which became my preferences for latest one years.

    Anyway thanks for nice tutorials

  • Pingback: Another introduction to Drupal tutorial | Anjar Priandoyo

  • Loek Bergman

    Wow, this is exactly the tutorial I needed to get a grip on Drupal. Especially the information about the handy modules is very helpful.

    Thank you very much and happy newyear!

  • Pingback: Bookmarks Explosion 2 January 2008 - Blogopreneur.com

  • http://www.anglotopia.net Jonathan Thomas

    Excellent Article. I’ve been running a couple drupal sites for the last year and I still learned something new.

    Drupal is a complicated beast but it can do so much more than WordPress.

  • Pingback: Bookmark::081226 « Kuu2’s Blog

  • Pingback: » Designpicks: Januar 08 - im Designpicks Blog

  • http://svendigital.co.za/ Stephen Metcalfe

    Excellent article! I’d tried Drupal before with no success, but I see now exactly how I can make it work with my current project! Thx for the effort you put in to it.

  • http://dezinerfolio.com Navdeep

    Very nicely explained. Would be great if you convert the same into a video tut.

  • Paul

    @Steve – Thanks for your help. Unfortunately, I have no clue what I’m doing. I don’t think Views 2 has a “Theme Wizard”. And I’d like to do more to the View than just modify it’s CSS.

    If you can provide a follow up to this tutorial, with more information on how to theme the view, that would be absolutely awesome.