Personalizzazione del componente COM_CONTACT su Joomla
(APPUNTI - IL POST VERRA' ARRICCHITO CON ULTERIORI DETTAGLI)
Specifiche Richieste
- Il cliente ha dei contatti da raggruppare per categoria
- Alcune categorie sono visualizzabili solo in una lingua
- Occorre filtrare i risultati in base al valore inserito nel campo PROVINCIA nei contatti
Operazione 1:
Per mantenere l'applicazione upgrade-safe utilizzeremo il template override di Joomla!
A questo proposito creiamo due nuovi file per la vista CATEGORY del componente COM_CONTACT e copiamoli nelle seguenti cartelle del template predefinito del sito web:
- html/com_contact/category/default.php
- html/com_contact/category/default_items.php
Non sarà necessario modificare altri file. Ora analizziamo il codice dei file.
MODIFICHE al file html/com_contact/category/default.php
Il file default.php conterrà il seguente codice:
Le variabili $Itemid e $catid conterranno le variabili necessarie per effettuare il filtro per province.
Dopodichè creeremo la seguente funzione per ordinare e filtrare i dati restituiti dal modello del componente in base ai criteri scelti dall'utente:
Poichè i dati vengono restituiti dal modello e noi stiamo effettuando un semplice override dei layout del componente, utilizzeremo una funzione che si limiterà a stampare a video i soli $item coerenti con la richiesta effettuata dal client.
Inserico la select per il filtro sulla ricerca basandomi sul campo per cui voglio effettuare il filtro:
Creo il link dove mandare l'utente dopo la selezione
MODIFICHE al file html/com_contact/category/default_items.php
Ottengo la provincia selezionata in base alla selezione dell'utente
Filtro i risultati con un "if(){}" in base alla selezione effettuata
A questo punto creo categorie e contatti in base alle mie esigenze e automaticamente il filtro della ricerca sarà popolato.
Per ridurre la visualizzazione solo ad alcune lingue utilizzerò soltanto i componenti del Club di Joomfish!
Multilingual Menu Add-on
Ultimi ritocchi:
Se volessi utilizzare lo stesso campo per italia e estero ma definizione non è coerente posso cambiare l'etichetta del campo amministrazione modificando il file administrator/language/it-IT/it-IT.com_contact.ini
Aggiornamento
1. Per mantenere un'ordinamento corretto è bene che i valori del campo "state" siano tutti maiuscoli o minuscoli dunque conviene inserire una funzione strtower()
foreach($arr_filtro as $item){
array_push($arr_regioni, strtolower($item->state));
}
2. Una minaccia alla riuscita del nostro progetto è la limitazione della lista dei risultati restituiti, infatti nel modello CATEGORY.PHP e presente questa riga:
return $this->_getList( $query, @$options['limitstart'], @$options['limit'] );
da cambiare in:
return $this->_getList( $query, 0, 1000 );
oppure cambiando le lunghezze delle liste (mantenendo quindi l'upgrade safe.