Comment modifier les filtres exposé d'un vue

20 Mai 2016Drupal 7.x

View permet de filtrer par taxonomie des contenus. Cepedant, vous ne pouvez séléctionner des tags que manuellement. Sis votre structure de taxonomie est cencé evoluer, vous ne pouvez pas le faire manuellement. 

il faut donc ajouter du code afin d'altérer les filtres exposés de la vue.

Donc mon exemple je voulais n'afficher que les enfant  du terme de la page en cours.

Pour que le code fonctionne, vous devez avoir un filtre de terme de taxonomie avec l'option  "Limiter la liste aux éléments sélectionnés".

<?
function MODULE_NAME_views_pre_view(&$view, &$display_id, &$args) {
	$node = menu_get_object();
	$tid_parent = $node->field_categorie['und'][0]["tid"];
	if ($view->name == 'VIEW_NAME') {
		$query = db_select('taxonomy_term_data', 'ttd');
		$query->join('taxonomy_term_hierarchy', 'tth', 'tth.tid = ttd.tid');
		$query->condition('tth.parent', $tid_parent)
		->condition('ttd.vid', 1) // 1 is category vocabulary ID
		->fields('ttd', array('tid')); // select tid to set allowed values.
		 
		$allowed_categories = $query->execute()->fetchAllKeyed(0, 0);
		 
		// on assigne les nouveau termes au filtre
		$view->display['default']->handler->options['filters']['tid']['value'] = $allowed_categories;
	}
}
?>