Index: views_attach.module
===================================================================
--- views_attach.module	(revision 1139)
+++ views_attach.module	(working copy)
@@ -60,7 +60,7 @@
       foreach ($views as $info) {
         $view = views_get_view($info['name']);
         $view->set_display($info['display']);
-        
+
         if ($view->access($info['display'])) {
           $view->current_account = $account;
           $result = $view->execute_display($info['display']);
@@ -101,10 +101,18 @@
       }
 
       $views = views_attach_get_node_views($node->type, $mode);
+      if ( empty( $views ) ) {
+        break;
+      }
+      $exclude_views =
+        module_invoke_all('filter_node_content_views', $node, $views);
       foreach ($views as $info) {
+        if ( isset($exclude_views[$info['name']]) ) {
+          continue;
+        }
         $view = views_get_view($info['name']);
         $view->set_display($info['display']);
-        
+
         if ($view->access($info['display'])) {
           $view->current_node = $node;
           $result = $view->execute_display($info['display']);
@@ -121,6 +129,20 @@
 }
 
 /**
+ * Default implementation hook_filter_content_views.  This does nothing.
+ * Modules implementing this hook should return an "exclude view" array
+ * with the format "view name" => "view name".  Any views in this will
+ * be excluded from the node display.
+ *
+ * @param nodeObject  $node
+ * @param array $views
+ * @return An array of view names to exclude.
+ */
+function views_attach_filter_node_content_views( $node, $views ) {
+  return;
+};
+
+/**
  * Get a list of views and displays attached to the specified category.
  *
  * This function will cache its results into the views cache, so it gets

