How to DRUPAL ... Codice PHP e le Viste

Programmazione - Drupal Visite: 4495
documento DRUPAL

How to DRUPAL ... Codice PHP e le Viste

Vediamo qualche esempio di codice PHP che si può usare nel tentativo di manipolare le views (o viste) Drupal.

Quello che vogliamo fare è rendere le viste più flassibili, o estendere il loro funzionamento e semplicemente dare degli spunti agli utilizzatori.

 

 

MODIFICARE UNA VIEW A RUNTIME

 

Volete sapere come modificare la query di una vista a runtime? Ad es. volete a runtime aggiungere o modificare il group by? Bene, leggete l'ottimo articolo Group By in Views

 

 

LAVORARE CON I PARAMETRI DI UNA VISTA

Volete stampare i parametri di ingresso di una views? PErché li volete controllare o perché li volete usare per altri scopi?

Il seguente codice lo fa:


$view = views_get_current_view();
$args = $view->args;
print $args[0];

 

 

ARGOMENTI DI UNA VISTA E NODI

Vogliamo vedere come a partire dall'argomento di una vista si possa caricare un nodo:

 

$view = views_get_current_view();
$args = $view->args;
$node = node_load($args[0]);
if($node)
{
 foreach( $node->field_reference as $tmp ) {
  print $tmp;
 }
}

 

CONTARE I RISULTATI DI UNA VIEWS

Vediamo come eseguire una vista e come si contano i suoi risultati con codice PHP:

//Caricare la vista che serve
$view = views_get_view( 'MIAVISTA' );


// se necessario si passano i parametri alla vista in formato array
$view->set_arguments( array( 1, 2 ) );

//Chiamare la pre_execute per preparare i dati. E' necessario chiamarla solo se la vista ha più display. In caso di unico dispaly tale metodo non esiste

$view->pre_execute();

// si esegue la vista
$view->execute();

// si contano i risultati
$count = count( $view->result );
print $count;

Se invece che contare i risultati della views MIAVISTA si vogliono contare quelli della vista corrente:

$view = views_get_current_view();

 

Un altro modo per eseguire direttamente in display di una vista è:

$view->execute_display('page_1' , array( 1, 2 ) );

 

NOTE sulla pre-execute()

Quando eseguite con codice PHP una vista per prenderne i risultati considerate che se la vista è costruita in maniera paginata durante la execute() riceverete solo gli elementi della prima pagina. Quindi per fare le cose per bene meglio usare una copia della vista che non usa la paginazione.

 

STAMPARE I RISULTATI DI UNA VIEW

Quello che vogliamo è eseguire una vista e stampare alcuni campi:

 

$view = views_get_current_view();
$view->set_arguments( array( 1, 2 ) );
$view->execute();
$result = $view->result;

foreach ($view->result as $result) {
    $campochevuoi = $result->field_miocampo;
    print $campochevuoi;
}