diff --git a/ds.module b/ds.module
index d88ef69..9923c0a 100644
--- a/ds.module
+++ b/ds.module
@@ -636,7 +642,7 @@ function ds_field_attach_view_alter(&$build, $context) {
       $field['title'] = function_exists('i18n_node_translate_type') ? i18n_node_translate_type($node_type->type, 'title_label') : $node_type->title_label;
     }

-    if (!empty($field_value) || (string) $field_value === '0') {
+    if (!empty($field_value) || (string) $field_value === '0' || $field['field_type'] == DS_FIELD_TYPE_PREPROCESS && $field['module'] == 'ds') {

       // Special case for views.
       if (!empty($build['render_code_fields'])) {
@@ -683,6 +689,51 @@ function ds_field_attach_view_alter(&$build, $context) {
   }
 }

+
+/**
+ * Reorder fieldgroup parents.
+ */
+function ds_fieldgroup_get_parents($vars, $field) {
+  $got_last_parent = FALSE;
+
+  $parents[] = $field;
+
+  while ($got_last_parent == FALSE) {
+    if (isset($vars['elements']['#group_children'][$parents[count($parents) - 1]])) {
+      $parents[] = $vars['elements']['#group_children'][$parents[count($parents) - 1]];
+    }
+    else {
+      $got_last_parent = TRUE;
+    }
+  }
+
+  $parents = array_reverse($parents);
+
+  foreach ($parents as $key => $parent) {
+    if (isset($parents[$key + 1])) {
+      $new_parents[$parent] = $parents[$key + 1];
+    }
+  }
+
+  return $new_parents;
+}
+
+
+/**
+ * Recursive function to put the preprocess field data inside the display suite field placeholder.
+ */
+function ds_fieldgroup_set_preprocess_field_recursive($vars, $parent, $parents) {
+  if (isset($parents[$parent])) {
+    $data = array($parent => ds_fieldgroup_set_preprocess_field_recursive($vars, $parents[$parent], $parents));
+
+    return $data;
+  }
+  else {
+    return array($parent => array(array('#markup' => $vars[$parent])));
+  }
+}
+
+
 /**
  * Add variables to an entity.
  *
@@ -716,7 +767,20 @@ function ds_entity_variables(&$vars) {
         // Move the field to content so it renders, remove it
         // because we don't need it anymore.
         if (isset($vars[$field])) {
-          $vars[$render_container][$field] = array('#markup' => $vars[$field]);
+
+          // The field is inside a fieldgroup.
+          if (isset($vars['elements']['#group_children'][$field])) {
+            $parents = ds_fieldgroup_get_parents($vars, $field, $vars[$field]);
+
+            $parents_keys = array_keys($parents);
+
+            $data = ds_fieldgroup_set_preprocess_field_recursive($vars, $parents_keys[0], $parents);
+
+            $vars[$render_container] = array_replace_recursive($vars[$render_container], $data);
+          }
+          else {
+            $vars[$render_container][$field] = array('#markup' => $vars[$field]);
+          }
           if (!isset($vars['preprocess_keep'])) {
             unset($vars[$field]);
           }
