When you tries to make a views intergration of a custom field type you have the problem that you dont know the name of the table - the tables are made when an instance of the field is created. Many instances can be created and you dont know there name when you write youre module. (field_data_somename)
How do you write the hook_views_data()?
I been looking into some contributed modules(resource_booking, geofield) and i found a solution, i thought:
function geofield_field_views_data($field) {
$data = field_views_field_default_views_data($field);
$field_name = $field['field_name'];
foreach ($data as $table_name => $table_data) {
if (isset($table_data[$field_name])) {
$group_name = $table_data[$field_name]['group'];
$title = $table_data[$field_name]['title'] . " ($field_name) - proximity";
$data[$table_name]['field_geofield_distance'] = array(
... snipp ...
(from the geofield.views.inc)
Greate - I get the the values from field_views_field_default_views_data function. Except that hook_view_data doesn´t have a $field argument. In fact - the API says that it doesnt have any arguments - and if I write a hook_views_data($field) i dont get any $field - i get "Warning: Missing argument 1 for hook_views_data()"
I dont get it - is there a way to make the hook_views_data having a $field argument? I looked at these module and I cant find how they do.
Perhaps theres a better way to do it - but this solution seems a good one - if it worked.