Si può inserire una funzione dentro una vista ?

16 contenuti / 0 new
Ultimo contenuto
Si può inserire una funzione dentro una vista ?

salve a tutti, che voi sappiate e' possibile inserire una funzione all'interno di una vista?
Nel mio caso la funzione dovrebbe restituire un valore numerico dato da una serie di calcoli su dei risultati di query sql particolari che vorrei fare all'interno della funzione.

Inserire dove? Nel template?

Come se fosse un campo che compone la vista, cioe' una parte presa dal contenuto di un certo nodo e poi con il NID di quel nodo andare a fare una serie di calcoli e poi visualizzarli all'interno della vista.

Anche se non capisco modifica il template della vista, con il node_load ti carichi il nodo e da li recuperi quello che vuoi, oppure agisci direttamente sul template dei campi della vista e fai i tuoi conti li.

Provo a risponderti meglio cosi' magari ti viene in mente una cosa piu' decente di come ho pensato io.

Allora ho un tipo di contenuto Dipendente ed un altro contenuto Retribuzione.
Ovviamente ad ogni dipendente possono corrispondere N nodi di tipo Retribuzione.
La mia necessità e' quella di avere una vista che mi fa vedere per ogni dipendente il totale delle retribuzioni e la media (totale / occorrenze).

Per questo motivo avevo pensato di gestire il tutto con una funzione.
E' piu' chiaro?

Ma semplicemente usare le relazioni e farlo con node reference.

ealmuno wrote:
Ma semplicemente usare le relazioni e farlo con node reference.

Se dovessi solo far uscire a video un elenco di dati ok potrebbe bastare, ma per farci delle elaborazioni sopra?
Solo il fatto di fare la somma delle retribuzioni diviso per il numero delle retribuzioni inserite, come lo risolveresti?

Modifica il template della vista fai un node_load di arg(1) e print_r($node)

views_php

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
views_php

L'ho installato e attivato ma non trovo degli esempi validi...ad esempio il codice lo dovrei mettere nel 'VALUE CODE' oppure in 'OUTPUT CODE' ?

al 90% nel value code
gli altri servono se devi fare cose più complesse di semplici calcoli o trasformazioni

<a href="mailto:[email protected]" rel="nofollow">[email protected]</a> wrote:
al 90% nel value code
gli altri servono se devi fare cose più complesse di semplici calcoli o trasformazioni

Ho inserito in un campo della vista di tipo Global PHP

VALUE CODE --->   return $row->nid;
OUTPUT CODE ----> <?php print $value; ?>

e mi fa vedere correttamente il contenuto di $row->nid

Provo ad aggiungere alla stessa vista un altro campo di tipo GLOBAL PHP

VALUE CODE ---> return $row->field_yyy;
OUTPUT CODE ----> <?php print $value; ?>

Ma in questo caso mi valorizza il campo con gli stessi valori del precedente. :(

non capisco cosa stai facendo.
se potessi spiegare cosa intendi ottenere potrei aiutarti...

Ho un tipo di contenuto fatto con CCK.
Vorrei sulla base del contenuto di due campi di tipo BOOLEANO far visualizzare alla vista il contenuto di un altro campo, piuttosto di un altro.
Ti faccio anche un esempio pratico:
Tipo contenuto : FORNITORI
Campi :
- Flag Fornitore di Beni (booleano)
- Flag Fornitore di Servizi (booleano)
- Valutazione per forniture di beni (intero)
- Valutazione per fornuture di servizi (intero)

Nella vista vorrei fare in modo che a seconda di quale campo flag sia su ON mi faccia vedere la valutazione relativa (se sono accesi entrambi mi fa la somma diviso due).

e' un po' piu' chiaro ? :)

penso dovresti inserire qualcosa del genere nel campo value. l'output code lascialo stare
non so se devi anche inserire <?php return $value; ?> ma credo di no

<?php
if($row->bool1 == 'ON' && $row->bool2 == 'OFF'):
 
$value = $row->val1;
  else if(
$row->bool1 == 'OFF' && $row->bool2 == 'ON'):
   
$value = $row->val2;
  else if(
$row->bool1 == 'ON' && $row->bool2 == 'ON'):
   
$value = ($row->val2 + $row->val2) % 2;
  else:
//entrambi sono 'OFF'
   
$value = //vedi tu...
 
endif;
 
?>

ovviamente tutti i vampi devono essere presenti nella vista e opportunamente nascosti/visibili

Se io volessi fare una query su un campo CCK come lo posso referenziare dentro una query di questo tipo?

$sql = "Select sum(field_totale) FROM {node} WHERE node.status = '1' AND node.type IN ('forniture') AND ????????????? ";

il campo in questione e' : $nodo->field_fornitore['und'][0]['value']

In quel tipo di contenuto(forniture) c'e' anche un campo field_totale['und'][0]['value'] che vorrei sommare, ma non riesco a capire se posso effettuare una SUM(....) oppure una lettura sequenziale....
in ogni caso il mio problema ora e' di inserire quel parametro nella parte della WHERE.....

idee?