If you're using Panels to display dynamic content, you might want to dynamically check whether to display the panes based on what will be shown. For example, if there is no content to show in a certain pane, you probably don't want the pane to show at all.
You may especially want to do this if your theme will do anything ugly, or just unnecessarily conspicuous, with any HTML that is wrapping empty content.
We are all settled in to our new offices on the triangle and are loving the new office - we just can't wait for the summertime so we can enjoy our courtyard (wi-fi has been tested and confirmed working - just need to figure out some kind of sun visor for the screens).
Our new address is
Lower Ground Floor,
20 Meridian Place,
Phone numbers etc remain the same (quite how BT managed this without getting something wrong we will never know!).
Quite often you need to redirect a particular path on a Drupal site, there are a number of ways to do this, but most involve writing PHP code. Also, it's not hugely easy to do things like redirect node/%node but only when %node is a 'image' node, posted on a Tuesday. The awesome Page manager module, and a little utility module we wrote changes that.
Views is awesome. You get a ton of flexibility and power, but that comes at a price: Some of the queries that views produces are less than optimal, and the rendering of results can take a long time. Views 2.6 introduced a nice solution to some of the issues, with the introduction of caching plugins.
Views itself comes with a single cache plugin (okay, okay two if you're really counting) that is time-based. So you can say: "I don't care if I show content that's 6 hours old" and it'll handle it fine. I've been thinking for a while that there should really be a better way, if you've got a view listing blog posts, you only really need to flush the cache on that view when a new blog post is added, or and existing one is updated or deleted. After a client really needed this, I looked into it and found some code lying around in the views issue queue written by huesforalice. I cleaned it up some and created a module, presenting:
Computerminds were due to attend the latest DrupalCon over in San Francisco, however Eyjafjallajokull had other ideas. With planes grounded and Europe at a standstill (in the air) we couldn't make it.
However, an amazing bunch of people came together a couple of days before the start of Drupalcon proper to set up: DrupalVolCon London.
DrupalVolCon was really cool, we watched the drupalcon keynotes from SF on a projector, and ate lots of pizza. We also presented sessions to each other, unconference style, here are some of the highlights:
Want to check what your nodes look like as teasers really easily? Fire up the views module and import the attached view. It adds a 'Teaser' tab to nodes alongside the View/Edit/etc. tabs, so you can select it and the node is displayed as a teaser (or you can go to node/<nid>/teaser manually).
If you need to perform the same repetitive task on a bunch of nodes you can script the operation using PHP, but sometimes it can take a long time to write and test the PHP and even then you have to get the script to the server and execute within a certain time etc.
Nodequeues are a really useful way of building ordered lists of content and they integrate amazingly with views and have quite a nice interface for adding/removing nodes. Out of the box you can create queues and choose node types that can be added to the queues, and roles that can manipulate the queues, with a little more effort and some code you can do a lot more. We had built a media competition feature for a client; they can create a competition into which users can post photos or videos that can then be voted and commented on.
We've recently set up a Hudson Continuous Integration build server to help us with testing our sites. We got selenium up and running fairly quickly, it installs and tests all the sites and Hudson has aplugin to report the results from selenium tests. But we also wanted to run simpletests and report those results too. This article explains how I've set it up on our server, and will hopefully give you a head start on the way to getting it set up on yours.