Ok, I found a solution. For those who need it:
In clicks.module
function clicks_views_api() { return array( 'api' => 2, 'path' => drupal_get_path('module', 'clicks') . '/includes' ); }
In clicks.views.inc
function clicks_views_handlers() { return array( 'info' => array( 'path' => drupal_get_path('module', 'clicks') . '/includes', // path to view files ), 'handlers' => array( // register our custom filter, with the class/file name and parent class 'clicks_handler_filter' => array( 'parent' => 'views_handler_filter', ) ), ); } function clicks_views_data() { $data = array(); if(module_exists('clicks')) { $data['node']['clicks'] = array( 'group' => t('Clicks'), 'title' => t('Clicks left'), 'help' => t('Filter any Views based on clicks left'), 'filter' => array( 'handler' => 'clicks_handler_filter', ), ); } return $data; }
In clicks_handler_filter.inc
class clicks_handler_filter extends views_handler_filter { function admin_summary() { } function operator_form() { } function query() { $table = $this->ensure_my_table(); $join = new views_join(); $join->construct('clicks', $this->table_alias, 'nid', 'nid'); $this->query->ensure_table('clicks', $this->relationship, $join); $this->query->add_where($this->options['group'], "clicks.clicks_left", 0, ">"); } }
This gives me the opportunity to add a โclicksโ filter, which, if enabled, hides all results that donโt have left clicks (clicks_left> 0)
source share