background image
HomeRecent PostsDrupalSearchTagsRSSContactAboutAccount
Eric.London's picture

You've probably seen the accordion effect in use at Apple's website. I recently implemented this plugin in a Drupal module to get a similar effect.

First, download the plugin from Bassistance. I stuck the jquery.accordion.js in my module directory and then included it using the following code:

<?php
drupal_add_js
(drupal_get_path('module','MYMODULENAME') . '/jquery.accordion.js');
?>

I created a dataset to use with the theme_item_list function. For this example, I'll query the node table.

<?php
$sql
= "select title from {node} where status='1' order by title asc";
$resource = db_query($sql);
$results = array();
while (
$row = db_fetch_array($resource)) $results[] = $row;
?>

I looped through the dataset and created an item list array consisting of an A tag and a DIV.

<?php
$items
= array();
foreach (
$results as $k => $v) {
 
// NOTE: you should use the l() function here, excuse my example
 
$items[] = "<a>{$v['title']}</a><div>MYTEXTHERE</div>";
}
?>

I used the theme function to generate the html for a UL with a unique identifier.

<?php
$title
= MYTITLE;
$type = 'ul';
$attributes = array(
 
'id' => 'MYITEMLISTID',
);
$page_contents .= theme('item_list', $items, $title, $type, $attributes);
?>

Last, I added the jQuery to apply the accordion effect to my UL.

<?php
$(document).ready(function(){
  $(
'#MYITEMLISTID').accordion();
});
?>

Syndicate content