Overview

This module exposes theme_definition_list, which will theme an array as a definition list.

Usage

Function theme_definition_list accepts a single keyed array as an argument:

theme('definition_list', $variables);

In its simplest form, $variables only requires an 'items' array:
PHP input:

$variables = array(
  'items' => array(
    array('term' => 'Term 1', 'desc' => 'Definition 1'),
    array('term' => 'Term 2', 'desc' => 'Definition 2'),
  ),
);
theme('definition_list', $variables);

HTML output:

<div class="definition-list">
  <dl>
    <div class="first">
      <dt>Term 1</dt>
      <dd>Definition 1</dd>
    </div>
    <div class="last">
      <dt>Term 2</dt>
      <dd>Definition 2</dd>
    </div>
  </dl>
</div>

An optional 'title' key will add a title to the output:
PHP input:

$variables = array(
  'items' => array(
    array('term' => 'Term 1', 'desc' => 'Definition 1'),
    array('term' => 'Term 2', 'desc' => 'Definition 2'),
  ),
  'title' => 'This is the title for my definition list',
);
theme('definition_list', $variables);

HTML output:

<div class="definition-list">
  <h3>This is the title for my definition list</h3>
  <dl>
    <div class="first">
      <dt>Term 1</dt>
      <dd>Definition 1</dd>
    </div>
    <div class="last">
      <dt>Term 2</dt>
      <dd>Definition 2</dd>
    </div>
  </dl>
</div>

A further 'attributes' key can optionally be included, which will passed on to drupal_attributes() to allow custom attributes to be added to the dl html element such as class:
PHP input:

$variables = array(
  'attributes' => array(
    'class' => 'dl_class',
  ),
  'items' => array(
    array('term' => 'Term 1', 'desc' => 'Definition 1'),
    array('term' => 'Term 2', 'desc' => 'Definition 2'),
  )
);
theme('definition_list', $variables);

HTML output:

<div class="definition-list">
  <dl class="dl_class">
    <div class="first">
      <dt>Term 1</dt>
      <dd>Definition 1</dd>
    </div>
    <div class="last">
      <dt>Term 2</dt>
      <dd>Definition 2</dd>
    </div>
  </dl>
</div>

Each term and desc can be passed as a single value (as shown above), or an array when the value is the 'data' key. Additional keys are passed on to drupal_attributes() to allow custom attributes to be added the corresponding dt/dd html elements such as class or style. First and last classed are added by default:
PHP input:

$variables = array(
  'items' => array(
    array(
      'term' => array(
        'data'  => 'Term 1',
        'class' => 'term_1_class',
        'style' => 'color:red;',
      ),
      'desc' => array(
        'data'  => 'Definition 1',
        'class' => 'desc_1_class',
        'style' => 'color:blue;',
      ),
    ),
    array('term' => 'Term 2', 'desc' => 'Definition 2'),
  )
);
theme('definition_list', $variables);

HTML output:

<div class="definition-list">
  <dl>
    <div class="first">
      <dt class="term_1_class" style="color:red;">Term 1</dt>
      <dd class="desc_1_class" style="color:blue;">Definition 1</dd>
    </div>
    <div class="last">
      <dt>Term 2</dt>
      <dd>Definition 2</dd>
    </div>
  </dl>
</div>

As of release 7.x-1.1, attributes can now be added to the dt/dl wrapping div.
Adding an array key by 'wrap' on any of $items array will result in the array
being passed on to drupal_attributes() for the wrapping div element. Should a
class key be added as a wrap attribute, first and last classes will be appended
as values.
PHP input:

$variables = array(
  'items' => array(
    array(
      'term' => array(
        'data'  => 'Term 1',
        'class' => 'term_1_class',
        'style' => 'color:red;',
      ),
      'desc' => array(
        'data'  => 'Definition 1',
        'class' => 'desc_1_class',
        'style' => 'color:blue;',
      ),
      'wrap' => array(
        'class' => 'bar',
        'key1' => 'value1',
      ),
    ),
    array(
      'wrap' => array(
        'key2' => array(
          'value2a',
          'value2b'
        )
      ),
      'term' => 'Term 2',
      'desc' => 'Definition 2'
    ),
  )
);
theme('definition_list', $variables);

HTML output:

<div class="definition-list">
  <dl>
    <div key1="value1" class="bar first">
      <dt class="term_1_class" style="color:red;">Term 1</dt>
      <dd class="desc_1_class" style="color:blue;">Definition 1</dd>
    </div>
    <div key2="value2a value2b" class="last">
      <dt>Term 2</dt>
      <dd>Definition 2</dd>
    </div>
  </dl>
</div>
Supporting organizations: 
Sponsor

Project information

Releases