モジュール:Viewsにフィル―ドを「リレーションシップ」(QueryでテーブルのJOIN)、「前後関係からみたフィルター」(ユーザーID、URLのパラメータなどの環境要素フィルター)に追加したりすることが、hook_views_data_alterを使えば比較簡単的にできます。このカスタマイズがいろいろなウェブページで紹介されています。例えばDrupal本家のAPI紹介画面で「リレーションシップ」追加のサンプルがあります。
// This example adds a relationship to table {foo}, so that 'foo' views can
// add this table using a relationship. Because we don't want to write over
// the primary key field definition for the {foo}.fid field, we use a dummy
// field name as the key.
$data['foo']['dummy_name'] = array(
'title' => t('Example relationship'),
'help' => t('Example help'),
'relationship' => array(
'base' => 'example_table', // Table we're joining to.
'base field' => 'eid', // Field on the joined table.
'field' => 'fid', // Real field name on the 'foo' table.
'handler' => 'views_handler_relationship',
'label' => t('Default label for relationship'),
'title' => t('Title seen when adding relationship'),
'help' => t('More information about relationship.'),
),
);
上記サンプルコードを利用して、「リレーションシップ」にフィールドを追加します
$data['field_data_field_er_question_answer_id']['field_er_question_answer_id_value']= array(
'title' => t('Question ID'),
'help' => t('The ID of 4-selection-questions data'),
'relationship' => array(
'base' => 'node',
'base field' => 'nid' ,
'label' => t('node id related to question id'),
'handler' => 'views_handler_relationship',
'title' => t('nid'),
'help' => t('The question id of the 4-selection-questions'),
),
);