Como armazenar modelos do Views com um módulo em vez de um tema


13

Criei vários modelos de visualizações que estão atualmente armazenados no meu diretório de temas ativos. Preferiria que esses modelos fossem armazenados no diretório do meu módulo.

Minha pergunta é: como posso trazer esses arquivos de temas (views-view-field.tpl.php, por exemplo.) Para o diretório de módulos e vê-los no Views?

Observando os módulos Views, posso ver que os modelos padrão são armazenados em views / theme, mas não vejo como eles foram implementados.

Respostas:


29

Levei um tempo para descobrir também. O código a seguir deve ser colocado no seu arquivo .module (o código assume que seu módulo é chamado "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'),
  );
}

Isso instruirá o Views a procurar no diretório raiz do seu módulo. Pessoalmente, sou fã de adicionar um subdiretório ao módulo para armazenar arquivos de modelo. Para fazer isso, anexe o nome do diretório ao final do caminho do modelo, por exemplo:

'template path' => drupal_get_path('module', 'NAME') . '/templates',

Adicioná-los a um subdiretório é uma ideia fantástica, limpa as coisas e funciona perfeitamente. Pesquisadores futuros certifique-se de limpar o cache do Drupal. Obrigado @Reekan Mantell
Citricguy

Obrigado! Venho hackeando meu tema de administrador há meses apenas para substituir um campo de visualizações em sete. Agora eu não preciso.
JM01 29/01

E devo dizer que você ainda pode colocar o TPL em seu tema, mesmo que tenha implementado esse código. Obrigado.
anou

2
Isso não vai funcionar com os módulos de recursos, em vez usar hook_views_api_alter()como observado aqui: deeson.co.uk/labs/views-templates-features-module
Aubrey Robertson

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.