Index: mysite.module
===================================================================
--- mysite.module	(revision 1057)
+++ mysite.module	(working copy)
@@ -734,7 +734,8 @@
           $data[$item->position][$i]['format'] = $item->format;
           $data[$item->position][$i]['locked'] = $item->locked;          
           $settings = unserialize($item->settings);
-          $data[$item->position][$i]['output'] = module_invoke('mysite_type', $item->type .'_data', $item->type_id, $settings);
+          $data[$item->position][$i]['output'] = module_invoke('mysite_type', $item->type .'_data', $item->type_id, $settings);
+          if (is_null($data[$item->position][$i]['output'])) { unset($data[$item->position][$i]); continue; } // skip empty items
           $data[$item->position][$i]['link'] = $data[$i]['output']['base'];
           if (!$item->locked && (user_access('edit mysite') && $user->uid == $uid) || user_access('administer mysite')) {   
             $data[$item->position][$i]['actions'] = theme('mysite_actions', $item->uid, $item->mid);
Index: plugins/types/droplet.inc
===================================================================
--- plugins/types/droplet.inc	(revision 1057)
+++ plugins/types/droplet.inc	(working copy)
@@ -89,7 +89,8 @@
     // get the stored data for the droplet
     $droplet = mysite_get_custom('droplet', $type_id);
     // pass $droplet by reference in order to parse the subtype and key    
-    $content = mysite_type_droplet_get_content($droplet);
+    $content = mysite_type_droplet_get_content($droplet);
+    if (!strlen($content)) { return; } // do not render empty blocks
     $data = array(
       'base' => $droplet->base,
       'xml' => $droplet->xml
