[Drupal 7] Implémentation d’une vue dans votre module custom

vendredi 25 août 2017

Souvent dans un module custom, on souhaite faire une vue dans le backend afin de présenter tous les records que l’on créé dans notre module.
Pour réaliser cela, la meilleure solution est de créer une vue et de l’embarqué dans votre module.
Je vais vous présenter comment j’ai réalisé cela:

Importation d’une vue

Dans votre fichier .module vous ajoutez le code suivant pour indiquer à drupal ou se trouvera le code de notre vue.

function mymodule_views_api() {
  return array(
    'api' => 3,
    'path' => drupal_get_path('module', 'mymodule') . '/views',
  );
}

Comme décrit dans le code ci-dessus, on va enregistrer la configuration de notre vue dans des fichiers .inc dans le dossier views de notre module.

Ensuite, on créé la vue directement dans drupal avec tous mes champs et ensuite on fait un export de cette vue pour l’importer dans votre module. Ce qui est un avantage de ne pas se soucier de devoir crééer cette vue manuellement dans drupal entre les différents environnements.

Pour cela, il suffit de créer un fichier mymodules.views_default.inc dans le dossier views et de copier/coller le code de l’export dans la fonction hook suivante:

function hook_views_default_views() {
	/* code import view */
	$views[$view->name] = $view;
	return $views;
}

N’oubliez pas non plus de retourner les vues en rajoutant à la fin de la méthode les deux dernières instructions.

Et voilà notre vue est sauvé en code et sera installé lors de l’activation du module.

drush dis mymodule -y
drush en mymodule -y

Liste de méthode utiles pour personnaliser votre vue

  • function mymodule_views_pre_view(&$view, &$display_id, &$args)
    permet de rajouter des colonnes à votre vue.
  • function mymodule_preprocess_views_view_field(&$variables)
    permet de gèrer le contenu de chaque row pour ces nouvelles colonnes ajoutées dans mymodule_views_pre_view.

Tags: drupal , views