diff --git a/ds.module b/ds.module
index 03864c8..beede19 100644
--- a/ds.module
+++ b/ds.module
@@ -865,31 +865,52 @@ function ds_render_ctools_field($field) {
  * Render a block field.
  */
 function ds_render_block_field($field) {
-  global $theme;
+  global $theme_key;
 
   // The the block definition and invoke the hook.
   list($module, $delta) = explode('|', $field['properties']['block']);
-  $block = db_query("SELECT * FROM {block} WHERE module = :module AND delta = :delta AND theme = :theme", array(':module' => $module, ':delta' => $delta, ':theme' => $theme))->fetchObject();
+  $block = db_query("SELECT * FROM {block} WHERE module = :module AND delta = :delta AND theme = :theme", array(':module' => $module, ':delta' => $delta, ':theme' => $theme_key))->fetchObject();
 
-  // In case there is no definition, the block is either removed or the block
-  // list hasn't been updated yet.
+  // In case there is no definition, create a fake block object.
   if (empty($block)) {
-    return;
+    $block = new stdClass;
+    $block->module = $module;
+    $block->delta = $delta;
+    $block->theme = $theme_key;
+    $block->title = '';
+    $block->region = '';
+    $block->weight = 0;
+    $block->status = 1;
+    $block->bid = 0;
+    $block->custom = 0;
+    $block->visibility = 0;
+    $block->pages = '';
+    $block->cache = -1;
   }
 
   // Invoke the block hook.
   $array = module_invoke($block->module, 'block_view', $block->delta);
 
+  // Make sure the subject key is set.
+  if (!isset($array['subject'])) {
+    $array['subject'] = '';
+  }
+
+  // Set the subject from title in case it's empty.
+  if (empty($array['subject']) && !empty($block->title)) {
+    $array['subject'] = $block->title;
+  }
+
   // Allow modules to modify the block before it is viewed, via either
   // hook_block_view_alter() or hook_block_view_MODULE_DELTA_alter().
   drupal_alter(array('block_view', "block_view_{$block->module}_{$block->delta}"), $array, $block);
 
-  if (!empty($array)) {
+  // Copy over the title to the subject.
+  if (!empty($array['title'])) {
+    $array['subject'] = $array['title'];
+  }
 
-    // Make sure the subject key is set.
-    if (!isset($array['subject'])) {
-      $array['subject'] = '';
-    }
+  if (!empty($array)) {
 
     // Set the subject on the $block object as a property since
     // that is used in the block template.
@@ -898,8 +919,10 @@ function ds_render_block_field($field) {
       $block->subject = '';
     }
 
-    // Run drupal_render on $array['content'];
-    $array['content'] = drupal_render($array['content']);
+    // Run drupal_render on $array['content'] in case it's not a string.
+    if (is_array($array['content'])) {
+      $array['content'] = drupal_render($array['content']);
+    }
 
     switch ($field['properties']['block_render']) {
       case DS_BLOCK_TEMPLATE:
