diff --git a/panels_mini/panels_mini.module b/panels_mini/panels_mini.module
index f701893..fd58e5f 100644
--- a/panels_mini/panels_mini.module
+++ b/panels_mini/panels_mini.module
@@ -161,14 +161,25 @@ function panels_mini_block_list_alter(&$blocks) {
 
     if (!empty($panel_mini->requiredcontexts)) {
       if (!$current_page || empty($current_page['contexts'])) {
-        unset($blocks[$key]);
-        continue;
+        foreach ($panel_mini->requiredcontexts as $context) {
+          if (empty($context['optional'])) {
+            unset($blocks[$key]);
+            continue;
+          }
+        }
       }
       else {
         $required = array();
         foreach ($panel_mini->requiredcontexts as $context) {
           $info = ctools_get_context($context['name']);
-          $required[] = new ctools_context_required($context['identifier'], $info['context name']);
+
+          // Check if the required context is actually required.
+          if (!empty($context['optional'])) {
+            $required[] = new ctools_context_optional($context['identifier'], $info['context name']);
+          }
+          else {
+            $required[] = new ctools_context_required($context['identifier'], $info['context name']);
+          }
         }
         if (!ctools_context_match_requirements($current_page['contexts'], $required)) {
           unset($blocks[$key]);
