This is a step-by-step description of setting up a Calendar view.

Why not use the Event module?

Using the Event module is perfectly acceptable, quicker/simpler way to get a basic calendar running on your site. If you need something more flexible/extensible, here's how to create a Calendar view. If you've got other differentiating factors, list them in the comments, and I'll incorporate them here.

Requirements

The Calendar module has the following requirements

Install the modules

Download and extract the modules in your /sites/all/modules directory.
Go to Administer › Site building > Modules and enable:

  • Content
  • Date (under CCK)
  • Date API (under Other)
  • Calendar
  • Views
  • Views UI

Create a custom Content Type

Go to Administer › Content management > Add Content Type

  • Name=Performance (or "event" or "meeting" or whatever you want to call it)
  • Type=performance
  • Description = Sing, Sing a song...
  • Whatever you prefer for the rest of the form
  • Save the Content Type

Edit the content type again and then select Add field

  • Name = Time
  • Field Type = Date / Selected list (or Date / Textfield with javascript pop-up calendar - if you have jstools enabled)
  • Click "Create Field" and you'll be taken to second form
  • Widget = Selected List (or Textfield with javascript pop-up calendar - if you have jstools enabled)(not sure why you have to select this twice)
  • Label = Time
  • Help Text = whatever
  • Under Data settings:
    Required: checked
    Multiple Values: not checked
  • Input Options
    Granularity: Year,Month,Day,Hour, Minute (but not second) selected
    To Date: Optional
  • Click Save Field Settings

Create a node

Create content > Performance

  • Title = Check your calendar
  • From Date = This Friday at 3:00pm
  • To Date = blank
  • Body = Hope I'm doing something fun this weekend
  • Click Submit

Modify the default Calendar view

Go to Administer › Site building > Views and you should have a Calendar View
Click Add..

  • The info under Basic Information, Page, and Block are all fine.
  • Under Fields delete the Node: Updated Time
  • Then under Add Field, select Date:Time and click Add Field
  • Next to Time Field, Label can be blank, Handler needs to be Do Not Group Multiple Values
  • Arguments can all be left alone
  • Under Filters ... Add Filter, select Node: Type and click Add Filter
  • Operator = Is one of. Value = Performance
  • Exposed Filters can be left alone
  • Under Sort Criteria, delete Node: Updated Time, and under Add Criteria, select Date: Time (field_time) and click Add Criteria button. Leave the Order Ascending

Click Save and you're back at the Administer › Site building > Views. You should see the default calendar view with an Overridden status. And at the top will be your new calendar view that uses your CCK node called Performance

Click on the link under URL and you should see your performance on the correct day. If everything looks OK, go back and edit the view again and in the Page > Menu section, check Provide Menu. By default, the menu link will appear in the Navigation menu, but you can move it wherever by going to Administer > Site Building > Menus.

Comments

DynV’s picture

There's a thread which list the differences titled Event module vs Calendar Module : http://drupal.org/node/114282

dragondad’s picture

In my case, Drupal 5.10, and calendar 2.0, the exposed filters has the default Node:Type, if don't clean up manually, it will show up at the header of the calendar view page, the "Exposed Filters can be left alone" is not correct for my case.
To remove the unnecessary "is one-of" filter, I have to manually delete this exposed filter.

twsowerby’s picture

I'm having trouble making this work in the latest version of calendar/views. I can make my custom content types appear on the calendar but I cant make the calendar use a custom date field rather than the default Node: Updated Date. Any ideas?

Durrok’s picture

Drupal Therapy has a great video on how to set this up that walks you through it step by step.

http://www.drupaltherapy.com/date

Hope that helps.

shunting’s picture

... there should be a simple list of steps instead of a 20 minute video.

UPDATE Sorry to be snarky, but there are times when simple really is simple, and eye candy really is eye candy.

Durrok’s picture

I just found a resource and shared it. I too would have preferred a list of steps.

AlainKnaff’s picture

We would like to have a calendar showing only the upcoming events in a block, but with a clickable title leading to a page which shows all events (also past ones).

However, as far as I can see, the filters apply to both block and page view. So either we have past events in the block as well (potentially crowding out upcoming events, due to limited number of entries), or no access to past events even in page.

How can we define a view that has a different filter for block and page?

Thanks

Durrok’s picture

Easiest way I have found around this is to just make two views. One that has a page view and one that has a block view.

shunting’s picture

Thanks.

bartl’s picture

Go to Administer › Site building > Views and you should have a Calendar View

Except that I don't.

I tried to follow both these instructions (on Drupal 6.20) and the calendar tutorial video, but I see no "calendar" view in /admin/build/views.

What do I have to do to add it?

n.b. A file calendar/includes/calendar.views.inc does exist.

update After some going back and forth, installing/enabling/disabling of this (and a few other) modules, suddenly the view did start appearing.

I em>hate how fragile Drupal's installation mechanism is. Apparently it doesn't keep track of how well an installation went, so it could try again next time an installation doesn't complete successfully.

buenos’s picture

I've got the same problem.. I also tried disabling/enabling modules, it didn't help. Does anyone know how to solve this?

buenos’s picture

Haha! The link "add view from template" helped me..