How to use custom bootstrap libraries for bootstrap subthemes

| | 2 min read

Bootstrap is the most popular HTML, CSS, and JavaScript framework for developing responsive, mobile first websites. This framework is also a popular star in drupal themes. There are a lot of drupal themes based on bootstrap, using bootstrap library or subthemes created from bootstrap base theme. Its mobile ready design and predefined classes makes it easier to create a beautifully customized responsive theme.

While working on a project I had a requirement to make permanent hamburger menu (That's right, the button with three lines at the top of any mobile page created using bootstrap) regardless of the viewport resolution. Default behaviour of bootstrap is like this, when the viewport width become less than 768 pixels, the main menu will collapse into hamburger button. I had to change this behaviour.

This can be done by customizing the bootstrap library from http://getbootstrap.com/customize/

The break point at which main menu collapses to hamburger menu is defined inside @grid-float-breakpoint variable in the bootstrap customization page. We can set that to any screen width. Main menu will be collapsed to hamburger if viewport width is less than the width specified here. I placed 9999px in that field (Hoping nobody is using such resolution devices for browsing!!). This will change the grid-float-breakpoint and hamburger menu will always show. We can download the customized library and replace our bootstrap library to see the changes. Easy right?

Well not that easy, because the bootstrap base theme is getting the bootstrap library (CSS and JS) from bootstrap CDN and here we are using a customized bootstrap library. Bootstrap theme does not allow using custom library for bootstrap. Well, there is a module for everything in drupal.

Here I am using a module called bootstrap_library which basically does nothing other than allow us to use custom bootstrap libraries to our bootstrap sub-themes.

1. Disable the Bootstrap CDN from our sub-theme by going to Appearence > Select settings of our subtheme > Advanced and disable the CDN.

2. Copy the extracted custom bootstrap library to sites/all/libraries/bootstrap. The bootstrap.min.js file location must be sites/all/libraries/bootstrap/js/bootstrap.min.js so that it is detected properly by the module.

3. Enable module bootstrap_library and goto "admin/config/development/bootstrap_library" and select bootstrap and our sub-theme from the multi-select box in the "Theme Visibility" fieldset and save.

That's it. The above steps will enable us to use any customized version of bootstrap. Happy bootstrapping folks. :)