Cómo almacenar plantillas de Vistas con un módulo en lugar de un tema

13

He creado varias plantillas de vistas que actualmente están almacenadas en mi directorio de temas activos. Preferiría que estas plantillas se almacenen en el directorio de mi módulo.

Mi pregunta es, ¿cómo puedo traer estos archivos de tema (views-view-field.tpl.php por ejemplo) al directorio de mis módulos y hacer que Views los vea?

Al mirar los módulos de Vistas, puedo ver que las plantillas predeterminadas se almacenan en vistas / tema, pero no veo cómo se ha implementado.

Citricguy
fuente

Respuestas:

29

Esto también me llevó un tiempo darme cuenta. El siguiente código debe colocarse en su archivo .module (el código asume que su módulo se llama "NAME")

/**
* Implements hook_views_api().
*
* Enabling using templates inside module
*/
function NAME_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'NAME'),
    'template path' => drupal_get_path('module', 'NAME'),
  );
}

Esto le indicará a Views que busque en el directorio raíz de su módulo. Personalmente, soy fanático de agregar un subdirectorio al módulo para contener archivos de plantilla. Para hacer esto, agregue el nombre del directorio al final de la ruta de la plantilla, por ejemplo:

'template path' => drupal_get_path('module', 'NAME') . '/templates',
Reekan Mantell
fuente
Agregarlos a un subdirectorio es una idea fantástica, limpia las cosas y funciona perfectamente. Los futuros buscadores se aseguran de borrar su caché de Drupal. Gracias @Reekan Mantell
Citricguy
¡Gracias! He estado pirateando mi tema de administración durante meses solo para anular un campo de vistas en siete. Ahora no tengo que hacerlo.
JM01
Y debo decir que aún puede poner TPL en su tema incluso si ha implementado este código. Gracias.
Anou
2
Esto no funcionará con los módulos de Características, en su lugar, use hook_views_api_alter()como se indica aquí: deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson