Step 1

Create a “clean” Drupal install to serve as the Master.

This site, such as, runs the UniCal module; serves the REST endpoint; and provides the tools for administrators to create new events.

Please Note: If you plan to deploy UniCal on an existing Drupal installation, it’s your responsibility to test against pre-existing modules and configurations. We don’t know what you’re running, so we can’t anticipate how our module might interact with your system.

Step 2

Add UniCal module, and all dependencies to your codebase.

  • UniCal module should be installed in sites/all/modules folder. This is important for the JS embed script that will eventually be generated.
  • There may be several dependencies that Unical Features needs, depending on your starting install profile, some may need to be added.

Enable UniCal.

  • Install specific version of restful module [drush dl restful-7.x-1.6]. This is currently necessary until we upgrade restful to 2.x. If you have not setup drush before then steps on how to install drush can be found here.
  • Enable UniCal, UniCal features, UniCal Client and all other needed dependencies. (TIP: You can use drush to enable and download all needed dependencies via drush en unical)
  • Enable UniCal Features, then turn the unical feature on at admin > structure > features. This creates the content types, taxonomies, fields, etc that you will need to run UniCal. (Tip: Use drush to enable and download all needed dependencies via drush en unical_features)
  • Be sure the Date Repeat field module is also enabled.

Step 3

Create your First Calendar.

  • Go to node > add > site
  • Fill out necessary information, and hit save.
  • Viewing that node should now show you the calendar you just created.
  • Add a few test events, to begin to see how everything works [node > add > event].

Step 4

Define your Taxonomies.

By default, taxonomies are blank in UniCal. Define as many as you need [e.g., Audience, Category, School / College, Location] then populate each one with relevant categories, such as:

  • Audience
    • Alumni & Friends
    • Faculty
    • Staff
    • Students

Visitors can filter events by taxonomy.

Administrators can create custom calendars and define moderator roles by taxonomy.

Step 5 [Optional]

Adjust .htaccess file.

modifications are necessary to both re-route social bots the actual node page [php] of the main site, in order to scrape, and to allow use of non # urls. The following rules assume that your events are in the format /event/NID/TITLE, and be sure to modify YOUR_MAIN_INSTALL_URL with actual url of your main site, so that facebook bots/are redirected to the stock drupal node of the event.

# Allow social media crawlers to work by redirecting them to a server-rendered static version on the page

RewriteCond %{HTTP_USER_AGENT} (facebookexternalhit/[0-9]|Twitterbot|Pinterest|Google.*snippet)
RewriteRule event/(.*)/(.*) YOUR_MAIN_INSTALL_URL/node/$1 [P]

# Workaround to be able to use non # url in the calendar

RewriteCond %{HTTP_USER_AGENT}
RewriteCond %{REQUEST_URI} !^/admin
RewriteRule event/(.*)/(.*) http://%{HTTP_HOST}/#%1/event/$1/$2 [NE,L]

Step 6 [Optional]

Create Additional Sites / Calendars.

Your Main Calendar will probably include every taxonomy. However, a custom Alumni Calendar could be limited to an Audience / Alumni & Friends. That way only the events associated with “Alumni & Friends” will appear on your custom calendar.

  • Go to node > add > site
  • Enter your Site Name [e.g., Alumni Calendar].
  • Taxonomies
    • Enable the Taxonomies that will be:
      • Visible on the Front-End
      • Pre-Filtered
  • Help Text
    • Add any Custom Text to display above the Sidebar and the Filters.
    • If you plan to create a Help / Basic Page, you can link to it here.
  • Site Specific Settings
    • Indicate if this Site is the Main Calendar. I.e., the default calendar for your website.
    • Upload an image as your default image.
    • Enable options to:
      • Allow Featured Events: Show the slideshow carousel.
      • Allow Event Submit: Allow visitors to submit events anonymously.
      • Allow Archive: Show past events.
      • Allow Users to Choose Taxonomy When Submitting Events
    • Google Maps API Key: Each Site / Calendar needs its own Google API Key to display Google Maps within each event detail.
    • Add to Calendar Services: Exclude any services you don’t want to see in the Add to Calendar plugin.
    • Number of Results per Page: Indicate the number of events to appear before a visitor sees the Load More button.
  • Click Save.

Step 7 [Optional]

Enable the UniCal Client module for client sites.

This module lets you display your events on any client server, via Drupal or JS/HTML, as long as you can connect to the Master for API calls.

  • Go to the calendar [on Master site] you wish to embed somewhere.
  • Click Embed / Install Instructions.
    • View the Site URL / Site ID, and add these to the settings of any drupal site running the UniCal Client module.
    • Add the Manual Embed code in two places:
      • In the head of the document, add the base href='/' tag.
        (This lets the angular app run in html5 mode.)
      • In the body, embed the code where you want the calendar to appear.

Note: If SEO / sharing is a priority, modify the .htaccess [or equivalent] file on the client site.

Step 8 [Optional]

Enable the UniCal Styles module for master site.

This module lets you display customized styles for all master and client sites.

  • You will need to customize the css of this module to hold any desired styles.
  • We have provided a base stytles outline to get you started.

Note: If you are not using this module, you may need to modify the JS embed code that is generated for each site.

Need Help?

Not everyone’s a developer. If you’re looking for someone else to take care of implementing, customizing and configuring UniCal for your site, we know some folks who can take care of it all.
Spoiler alert: It’s us.

Contact Us


More documentation, as well as community contributed Wikis, and bug tracking is available over at GitHub.

Go To GitHub


Within the Drupal 7 UniCal Master Installation

admin > help > unical
admin > help > unical_client

Cross Origin Resource Sharing [CORS]