In Views areas (header, footer, empty-text) are pluggable, this means you can write your own php logic to place whatever you want.


You should have read API and Tables API to get a basic knowledge how to extend views.

Create your own area handler

The first step is to tell views: Hey i want to add a new area handler. Therefore you have to implement hook_views_data and add a new one. For example:
function yourmodule_views_data() {
  $data['views']['collapsible_area'] = array(
    'title' => t('Collabsible Text area'),
    'help' => t('Provide collabsible markup text for the area.'),
    'area' => array(
      'handler' => 'yourmodule_handler_collapsible_area_text',
  return $data;
The second step is to write this handler. Therefore create a file called and add it to the .info file of your module. Then add content to your area file like this:
class yourmodule_handler_collapsible_area_text extends views_handler_area_text {
  function render($empty = FALSE) {
    // Here you just return a string of your content you want.
    if ($render = parent::render($empty)) {
      $element = array(
        '#type' => 'fieldset',
        '#title' => t('Title'),
        '#value' => $render,
      $output = theme('fieldset', $element);
      return $output;
As on every handler you can add options so you can configure the behavior. If the area isn't shown yet in the views interface, please clear the cache :)