Exclude whole content types from your Drupal search results
Here's an easy way to entirely exclude all nodes of a certain content type from your search results using hook_db_rewrite_sql. Simply create a Drupal module containing the following snippet, and change the $excluded_content_types array to contain the content types you wish to exclude, and yourmodule with the name of your module:
/** * Implementation of hook_db_rewrite_sql(). */ function yourmodule_db_rewrite_sql( $query , $primary_table , $primary_field , $args ) { // Exclude the following content types from the search results $excluded_content_types = array ( 'page' , 'story' ); if ( $query == '' && $primary_table == 'n' && $primary_field == 'nid' && empty ( $args )) { $where = " n.type NOT IN ('" . implode( "', '" , $excluded_content_types ) . "') " ; return array ( 'where' => $where ); } } |
This example should work for Drupal 5 and 6.
NOTE: This article was first published on The Web Developer's Blog, which has now been discontinued.
—
Posted Mon, 28 Nov 2011 - 15:57