diff --git a/dart.module b/dart.module
index 0a4b502..e7687d2 100644
--- a/dart.module
+++ b/dart.module
@@ -126,6 +126,14 @@ function dart_context_plugins() {
       'parent' => 'context_reaction',
     ),
   );
+  $plugins['dart_context_reaction_settings'] = array(
+    'handler' => array(
+      'path' => drupal_get_path('module', 'dart') . '/plugins/contexts',
+      'file' => 'dart_context_reaction_settings.inc',
+      'class' => 'dart_context_reaction_settings',
+      'parent' => 'context_reaction',
+    ),
+  );
   return $plugins;
 }
 
@@ -139,6 +147,10 @@ function dart_context_registry() {
         'title' => t('DART tags'),
         'plugin' => 'dart_context_reaction_tags',
       ),
+      'dart_settings' => array(
+        'title' => t('DART settings'),
+        'plugin' => 'dart_context_reaction_settings',
+      ),
     ),
   );
 }
@@ -148,13 +160,6 @@ function dart_context_registry() {
  */
 function dart_tag($machinename) {
   $output = '';
-  $show_tag = TRUE;
-
-  // Check if the tag should be hidden based on the current context.
-  if (function_exists('context_get_plugin')) {
-    $plugin = context_get_plugin('reaction', 'dart_tags');
-    $show_tag = $plugin->execute($machinename);
-  }
 
   // Make sure this is a real tag.
   if (!$tag = dart_tag_load($machinename)) {
@@ -162,9 +167,19 @@ function dart_tag($machinename) {
     return;
   }
 
-  if ($tag->active && $show_tag) {
+  if (module_exists('context')) {
+    // Check if the tag should be hidden based on the current context.
+    if ($plugin = context_get_plugin('reaction', 'dart_tags')) {
+      $plugin->execute($tag);
+    }
+    // Override the tag's settings based on the current context.
+    if ($plugin = context_get_plugin('reaction', 'dart_settings')) {
+      $plugin->execute($tag);
+    }
+  }
+
+  if ($tag->active) {
     // Build the tag based on its display options.
-    // $output = dart_tag_build($tag);
     $output = theme('dart_tag', $tag);
   }
 
diff --git a/plugins/contexts/dart_context_reaction_settings.inc b/plugins/contexts/dart_context_reaction_settings.inc
new file mode 100644
index 0000000..18cbb86
--- /dev/null
+++ b/plugins/contexts/dart_context_reaction_settings.inc
@@ -0,0 +1,44 @@
+<?php
+
+/**
+ * Expose DART site & zone settings as context reactions.
+ */
+class dart_context_reaction_settings extends context_reaction {
+  /**
+   * Allow admins to choose what DART tags to hide.
+   */
+  function options_form($context) {
+    // Get existing values for this form.
+    $values = $this->fetch_from_context($context);
+
+    $form['dart_site'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Override DART site'),
+      '#default_value' => isset($values['dart_site']) ? $values['dart_site'] : '',
+      '#required' => FALSE,
+      '#maxlength' => 32,
+    );
+    $form['dart_zone'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Override DART zone'),
+      '#default_value' => isset($values['dart_zone']) ? $values['dart_zone'] : '',
+      '#required' => FALSE,
+      '#maxlength' => 32,
+    );
+
+    return $form;
+  }
+
+  /**
+   * Return a keyed array containing the overridden values of site and zone.
+   */
+  function execute(&$tag) {
+    foreach ($this->get_contexts() as $context_name => $context) {
+      if (!empty($context->reactions['dart_settings'])) {
+        $settings = $context->reactions['dart_settings'];
+        $tag->site = !empty($settings['dart_site']) ? check_plain($settings['dart_site']) : $tag->site;
+        $tag->zone = !empty($settings['dart_zone']) ? check_plain($settings['dart_zone']) : $tag->zone;
+      }
+    }
+  }
+}
diff --git a/plugins/contexts/dart_context_reaction_tags.inc b/plugins/contexts/dart_context_reaction_tags.inc
index f995378..1638ba3 100644
--- a/plugins/contexts/dart_context_reaction_tags.inc
+++ b/plugins/contexts/dart_context_reaction_tags.inc
@@ -1,7 +1,7 @@
 <?php
 
 /**
- * Expose themes as context reactions.
+ * Expose DART tags as context reactions.
  */
 class dart_context_reaction_tags extends context_reaction {
   /**
@@ -32,18 +32,14 @@ class dart_context_reaction_tags extends context_reaction {
    * Return TRUE as long as no contexts have the machinename-specified tag
    * marked as "hidden".
    */
-  function execute($machinename) {
-    $show = TRUE;
-
+  function execute(&$tag) {
     // Check each currently set context to see if the DART tag specified by
     // machinename should be displayed or not.
     foreach ($this->get_contexts() as $context_name => $context) {
-      if (isset($context->reactions['dart_tags']) && in_array($machinename, $context->reactions['dart_tags'], TRUE)) {
-        $show = FALSE;
+      if (isset($context->reactions['dart_tags']) && in_array($tag->machinename, $context->reactions['dart_tags'], TRUE)) {
+        $tag->active = FALSE;
         break;
       }
     }
-
-    return $show;
   }
 }
