Joomla! - Modulo Search SobiPro - Select OR

google-plus Scritto da . Postato in Joomla!

Grazie a Fede, un utente che ha letto questo blog, mi sono interessato su come includere un campo checkbox all'interno del modulo.

La cosa è abbastanza semplice visto ciò che è stato spiegato nei precedenti articoli. Tuttavia, questo pone di fronte al comportamento base dei field SobiPro checkbox e multiselect, i quali permettono si la ricerca ma ne consentono una ricerca di tipo AND.

Questo significa che se dovessi scegliere ad esempio di cercare delle entry per Regione (e il campo Regione con alias field_regione fosse un campo multiselect) e scegliessimo Veneto e Lombardia, restituirebbe entry che corrispondano a entrambe le regioni.

Se volessimo invece cercare Per Veneto o Lombardia (ricerca OR), saremmo costretti ad applicare un piccolo hack al campo (field) select di SobiPro:

Apriamo dunque il file: components/com_sobipro/opt/fields/select.php.

La funzione interessata alla modifica è la seguente:

public function searchData( $request, $section ){
    $sids = array();
    /* check if there was something to search for */
    if( ( is_array( $request ) && count( $request ) ) || ( is_string( $request ) && strlen( $request))){
        $db =& SPFactory::db();
        try {
            /* if we are searching for multiple options
            * and the field contains 'predefined_multi_data_multi_choice'
            * - we have to find entries matches all these options */
            if( is_array( $request ) && $this->multi ) {
                foreach ( $request as $opt ) {
                    $db->select( 'sid', 'spdb_field_option_selected', array('copy' => '0', 'fid' => $this->fid, 'optValue' => $opt ) );
                    if( !( isset( $results ) ) ) {
                        $results = $db->loadResultArray();
                    }
                    else {
                        $cids = $db->loadResultArray();
                        $results = array_intersect( $results, $cids );
                    }
                }
                $sids = $results;
            }else {
                $db->select( 'sid', 'spdb_field_option_selected', array( 'copy' => '0',
                'fid' => $this->fid, 'optValue' => $request ) );
                $sids = $db->loadResultArray();
            }
        }catch ( SPException $x ) {
...

Sostituire la parte evidenziata con:

$db->select( 'sid', 'spdb_field_option_selected', array( 'copy' => '0', 'fid' => $this->fid, 'optValue' =>$request ) );

Un grazie sentito a Federico che ci ha fornito questa piccola grande soluzione!

Se hai gradito l'articolo, condividilo, basta un click!

Aggiungi commento


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati.