--- comment-template.php (latest)
+++ comment-template.php (working copy)
@@ -846,17 +846,15 @@
  *
  * @param string $file Optional, default '/comments.php'. The file to load
  * @param bool $separate_comments Optional, whether to separate the comments by comment type. Default is false.
+ * @param bool $require Optional, whether to include a comment file. Default is true.
  * @return null Returns null if no comments appear
  */
-function comments_template( $file = '/comments.php', $separate_comments = false ) {
+function comments_template( $file = '/comments.php', $separate_comments = false, $require = true ) {
 	global $wp_query, $withcomments, $post, $wpdb, $id, $comment, $user_login, $user_ID, $user_identity, $overridden_cpage;
 
 	if ( !(is_single() || is_page() || $withcomments) || empty($post) )
 		return;
 
-	if ( empty($file) )
-		$file = '/comments.php';
-
 	$req = get_option('require_name_email');
 
 	/**
@@ -909,14 +907,19 @@
 
 	if ( !defined('COMMENTS_TEMPLATE') )
 		define('COMMENTS_TEMPLATE', true);
-
-	$include = apply_filters('comments_template', STYLESHEETPATH . $file );
-	if ( file_exists( $include ) )
-		require( $include );
-	elseif ( file_exists( TEMPLATEPATH . $file ) )
-		require( TEMPLATEPATH . $file );
-	else // Backward compat code will be removed in a future release
-		require( ABSPATH . WPINC . '/theme-compat/comments.php');
+	
+	// require a comments.php file?
+	if ( $require !== false) {
+		if ( empty($file) )
+			$file = '/comments.php';
+		$include = apply_filters('comments_template', STYLESHEETPATH . $file );
+		if ( file_exists( $include ) )
+			require( $include );
+		elseif ( file_exists( TEMPLATEPATH . $file ) )
+			require( TEMPLATEPATH . $file );
+		else // Backward compat code will be removed in a future release
+			require( ABSPATH . WPINC . '/theme-compat/comments.php');
+	}
 }
 
 /**
