Tech Articles

Behat step: Get IE version

<?php
 
/**
   * Determines whether the current browser is Internet Explorer.
   *
   * @return int
   *   If the browser is IE, the IE version will be returned. Otherwise, -1.
   */
 
public function getIeVersion() {
   
$ie_version = $this->getSession()->evaluateScript('

Maintaining your installed Drupal distro

Drupal.org provides a number of pre-packaged distributions (e.g., Drupal Commons, DKAN, etc.) that allow users to get a fully-featured Drupal installation up and running in no time, but maintaining an installed distribution can be tricky. You may need to juggle distribution updates with contrib module updates, core updates, and your own customizations. If you aren't careful, it can become a maintenance nightmare!

The Drupal community has a few tools for dealing with common maintenance problems, but you'll be hard pressed to find comprehensive documentation on the matter. This blog post will make an attempt to codify best practices for maintenance of an installed distribution.

Let's start by establishing some goals. In maintaining an installed distribution, I'd like to:

Introducing Views Cache Bully: You're gonna cache your views, and you're gonna like it.

views cache bully admin settingsTucked away under the Views UI's "advanced" fieldset is a too-seldom-used option: Views caching. It allows you to cache the query results and/or rendered markup for any given view. This can drastically improve your site's performance.

Unfortunately, many people don't use this option. Maybe they don't know about it, maybe they've forgotten about it, or maybe they don't like it. Well, the Views Cache Bully module is here to say "Too bad. You're gonna cache your views, and you're gonna like it."

To quote Dave Stoline (dstol):

CapitalCamp Presentation: Building an API (that people will actually use)


Uploading a copy of the CapitalCamp 2013 presentation given by David Platek and me:

If you attended the presentation, please feel free to leave feedback below!

Presentation description:

Learn why and how to expose your Drupal installation’s data and functionality via an API, and entice developers to extend your application’s reach through supportive documentation, implementation examples, and even SDKs.

Tags: 

jQuery sticky menu / sidebar

To make a sticky sidebar or stick menu (as feature on the left hand side of this page:

// Sticky nav bar.
fixed = false;
navBar = $(".region-sidebar-first");
threshold = navBar.offset().top;
$(window).scroll(function() {
belowThreshold = $(window).scrollTop() >= threshold;
// Note that we only make the navbar sticky if the window height is
// greater than the height of the navbar. Otherwise, you could never
// see the entire navbar.
if (!fixed && belowThreshold && navBar.outerHeight() < $(window).height()) {
navBar.addClass("fixed");
fixed = true;
}
else if (fixed && !belowThreshold) {
navBar.removeClass("fixed");
fixed = false;
}
});

Installing XHProf for Drupal

There are many ways to install XHProf, but at the end of the day, you need to accomplish the same basic set of tasks:

I found all of the various methods a bit overwhelming, so I've put together this page a resource to help you 1) Know the options, and 2) Find corresponding tutorials.

Install XHProf on your system

Here are the basic methods for getting XHProf onto your system:

Building a Multistep Registration Form in Drupal 7 using Ctools

This article provides a step-by-step tutorial for creating a custom, multistep registration form via the Ctools Form Wizard in Drupal 7. If you'd prefer to solely use the core Form API, take a look at Building a Multistep Registration Form in Drupal 7, a previous blog post. In the interest of saving time, I'm going to be lifting some text directly from that post, given that there are a number of overlapping tasks.

Why use the Chaos Tools module to build a multistep form? Well, Ctools offers a number of tools that build upon the core Form API, allowing you to create a multistep form faster. This includes providing a method for caching data in between steps, adding 'next' and 'back' buttons with associated callbacks, generating a form breadcrumb, etc.

Pages