Community Builder è un piacevole componente Joomla. Essa aggiunge esteso la gestione degli utenti, elenchi di membri, i profili socio - tutto il necessario per creare un sito web basato sulla comunità.
Così, ho iniziato a costruire un sito di social networking con Community Builder. Ho aggiunto un paio di sottigliezze - una galleria di plugin, una caratteristica blog utente, un libro di profilo - poi ha dato un'occhiata a questo. Era tutto lì, ed è stato veloce - ma non sembrava giusto. Così, ho iniziato a scavare nel codice ....
Ho notato che il layout di profilo era codificata all'interno della funzione UserProfile in comprofiler.html.php . E da 'hard-coded,' voglio dire a livello di codice, riecheggiando il codice direttamente dal php.
Community Builder fornisce già un sistema di template. Ma dopo un po 'di guardare, ho capito che i modelli permettono solo cambiamenti di stile. Sì, potrei usare qualche grave CSS per posizionare i div, ma ... no. Questo è difficile da mantenere tutti i browser. Ho voluto personalizzare la struttura di profilo.
Esternalizzazione del layout profilo
Poiché Community Builder offre già modelli, perché non approfittare di quella di lasciare che il modello di gestire il layout profilo? Si potrebbe spostare il layout profilo al modello.
Spostare il profilo di layout al modello offre alcuni vantaggi:
Il layout profilo non è più hard-coded.
modifiche del layout di sicurezza contro i rischi aggiornamenti.
Solo di competenze di base HTML sono necessarie per modificare il layout.
La condivisione di un nuovo layout è semplice - è installato con il modello.
Se questo non fosse abbastanza, beh ... è più bella di codice.
Tutte le modifiche del codice sono effettuati rispetto alla versione Community Builder 1.1. Ricordati di backup dei file prima di apportare modifiche.
How To Do It
Individuare comprofiler.html.php all'interno del / components / com_comprofiler directory. Il codice di layout profilo è all'interno del userprofile funzione, a partire da questa linea (393):
/ / Posizioni: andate a sinistra centro destra underall tabmain
I codici di layout si conclude con queste righe (500-501):
FINE TABS * VIA VECCHIA /
}
Tagliare tutto il codice (righe 393-501) e inserirlo in un nuovo file chiamato index.php .
Salva una copia del file index.php nuovo nella directory radice di ogni modello. Ad esempio, inserire una copia in / components / com_comprofiler / plugin / templates / default directory.
Infine, abbiamo bisogno di caricare la nostra nuova index.php file. All'interno comprofiler.html.php , proprio dove si taglia fuori il codice del layout (linea 393), inserire la seguente riga:
include ( $ mainframe -> getCfg ( 'absolute_path' ) . '/ components / com_comprofiler / plugin / templates /' . $ ueConfig [ 'templatedir' ] . '/ index.php' ) ;
Per le schede di uscita per una posizione particolare, basta fare qualcosa del genere nel nuovo index.php :
echo $ userViewTabs [ "cb_head" ] ;
Ora è possibile modificare index.php a vostro piacimento. Se ti piace tavoli, utilizzare, se si vuole DIV, fare DIV.
That's It
Il gioco è fatto: layout del profilo in Community Builder che sono facili da modificare, facile da condividere, e relativamente sicuro contro gli aggiornamenti.
Stavo guardando attraverso un codice comunitario Builder e trovato un altro settore che potrebbe usare un po 'tweaking: contenitori tab. Le schede sono di Community Builder quali moduli sono a Joomla - solo un po 'più complessa. Per impostazione predefinita, le schede sembrano schede cartelle di file. Ma non dobbiamo lasciare loro in quel modo.
Schede Community Builder può assumere molte forme: le schede in un riquadro a schede, un DIV con un titolo, o anche un popup DHTML, tra le altre cose. Questo trucco si applica a schede che appaiono come DIV con i titoli.Quando una scheda viene visualizzata come un DIV con un titolo, si presenta come un modulo regolare Joomla - solo alcuni contenuti in una scatola.
Purtroppo, non c'è la casella. Invece, ci sono due caselle: il titolo è avvolto in un DIV, e il contenuto è avvolto in un altro DIV. Sarebbe bello se la scheda fosse tutto racchiuso in un unico contenitore. Questo renderebbe più facile per stile la scheda con i CSS. Inoltre, se si vuole dare le schede dispongono di un ambiente Web 2.0, come rendendoli trascinabili, avrete bisogno di un DIV che contiene.
How To Do It
All'interno comprofiler.class.php , abbiamo bisogno di modificare il getViewTabs funzione. Se vuoi inserire queste righe (3764 - 3766):
$ Html [ $ pos ] .= " \ n \ t \ t \ t\ " width: 95% \ " class = \ "contentheading \ " > " / / id = \ "">. $ oTab- ???." \ =. getLangDefinition ($ oTab-)." titolo \ "width>". "\ n \ t \ t \ t".$ [$ k ]." ";
Vedere i due div? Let's avvolgerli all'interno di un singolo contenente DIV.
Aggiungi questa riga subito prima del codice precedente:
$ Html [ $ pos ] .= " \ n \ t \ t \ t\ " cb_tab_container \ " > " ;
e questa linea subito dopo:
$ Html [ $ pos ] .= " \ n \ t \ t \ t " ;
Quando hai finito, il codice dovrebbe essere simile a questa:
$ Html [ $ pos ] .= " \ n \ t \ t \ t\ " cb_tab_container \ " > " ; $ html [$ pos ] .= " \ n \ t \ t \ t div style <= \ " width: 95% \ " class = \ " contentheading \ "> " id = \ "" $. / oTab->???." \. / getLangDefinition ($ oTab-title> )." "." \ n \ t \ t \ t". oContent $ [$ k ].""; $ html [ $ pos] .= "\ n \ t \ t \ t ";
Fatto
Ora potete stile la vostra Comunità schede Builder facendo riferimento alla cb_tab_container classe nel file CSS.