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
