'node', 'fields' => array( 'nid' => array( 'name' => t('Image: Display Image'), 'handler' => array( 'views_handler_image_img' => t('Image'), 'views_handler_image_img_link' => t('Image with link'), ), 'query_handler' => 'views_query_handler_display_image', 'notafield' => true, 'sortable' => false, ), ), 'filters' => array( 'filename' => array( 'name' => t('Image: Size'), 'list' => 'views_handler_filter_image_size', 'list-type' => 'list', 'operator' => 'views_handler_operator_or', 'value-type' => 'string', 'handler' => 'views_handler_image_filter_size', 'help' => t('Include or Exclude these image sizes.'), ), ), ); return $tables; } function views_handler_image_img($fieldinfo, $fielddata, $value, $data) { $node = node_load($data->nid); return theme('image_display', $node, '', file_create_url($data->filepath), array()); } function views_handler_image_img_link($fieldinfo, $fielddata, $value, $data) { $node = node_load($data->nid); return l(theme('image_display', $node, '', file_create_url($data->filepath), array()), "node/{$node->nid}", array(), NULL, NULL, FALSE, TRUE); } function views_handler_filter_image_size($op) { foreach (_image_get_sizes() as $size) { $a[$size['label']] = $size['label']; } $a['_original'] = 'original'; return $a; } function views_handler_image_filter_size($op, $filter, $filterdata, &$query) { switch ($op) { case 'handler': $query->add_field('filename', 'files'); $query->add_where("files.filename IN ('". implode("','", $filter['value']) ."')"); } } function views_query_handler_display_image($field, $fieldinfo, &$query) { $query->add_field('filepath', 'files'); }