diff --git a/modules/dart_taxonomy/dart_taxonomy.module b/modules/dart_taxonomy/dart_taxonomy.module
index a3a7e80..330d04e 100644
--- a/modules/dart_taxonomy/dart_taxonomy.module
+++ b/modules/dart_taxonomy/dart_taxonomy.module
@@ -48,6 +48,12 @@ function dart_taxonomy_form_alter(&$form, &$form_state, $form_id) {
           '#title' => t('Include taxonomy terms as key|value pairs'),
           '#default_value' => (isset($tag->settings['options']['include_terms']) ? $tag->settings['options']['include_terms'] : '0'),
         );
+        
+        $form['settings']['display_options']['include_parent_terms'] = array(
+          '#type' => 'checkbox',
+          '#title' => t('Include all taxonomy term ancestors as key|value pairs'),
+          '#default_value' => (isset($tag->settings['options']['include_parent_terms']) ? $tag->settings['options']['include_parent_terms'] : '0'),
+        );
       }
       break;
 
@@ -184,6 +190,7 @@ function dart_taxonomy_form_alter(&$form, &$form_state, $form_id) {
  */
 function dart_taxonomy_dart_tag_settings_data_structure_alter(&$structure) {
   $structure['options'][] = 'include_terms';
+  $structure['options'][] = 'include_parent_terms';
 }
 
 /**
@@ -225,6 +232,15 @@ function dart_taxonomy_dart_key_vals($tag) {
           foreach ($field_items as $item) {
             if (!isset($terms[$item['tid']])) {
               $terms[$item['tid']] = isset($item['taxonomy_term']) ? $item['taxonomy_term'] : taxonomy_term_load($item['tid']);
+              if (isset($tag->settings['options']['include_parent_terms']) && $tag->settings['options']['include_parent_terms']) {
+                // Include all parent terms
+                $ancestors = taxonomy_get_parents_all($item['tid']);
+                foreach ($ancestors as $term) {
+                  if (!isset($terms[$term->tid])) {
+                    $terms[$term->tid] = $term;
+                  }
+                }
+              }
             }
           }
         }
