Archivi tag: Drupal

How to add a join relationship in views query alter

This post is a personal reminder for a task not so easy to do: add a join in hook_views_query_alter.

So that’s the solution I’ve found for Drupal 7:

/**
 * Implements hook_views_query_alter().
 */
function mymodule_views_query_alter(&$view, &$query) {
	if ($view->name == 'my_view_machine_name') {
		$join = new views_join();
		$join->construct('my_table_name', 'left_table_name', 'left_table_field_name', 'my_table_field_name');
		$query->add_relationship('my_table_alias', $join, 'my_table_name');
	}
}

And this is an example with real variables:

/**
 * Implements hook_views_query_alter().
 */
function mymodule_views_query_alter(&$view, &$query) {
	if ($view->name == 'authors_view') {
		$join = new views_join();
		$join->construct('users', 'node', 'uid', 'uid');
		$query->add_relationship('authors', $join, 'users');
	}
}
Contrassegnato da tag , ,

Come modificare il numero dei risultati della ricerca in Drupal 7

Se qualcuno di voi avesse necessità di modificare il numero di risultati che vengono mostrati nella pagina di ricerca in Drupal 7 sappiate che potete farlo facilmente implementando, all’interno di un vostro modulo, l’hook_query_alter.

/**
 *Implementation of hook_query_alter().
 */
function miomodulo_query_alter(QueryAlterableInterface $query){
    if(is_a($query, 'PagerDefault')){
        $tables = $query->getTables();
        if((!empty($tables['i'])) && ($tables['i']['table'] == 'search_index'))
            $query->limit(20);
    }
}

dove 20 è il numero di risultati che verranno mostrati, piuttosto che 10 che è il valore di default scritto all’interno del codice core di Drupal 7 (vedi hook_search_execute() e node_search_execute()).

Magari al posto di scrivere direttamente il numero all’interno della funzione potreste richiamare una variabile custom tipo:

variable_get(‘custom_search_results’, 10);

Bell@

Contrassegnato da tag ,
%d blogger hanno fatto clic su Mi Piace per questo: