Как описать дополнительные файлы в своём модуле для Views?

Аватар пользователя strelkov.av strelkov.av 25 января в 22:03

Добрый день, столкнулся с проблемой.
Подключаю к Views свою таблицу для отображения данных, т.е. использую hook_views_data
Если судить по большинству статей в Интернете, то всё просто, создаётся YOUR_MODULE.module файл, в котором:

<?php
/**
 * Implements hook_views_api().
 */

function YOUR_MODULE_views_api() {
  return array(
    
'api' => 3,
  );
}
?>

и файл YOUR_MODULE.views.inc , в котором:

<?php
/**
 * Implements hook_views_data().
 */
function YOUR_MODULE_views_data() {
  
$data['example_table']['table']['group'] = t('Example table');
  
$data['example_table']['table']['base'] = array(
    
'field' => 'nid',
    
'title' => t('Example table'),
    
'help' => t('Example table contains example content and can be related to nodes.'),
    
'weight' => -10,
  ); 
  return 
$data;
}
?>

Вопрос заключается в следующем, а если хочу в одном модуле описать каждую таблицу в отдельном файле, т.е. не помещать всё описание всех таблиц в один файл YOUR_MODULE.views.inc, а для каждой таблицы создать свой файл, в какой нибудь папке includes например, и называть их TABLE_ONE.views.inc, TABLE_TWO.views.inc, ...

Пробовал создавать такие файлы в папке includes в корне модуля, в каждом файле отдельно описывал таблицу

table_one.views.inc

<?php
/**
 * Implements hook_views_data().
 */
function YOUR_MODULE_views_data() {
  
$data['table_one']['table']['group'] = t('Table one');
  
$data['table_one']['table']['base'] = array(
    
'field' => 'nid',
    
'title' => t('Table one'),
    
'help' => t('Example table one contains example content and can be related to nodes.'),
    
'weight' => -10,
  ); 
  return 
$data;
}
?>

table_two.views.inc

<?php
/**
 * Implements hook_views_data().
 */
function YOUR_MODULE_views_data() {
  
$data['table_two']['table']['group'] = t('Table two');
  
$data['table_two']['table']['base'] = array(
    
'field' => 'nid',
    
'title' => t('Table two'),
    
'help' => t('Example table two contains example content and can be related to nodes.'),
    
'weight' => -10,
  ); 
  return 
$data;
}
?>

После чего добавил в info модуля строки:

files[] = includes/table_one.views.inc
files[] = includes/table_two.views.inc

И поправил .module файл

<?php
/**
 * Implements hook_views_api().
 */

function YOUR_MODULE_views_api() {
  return array(
    
'api' => 3,
   
'path' => drupal_get_path('module''YOUR_MODULE') . '/includes',
  );
}
?>

Вот только с таким изменениями, никаких новых таблиц не видно в интерфейсе Views при создании нового представления. Может быть я не правильно понимаю, как описывают дополнительные файлы в модуле, или может моя задача в принципе не решатся.
Подскажите пожалуйста