I have created a calendar module in Drupal 7. In addition to the default calendar on the website, my client can create a new calendar for events specific to a particular page. Say that they want to add "Youth" and "College and Career" calendars; the db table looks like this: table: churchcal_calendars ------id------|------name-----|------set_default------ ------1-------------Main---------------1-------- ------2-------------Youth--------------0--------- ------3-------College and Career---------0----------- In my churchcal.module file, I have set hook_block_info and hook_block_view: function churchcal_block_info() { $blocks = array(); $blocks['monthly_calendar'] = array( 'info' => t('Display the monthly calendar.'), 'cache' => DRUPAL_NO_CACHE, ); //get calendars include('db.php'); $result = mysql_query("SELECT * FROM churchcal_calendars WHERE set_default != '1'"); while($row = mysql_fetch_array($result)) { $cal_name = $row['name']; $sys_cal_name = strtolower(str_replace(' ', '_', $cal_name)); $blocks['churchcal_' . $sys_cal_name] = array( 'info' => t('Display calendar for ' . $cal_name . '.'), 'cache' => DRUPAL_NO_CACHE, ); } return $blocks; } function churchcal_block_view($block_name = '') { if ($block_name == 'monthly_calendar') { $content = monthlyCalendar(); $block = array ( 'subject' => t(''), 'content' => $content, ); } //get calendars include('db.php'); $result = mysql_query("SELECT * FROM churchcal_calendars WHERE set_default != '1'"); while($row = mysql_fetch_array($result)) { $cal_name = $row['name']; $sys_cal_name = strtolower(str_replace(' ', '_', $cal_name)); $cal_id = $row['id']; if($block_name == 'churchcal_' . $sys_cal_name) { $content .= churchCal($cal_id); $block = array( 'subject' => t('Upcoming Events'), 'content' => $content, ); } return $block; } } The "monthly_calendar" is the main calendar, and there is no problem with that block. Beneath the monthly calendar is the code for the additional calendars. I can see each calendar in admin/structure/block page (for the example "Display calendar for Youth", "Display calendar for College and Career"). That part works great. However, **I can only see one calendar**, and that is whichever is first in the db with default != 1. In this example, the Youth calendar would display, but not the College and Career. So, it tells me that hook_block_info is correct and there is a problem with hook_block_view. How can I display a calendar for each calendar in the db?