So you've installed Drupal… now what?

When you install Wordpress, it's pretty clear how to get started: in the left menu bar of the admin interface, you can choose between posts and pages, you can manage media, links, and comments, and you can choose to edit the appearance. When you install Drupal, you find yourself staring at a welcome page that suggests you:

  1. Configure your website
  2. Enable additional functionality
  3. Customize your website design
  4. Start posting content

with some inline internal and external links that might be of some use in accomplishing those things.

Not so helpful.

Starting with a Drupal 6* installation, here's an outline of how I go about building sites. The basic process should apply to Drupal 7, though many of the details will be different. (As I get more experience with Drupal 7, I'll update this tutorial accordingly.)

Install essential modules

For every new site, regardless of what it's for, I always install the following modules:

  • Administration Menu: provides you with a drop-down menu at the top of every page for doing all the thing you need to do to administer your site. Cuts down the tedium of administering Drupal by at least 75%. Administration menu is the reason that I install modules first-- it makes it a lot easier to do everything else.
  • CCK (Content Construction Kit): it's almost guaranteed that you'll have to create a content type with fields beyond "title" and "body". To do this, you need CCK. (Note: in Drupal 7, CCK has been incorporated into Drupal core.)
  • Views: You want to be able to list, filter, or sort your content in some way? You need Views.
  • Pathauto: Unless you want the URLs for your pages to be yoursite.com/node/123, you need Pathauto. For Pathauto, you also need Token.

So how do you install modules?

  1. Download the files from drupal.org (the links above point you directly to the right page), but make sure you're downloading the version that matches your Drupal version (e.g. if you're running Drupal 6, be sure you're downloading version 6.x-[whatever]).
  2. Unzip the file you've downloaded, and you'll get a folder.
  3. Then, go into your Drupal filesystem (I can't help you here-- it depends on how your hosting setup works-- but it often involves (S)FTP if you're running on an external server, or going to a directory on your local machine if you're using XAMPP (Linux/Windows) or MAMP (Mac).
  4. Navigate to the sites/all/modules folder (this is the most typical place to do it; particularly if you're running a multi-site install, there may be reasons to put it elsewhere.) If this is a fresh-out-of-the-box Drupal install, sites/all won't have a modules folder, so create one.
  5. Drag and drop the module folder into sites/all/modules. Repeat for each module.
  6. In your browser, go to yoursite.com/admin/build/modules/list. (After you've installed Administration Menu, you can get to the same place by going to Site building > Modules > List.
  7. Check the boxes for the modules you want to install. Modules that have prerequisites that aren't installed or available can't be selected.
  8. Hit "Save configuration", and your modules are installed!

Create content types

Presumably the reason you're creating a Drupal site is because you have some content you'd like to publish in some form. Hopefully you've already given some thought about how your content is structured. It takes some time and experience to develop a knack for deconstructing broad client ideas about site content into concrete fields in Drupal content types-- and even when you've been doing it for years, there's often some degree of trial-and-failure, as clients see things and change their minds, or a certain implementation choice just isn't working out.

I always get to work on the content types early in the development process, before doing the theming, because the content you create impacts the ways you display that content (views, blocks, and panels). Until you know the >div< id's for the specific blocks or elements of the views you'll be using, it's hard to do some of the very specific theming usually needed to implement the kind of look and feel a design group might give you.

How to think through the structure of a content type is a topic for a separate post, but assuming you more-or-less know what your content type should look like, here's how you go about creating it:

  1. In the Admin Menu, go to Content management > Content types > Add content type.
  2. Give it a human-readable and machine-readable name, and a description if you'd like.
  3. If you want the (mandatory) Title field to be labeled something else (e.g. if you're creating a content type for cities, you could change it to "City name"), and/or if you want to re-title or remove the Body field, click on "Submission form settings" and make the changes.
  4. I've personally not found "Workflow settings" to be terribly useful; I use Views to do most of my displaying, so "Promoted to front page" and "Sticky at top of lists" aren't really applicable. If there's a content type where you know that people will usually want to write a draft first, or if you have a workflow where new nodes need to be approved by an editor, you can un-check "Published"
  5. Once you've created the field and saved it, click on "Manage fields".
  6. You can rearrange all the fields, including the grayed-out ones, however you like; this affects how they'll show up on the content creation/editing form. For instance, I usually move the "Menu settings" from the top of the list towards the bottom, with the other administrative options.

You may want to be able to classify your data through tagging or using a pre-defined vocabulary. If so, you'll also want to configure the Taxonomy module when you're done creating your content types. In Admin Menu, go to Content management > Taxonomy > Add vocabulary. Give it a name, determine which content types should be able to use that vocabulary, and specify what kind of vocabulary it should be. If you don't choose "Tags", you'll have to add the terms users can choose from. After you save, you'll be on the page that lists the vocabularies you've created. If your vocabulary isn't tags, click on "add terms". The term name is what's going to appear when you're choosing terms; the description is optional, but may be indispensable in certain situations (like for taxonomies you're using with the Glossary module.) Keep adding terms until you have all the options you want to have available for that taxonomy; you can always come back and add more later.

You may want to go back to the content type(s) you've associated with that taxonomy, and choose where the option for selecting taxonomy terms appears on the node creation/editing form (by dragging the grayed-out "Taxonomy" option to where you want it.)

Improve your node URLs

Before you create content, configure Pathauto so that the URLs that are generated for the content you create are something nicer than "node/3". (Note: each node still gets a unique identifier, which you can find in the URL when you edit the node, and you can always get to it by going to "node/[node's unique ID]".) It's worth thinking through how you want the URLs configured, because once Pathauto generates an alias for nodes (e.g. when you create them, if you've configured Pathauto in advance) you'll need to install Views Bulk Operations to change them as a batch

In the Admin Menu, go to Site building > URL aliases > Automated alias settings (or /admin/build/path/pathauto). Configure the general and punctuation settings, if you'd like (I usually leave them alone), but it's the "Node paths" you're mainly concerned with. For each content type, you can specify what the URL should look like. So, for a blog you might choose "blog/[yyyy]/[mm]/[dd]/[title-raw]" to get URLs like yoursite.com/blog/2011/04/15/my-blog-post. If you're not sure what the options are, click on "Replacement patterns", and you can see the options for adding information from any CCK field you've created, as well as information from Drupal core modules (menu, taxonomy, and information from the node itself). If you've included something that doesn't apply to a given node (e.g. if you use [term] for a certain content type, but don't assign any taxonomy terms to a certain node of that type), it's omitted from the URL.

Below, you can do the same thing for users and taxonomies.

Add some content

Even if it's just lorem ipsum filler content, you need to create some nodes. I'd recommend creating two examples of every content type you want to present differently (e.g. if you want to show a list of news items, which excludes page nodes, create two news items and two page nodes.) You can't check to see if you've configured the node displays correctly if you don't have examples of what you want to include and what you want to exclude. If there's other ways you want to filter and sort your data-- like showing nodes with particular taxonomy terms-- create some nodes that include the term, and others that don't.

Organize your data

Never once have I wanted to display my content the way Drupal does by default (sort of blog-like, where new nodes appear at the top of the front page, and older nodes are pushed down, and eventually, onto subsequent pages). Every site I've ever made displays its content through some combination of nodes-- where people read the contents of a node-- and views, where people see some sort of data stored in (some subet of) nodes-- title, teaser, body, some CCK fields, etc.-- but aren't looking at the nodes directly. To accomplish the latter, you need the Views module. Go to Site building > Views. There's a few default views you can "Enable" to edit, but you probably want to create a new view. Click on "add", and give your view a name.

For the "view type", ask yourself, "What do I want a list of?" Most of the time you'll probably choose "Node". The view type determines what type of content will display, and the options that are available (e.g. if you choose "User", then "Title" doesn't make much sense as something to display).

A thorough description of how to configure Views from here would require multiple tutorials, and I've written up some more advanced uses for Views in site breakdowns, but here's how to configure the most common views I use. (Note: this is based on Views 6.x-3.x-alpha3; the details may be subtly different in other versions.)

Fields

Fields determine what content shows up in your View.

  • Click the + sign in the "Fields" section, and you're treated to a huge list of possibilities.
  • If you choose "Node" in the "Groups" dropdown, the options are limited to a more manageable set. (For most views, I rely on the "Node" options, and occasionally CCK fields, which are listed in the "Content" option.
  • It's pretty typical to want clickable titles for your list of nodes. Choose Node: Title
  • The configuration screen is a little overwhelming at first. The key parts for a basic view are "Label" (chances are you probably don't want your node titles to be prefaced by "Title:") and "Link this field to node". Delete the content of the "Label" field, to avoid having a label, and make sure "Link this field to node" (at the bottom of the configuration area) is checked.
  • Other fields I use a lot are Node: Post date, Node: Body (to show the whole body content-- note this does not include any of the data you add to nodes in CCK fields, those you have to add as individual fields), and Node: Teaser (the shortened version of the body).
  • Views defaults to adding some sort of label, so if you don't want one, be sure to delete it for each field, except if you want to use the "Table" display (see "Style settings", below)
  • If you ever want to change the configuration options for a field, just click on it.
  • If you want to rearrange the order that the fields appear in, click on the up/down arrow icon next to the + sign, and drag-and-drop the fields in the right order.

Filters

You may have noticed that in the preview that all your nodes are showing up. Chances are, you only want a subset of those nodes. This is where filters come in.

  • When you choose +, you mostly get the same options as you saw with Fields.
  • One of the most common filters I use is Node: Type. Here, you can specify the content type of the nodes that show up-- very useful if you have content types like "News", "Blog", etc. that you want to appear separately.
  • If you draft content by unchecking the "Publish" option on the node edit form: use the Node: Published filter. If you don't, unpublished nodes will appear. If the reader clicks on the title, they'll get a "permission denied" error, but if you have "Body" or "Teaser" as a field, the content will show up.

Sort criteria

You can set up multiple sort options-- e.g. first date, then sort all nodes published on the same date by title.

  • Chose the + sign
  • I usually choose Node: Title, ascending to get an alphabetical list, or Node: Post date, descending to get a list where the most recent content is on top
  • As before, you can use the up/down arrows to determine which sort happens first.

Style settings

Note: this section is split out in Views 3.x. In Views 2.x, the style is part of "Basic settings"

  • By default, Views uses an "unformatted" view-- essentially, a list consisting of
    's, rather than an HTML list. If you click on "Unformatted", you can choose another display. I usually use either Unformatted, or HTML List, for lists of nodes, and Table for tables.
  • One small note: if you choose "Table", you're going to want to restore those labels that you deleted below.
  • Basic settings

    • The Title text appears wherever you'd expect a title to show up-- at the top of a block, at the top of a page, etc.
    • In Views 3.x, you define the number of items to show under the Use pager setting. Click on "Paged, 10 items" (the default setting) to specify whether or not you want items to extend to other pages, and/or how many items you want to show overall.
    • In Views 2.x, pager and number of items are separate setting items.

    Header/footer

    • In Views 3.x, these are different setting areas. To add some text to one or the other, hit the +, choose "Global: Text area" and input some text.
    • In Views 2.x, it's part of "Basic settings", and by clicking on "None" next to Header/Footer, you can add text.

    Displays

    If you've followed through these steps so far, your view has one major shortcoming: there's no way to see it besides the view configuration interface. To make it available in some form, choose the form you want in the toggle-down on the left (I usually choose "Page" or "Block") and click "Add display".

    For page, in particular, there'll be additional configuration options in the lower left, namely, what the path for the page should be (it'll throw an error if you don't put something in there), and what menu it should be added to.

    Menus

    You can have any number of menus in Drupal. By default, there's "Navigation", which appears in the left column by default, "Primary links" (which appear at the top by default), and "Secondary links". As often as not, I just create a new menu (Site building > Menus > Add menu).

    You can add items to a menu within the menu administration interface, but you need to know what the path is first. It's easier to go to the nodes/view pages you want in the menu, click on "Menu settings" (it's under Title, by default, unless you moved it when you were creating your content types), put something in the "Menu link title" field, and choose the Parent item. If you want it at the top of the menu, just choose the menu you want to add it to; otherwise, choose the item it will be nested under; how Drupal menus handle nested menus varies depending on modules and themes. Some modules provide drop-down menus out-of-the-box, but for a good drop-down menu solution, I'd install the Nice Menus module. Once you've installed it, go to Site configuration > Nice menus to configure it.

    You can assign a weight to menu items; this will determine the relative order that the items will appear. Personally, I find it easier to assign all the items to the menu first, then go into the menu configuration (Site building > Menus > List menus, and choose the menu you're working with) and drag-and-drop the items in the order I want.

    Blocks

    If you want content in the sidebars, header, footer, etc., you need to configure blocks. Every menu is available as a block, and there are a number of built-in core blocks (what users are online, a search box if you've enabled the search module, the login box) but most of the blocks I use are either one-off content blurbs or are generated using Views.

    To add a custom block, go to Site building > Blocks > Add block. Other than the Block description/title/body fields, the configuration settings are mostly the same as for other blocks. The settings are fairly intuitive, but it's worth calling out the "Page specific visibility settings" section. This is where Pathauto really shows its value. If your site has different sections (e.g. blog vs. info pages), if you've configured Pathauto wisely, you can have blocks that show up only on blog posts by choosing "Show only on the listed pages" and in the Pages box, putting: blog/* (or whatever the path you've configured is).

    Save your block, and it'll appear with the other blocks at the bottom of the Blocks configuration page.

    On that Blocks configuration page, you'll see all the regions provided by your theme highlighted. It's tempting to just start dragging and dropping blocks into regions, but if there's additional configuration you want to do (like limiting viewability to logged-in users, or making the block only appear on certain pages), do it before you put the block in the region. As soon as you save, the block will immediately appear on all pages, if you haven't configured it to do otherwise.

    Users

    You'll want to configure your user settings to avoid unwanted contributions from spammers. By default, Drupal lets anyone create an account without approval. Go to User management > User settings to change this and customize the emails that go out to users when they sign up (if you allow them to sign up).

    Drupal starts off with some reasonably common-sense permission settings for authenticated vs. unauthenticated users, but modules you enable don't (e.g. enabling the search module, even though it's part of Drupal core, doesn't allow anyone but the first user of the site to search). To have more targeted permissions than just "authenticated" vs "anonymous", create a Role by going to User management > Roles. That role will then appear on the Permissions page (User management > Permissions), where you can also configure the permissions for the "authenticated" and "anonymous" roles.

    A role doesn't do anything until it's assigned to a user. When you create a new user account as an administrator (User management > Users > Add users) you have the option of assigning a role directly; if you want to assign a role to multiple users at once, go to User management > Users > List, check the boxes for the users you want to assign the role to, and under Update options, use the toggle-down to select which role you want to add (there's a sub-section for "Add a role to selected users", and the role options are listed under there.) You can do the same thing to remove roles from users.

    Themes and other appearance details

    To change how Drupal looks, go to Site building > Themes. If you choose the Configure tab on the top, you'll see options for changing the logo, adding or removing things like the "Site name" and "Mission statement" (which are themselves configurable in Site configuration > Site information), and what content types should display the post information (e.g. you probably don't want "posted by John on 4/1/11 at 3:45 PM" on your information pages.) The post information is only available in this interface, but things like you choice of logo can be overridden in the settings for a given theme.

    The default theme is Garland, and if you click on its Configuration button, you can change the color; often that alone has been enough for clients I've worked with who really don't care about the design. Chances are, you'll want different theme options; head on over to the Drupal themes page and add them to your Drupal filesystem in /sites/all/themes, a directory you'll have to create yourself. Once you do that and refresh the page, your new theme options will appear.

    One note about CSS: if you make CSS changes to the theme you're using, you'll probably need to flush the Drupal themes cache (in your Admin menu, hover over the logo in the upper left corner, then go to Flush all caches > Theme registry).

    Going further

    Following these steps, you can create a basic Drupal site, but there are countless ways to extend it through new modules and more complex configurations of flexible modules like Views. Once you can figure out how to phrase your query, there's a wealth of resources to be found by Googling.

    * Why Drupal 6 when Drupal 7 is available? A lot of the niche modules I need to accomplish the projects I do are still only available for Drupal 6. I hope to gradually transition new projects to D7 as the module selection improves, then convert existing D6 projects, over the next year.

Project: 

Tags: 

Add new comment

Filtered HTML

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.