Skip to main content

You are here

Including Site-Specific Files and Code in a Drupal Site

With every site we develop, we include a custom module directory, sites/all/modules/mysite. In this directory we place all of the custom style sheets, javascript files and php code specific to our site at

First we create a file,

name = mysite
description = Various functions and files required by
core = 7.x
package = Other
; Uncomment and expand the following lines as required.
; Files containing classes
;files[] =
;stylesheets[all][] = mysite.css
;scripts[] = mysite.js

Any special stylesheets or javascript files are placed in the modules/mysite directory, and references with the appropriate directive are put in the modules/mysite/ file. This allows the files to be aggregated and cached on a production site, improving performance, and it means that the modifications are not overwritten when the core, a theme or a module is upgraded. Any scripts or stylesheets defined in the .info file will be loaded by hook_init() and will be aggregated and included on every page. More information is available on the Drupal site here.

We also create a file, mysite.module, containing any site-specific php code which might be necessary. The most common function in this module is mysite_cron(), which implements any special maintenance tasks necessary for the site to function. Even if you do not have any site-specific functions, place an empty mysite.module file in the modules/mysite directory so your module can be activated under admin/modules.

* mysite.module
* Add any site specific tasks and hook implementations below.

The sky is the limit here, but the intent of this method is to create a repository of all those little odds and ends you include in any site development.

If you are developing a major function for your site, you are advised to do it in its own module, and perhaps put it up on the Drupal site, as others may have an interest in it. That way you have the whole community testing, coding, proposing upgrades, etc.


It should be noted that the cascading stylesheets defined in the modules are loaded at the beginning of page generation. Any general style changes may be overwritten by the theme stylesheets. If you are trying to override a theme default, place them in a mysite.css file in the theme directory and add a directive to as follows:

stylesheets[all][] = style.css
stylesheets[all][] = mysite.css ;custom styles to override theme defaults, must be last in list

Placing your mysite.css as the last style sheet in the list ensures that it is loaded last. This way your style changes are not overwritten if you upgrade the theme. You will, however, have to recreate the directive in the new file.

Link to this page

To refer others to this page copy the following link code and paste it into your page, blog, text or email.

Premium Drupal Themes by Adaptivethemes