En ocasiones, es más práctico tener las vistas en ficheros separados para mejorar su legibilidad así como para tenerlo todo más ordenado en git. No debería de ser un gran problema de rendimiento localizar este fichero ya que queda cacheado.
Declaramos a views nuestra intención de utilizar su api:
Fichero: mymodule.module
/**
* Implementation of hook_views_api().
*/
function mymodule_views_api() {
return array(
'api' => 3,
'path' => drupal_get_path('module', 'mymodule') . '/views',
);
}
Snipet para que de forma automática coja todas las vistas en la carpeta mymodule/views que terminen en *.view.inc
Fichero: views/mymodule.views_default.inc
/**
* Implements hook_views_default_views().
*/
function mymodule_views_default_views() {
// @NOTE: Load All views!
$files = file_scan_directory(
drupal_get_path('module', 'mymodule') . '/views',
'/.*\.view.inc$/');
foreach ($files as $file) {
$view = NULL;
// Including the view file definition:
require $file->filename;
if (!empty($view)) {
$views[$view->name] = $view;
}
}
return $views;
}