1. Introduction2. Installation
i. InstallerContaoii. UtilisationduSafeModeHackiii. Miseàjourmanuelleiv. LiveUpdateServicev. Déplaceruneinstallationvi. Configurationduserveurenligne
3. Panneaud'administrationi. Listed'enregistrementsii. Éditiondesenregistrementsiii. Raccourcisclavier
4. Gestiondespagesi. Composantsii. Thèmesiii. Feuillesdestyleiv. Modulesv. Présentationsdepagevi. Typesdepage
5. Gestionducontenui. Articlesii. Actualitésiii. Événementsiv. FluxRSS/Atomv. Bulletinsd'informationvi. Formulairesvii. Commentairesviii. Modèlesix. Balisesd'insertion
6. Administrationdusystèmei. Utilisateursetgroupesd'utilisateursii. Extensionsiii. Maintenance
7. Tableauxconteneursdedonnéesi. Référenceii. Palettesiii. Callbacks
8. PersonnaliserContaoi. Contournerlecacheinterneii. Configurationspersonnaliséesiii. Ajouterdeschampspersonnalisésiv. Personnaliserl'éditeurdetexteriche(TinyMCE)v. Surchargerlesméthodesdeclassesvi. Contaohooks
9. Référentield'extensionsi. Ajoutd'uneextensionii. Ajouterunereleaseiii. Ajouterdesfichiersiv. Ajoutdefichiersàpartird'unréférentielGitHub
Tabledesmatières
ManuelpourContao3.2
1
v. Ajouterdestraductionsvi. Ajouterdesdépendancesvii. Publieruneextension
10. DéveloppementdeContaoi. Créationd'unnouveauticket
ManuelpourContao3.2
2
Ceciestlemanuelofficielpourlesutilisateursetlesdéveloppeurs.Vouspouveztoujourstrouverladernièreversionsurdocs.contao.org.
IntroductionInstallation
InstallerContaoUtilisationduSafeModeHackMiseàjourmanuelleLiveUpdateServiceDéplaceruneinstallationConfigurationduserveurenligne
Panneaud'administrationListed'enregistrementsÉditiondesenregistrementsRaccourcisclavier
GestiondespagesComposantsThèmesFeuillesdestyleModulesPrésentationsdepageTypesdepage
GestionducontenuArticlesActualitésÉvénementsFluxRSS/AtomBulletinsd'informationFormulairesCommentairesModèlesBalisesd'insertion
AdministrationdusystèmeUtilisateursetgroupesd'utilisateursExtensionsMaintenance
TableauxconteneursdedonnéesRéférencePalettesCallbacks
PersonnaliserContaoContournerlecacheinterneConfigurationspersonnaliséesAjouterdeschampspersonnalisésPersonnaliserl'éditeurdetexteriche(TinyMCE)Surchargerlesméthodesdeclasses
ManuelpourContao3.2
Tabledesmatières
ManuelpourContao3.2
3Introduction
ContaohooksRéférentield'extensions
Ajoutd'uneextensionAjouterunereleaseAjouterdesfichiersAjoutdefichiersàpartird'unréférentielGitHubAjouterdestraductionsAjouterdesdépendancesPublieruneextension
DéveloppementdeContaoCréationd'unnouveauticket
TheContaodocumentationislicensedunderaCreativeCommonsAttribution3.0Licenselicense(CCBY-NC-SA3.0).Ifyouwanttoredistributeamodifiedorunmodifiedversionofthedocumentation,youcandosounderthelicenseterms.
Ifyoucontributetothedocumentation,e.g.bycreatingpullrequests,yougrantusfullusagerightsofanycontentyoucreateorupload.Youalsoensurethatyourcontentdoesnotviolateanythird-partyrights.
Wearenotclaimingexclusiveusagerights,thereforeyouarefreetouseyourcontributedcontent(e.g.textsorimages)inanyotherprojectaswell.
Licence
ManuelpourContao3.2
4Introduction
LeschapitressuivantsexpliquentcommentinstalleretmettreàjourContao.Vousapprendrezàutiliserl'outild'installationdeContao,commentsynchroniseruneinstallationexistanteviaFTP,commentconfigurerle"SafeModeHack"ainsiqu'unserveurpourContao.
Installation
ManuelpourContao3.2
5Installation
Premièrement,veuilleztéléchargerladernièrearchivedeContaoetl'extrairesurvotreordinateur.Déplacezlesfichiersdanslerépertoirehtdocsdevotreinstallationlocale(parexempleXAMPP)oulestéléversersurvotreserveuravecunlogicielFTP(nousvousrecommandonsd'utiliserWinSCP).Selonlaconfigurationdevotreserveur,ledossierpublicestprobablementnomméhtdocs,httpdocs,htmloupublic_html.
SivousavezunaccèsSSH,vouspouveztéléchargeretextrairel'archiveaveclescommandessuivantes:
curl-Lhttp://download.contao.org|tar-xzp
Pourouvrirl'outild'installationdeContao,ilsuffitd'ajouter/contao/install.phpàl'URLdevotreinstallationdeContao.Notezquel'outild'installationestprotégécontrelesattaquesparforcebruteetserabloquésiunmauvaismotdepasseaétéinsérétroisfoisdesuite.Pourenleverleverrou,ouvrezlefichiersystem/config/localconfig.phpdansunéditeurdetexte,trouvezlaligneci-dessousetdéfinissez-làà0.
$GLOBALS['TL_CONFIG']['installCount']=0;//Cecienlèveraleverrouillageautomatique
Connectez-vousaupanneaud'administrationdevotreserveur(parexemple"Plesk"ou"cPanel")etcréezunenouvellebasededonnéespourContao.Ensuite,entrezlesidentifiantsdeconnexiondansl'outild'installationdeContao.NotezquelejeudecaractèrespardéfautdeContaoUTF-8s'écritUTF8dansMySQL!
Lorsquequevousêtesconnectéàlabasededonnées,Contaovérifieautomatiquementsestablesetafficheunelistedechangementsrecommandésdanslecasoùilsneseraientpasàjour.Assurez-vousdelireattentivementcesrecommandations,carContaoneconnaîtquesesproprestablesettenteradesupprimercellesd'autresapplicationsenpartageaveclabasededonnées.Confirmezlesmodificationsetcliquezsurlebouton"Mettreàjourlabasededonnées".
Unmodèleestunsiteinternetpré-configuréquicomprendunexempledestructuredesiteetplusieursfeuillesdestylepourformaterlesmodulesdebasedeContaoainsiquelesélémentsdecontenu.
Apartirdelaversion3.2.11,lesiteinternetdedémonstrationn'estplusinclusdanslepackagedetéléchargement.Selonlaversionutilisée,lanouvelleetofficielledémonstrationdeContaooul'ancienneMusicAcademypeuventêtreinstalléesentantqu'extension.Lesinformationsconcernantlacompatibilitésontdisponiblesdansleréférentield'extensions.
Commentinstallerlemodèlededémonstration:
1. CréerunenouvelleinstallationdeContaoavecuncompteadministrateur2. S'identifierentantqu'administrateurdanslebackoffice3. Installerl'extensioncorrespondanteenutilisantleréférentield'extensions4. Sedéconnecterdubackoffice5. Ouvrirdenouveaul'outild'installation
InstallerContao
L'outild'installationdeContao
Connexionàlabasededonnées
Miseàjourdestablesdelabasededonnées
Importerunmodèle
ManuelpourContao3.2
6InstallerContao
Pourimporterunmodèle,sélectionnezl'entréedanslemenudéroulantetcliquezsurlebouton"Importerunmodèle".
Lesdonnéesexistantesserontremplacéeslorsdel'importationd'unmodèle!
Sivousn'avezpasimportéunmodèle,vousdevezcréerunutilisateuradministrateurpourseconnecteraubackofficedeContao.Aprèsavoircréélecompte,leprocessusd'installationestterminé.Leliendanslecoininférieurdroitvousamèneraverslepanneaud'administration.Sivousavezimportélesiteinternetd'exemple,vouspouvezvousconnecterentantqu'utilisateur"k.jones"aveclemotdepasse"kevinjones".
VoirCommentinstallerlemodèlededémonstrationdanslasectionImporterunmodèle
SivousutilisezunserveurApacheetêtesautoriséàutilisermod_rewrite,vouspouvezfaireensortequeContaogénèredesURLsconvivialespourlesmoteursderecherchequiressemblentàdesdocumentsHTMLstatiques.Unensemblederèglesderéécriturepardéfauteststockédanslefichier.htaccess.defaultsituédanslerépertoiredeContao.Renommezcefichieren.htaccessafinqueleserveurApachepuisseletraiter,puisconnectez-vousaubackofficeetaccédezàlaconfigurationdusystème.Sélectionnez"Ré-écrirelesURLs"danslasection"Configurationdufrontoffice"etenregistrezvosmodifications.Maintenant,ContaogénèredesURLsstatiquescommehome.htmlaulieudeindex.php?id=12.
Créationd'unutilisateuradministrateur
InstallationdumodèlededémonstrationdeContao
UtiliserdesURLsconvivialespourlesmoteursderecherche
ManuelpourContao3.2
7InstallerContao
Enessayantd'installerContaoavecl'outild'installation,vouspourriezvoirunavertissementquelefichierdeconfigurationlocaln'estpasaccessibleenécriture.
Leterme"SafeModeHack"peutprêteràconfusion,carilimpliquequeleproblèmeaétécauséparlesafe_modedePHP.Cependant,ilestcausépardespermissionsdefichiersinsuffisantesetpeutseproduiremêmesilesafe_modeestdésactivé,ildevraitdoncêtreappelé"FilePermissionHack"àlaplace.PHPentantquemoduleApacheestgénéralementexécutécommewwwrun,www-dataounobody,alorsquelesfichiersquevoustéléverserviaFTPvousappartiennent(parexempleweb4ouab5678).Leserveurrefusedonc,auscriptPHPdeContao,l'accèsàcesfichiers.
Pourcontournerleproblèmedespermissions,ContaoétablituneconnexionFTPpourmodifierlesfichiersetlesrépertoires.Toutcequevousavezàfaireestd'entrervosidentifiantsdeconnexionFTP.FaitesattentionlorsquevousentrezlecheminrelatifàpartirdevotrerépertoireracineFTPverslerépertoiredeContao(parexemplehtml/,public_html/ouhttpdocs/).
Quelquesrépertoiresnécessitentencoredesautorisationsd'écriture,carPHPvayaccéderdirectement:
assets/images
assets/images/*
system/logs
system/tmp
UtilisationduSafeModeHack
Problèmesd'autorisationdefichiers
UtilisationduFTPpourlesopérationssurlesfichiers
ManuelpourContao3.2
8UtilisationduSafeModeHack
Lespermissions(CHMOD777)sontfixéesautomatiquementparl'outild'installationetn'ontnormalementpasàêtreajustéesmanuellement.Sicelaestnécessaire,veuillez,s'ilvousplaît,seulementn'ajusterquelestroisrépertoiresmentionnésci-dessus-etcelaendépitdecequevouspourriezavoirludansuntutorieloudanslesforumsdeContao!
ManuelpourContao3.2
9UtilisationduSafeModeHack
PourmettreàjourmanuellementuneinstallationdeContao,vouspouvezsoittéléverserl'archivecomplètedeContaosurleserveur(remplacementdesfichiers)ouvouspouveztéléverseruniquementlesfichiersquiontétémodifiésdepuisladernièremiseàjour(synchronisationdesfichiers).Detoutefaçon,vousdevrieztoujourssauvegarderlesfichiersetdossiersci-dessousjusteaucasoùilyauraituneerreuroulorsd'unremplacementaccidentel:
files/*
system/config/dcaconfig.php
system/config/initconfig.php
system/config/langconfig.php
system/config/localconfig.php
templates/*
Celapermettradesauvegardervotreconfigurationlocale,vosmodèlespersonnalisésetvosfichiers.
Leremplacementdesfichiersd'uneinstallationdeContaoestassezsimple.Ilsuffitdedécompresserl'archivedeContaosurleserveuroudel'extrairesurvotreordinateuretdetéléverserlesfichiersavecunclientFTP.Puis,restaurerlesfichiersquevousavezsauvegardésetenleverleséventuelsfichiersinutilisésdesversionsantérieuresdeContao.
Attention:Sivousavezinstallédesextensionstierces,assurez-vousdelessauvegarderetdelesrestaurereuxaussi,ouneleseffacerpasdutout.Sinon,vousdevrezréinstallerlesmoduleset,enfonctiondel'extension,vouspourriezfinirparperdredesdonnées!
PoursynchroniseruneinstallationdeContao,vouspouvezsoitutiliserl'utilitaireUnixdiffouunlogicielFTP.LesutilitairesUnixsontgénéralementutilisésparlesadministrateursdeserveursuniquementet,parconséquent,ilsneserontpasexpliquésici.PoursynchroniserdesfichiersviaFTP,ouvrezWinSCPetconnectez-vousauserveur.Sauvegardezlesfichiersmentionnésci-dessus,puisaccédezaurépertoiredeContaoetcliquezsurlebouton"Synchroniserlesfichiers".
Miseàjourmanuelle
Remplacementdefichiers
Synchronisationdefichiers
ManuelpourContao3.2
10Miseàjourmanuelle
Contrôlezlesoptionsattentivementetassurez-vousdechoisir"Previewchanges"pourquevouspuissiezcontrôlerquelsfichiersserontmisàjour.Ensuiteconfirmezchaquefichierdanslafenêtred'aperçuetcontrôlezspécialementlesfichiersquivontêtreeffacés!CliquezsurOKpourdémarrerleprocessusdesynchronisation.
AprèsavoirmisàjourlesfichiersdeContao,vousdevezégalementmettreàjourlabasededonnées.Heureusement,l'outild'installationdeContaoeffectueralegrosdutravailpourvous.Ilsuffitdel'ouvriretdesaisirvotremotdepasse,puisfaitesdéfilerlapageverslebasjusqu'àlasectionbasededonnéesetconfirmezlesmodifications.
Finalement,vousdevezégalementreconstruirelecacheinterne(pourlesDCAetlesfichiersdelangue).Danslebackoffice,allezà"Maintenancedusystème"etcochez"Purgerlecacheinterne"danslasection"Nettoyerlesdonnées".Confirmezl'actionencliquantsur"Nettoyerlesdonnées".
Vousrecevrezunmessagedansl'en-têtedemandantdereconstruirelecacheinterne.Cliquezsur"Construirelecache"pourmettreencachelesfichiersinternes.
Miseàjourdelabasededonnées
Purgerlecacheinterne
ManuelpourContao3.2
11Miseàjourmanuelle
Le"ContaoLiveUpdateService"estunservicecommercialproposépariNetRobots,lacompagniedufondateurdeContaoetdéveloppeurprincipal,LeoFeyer.Ilvouspermetdemettreàjourvotreinstallationenquelquesclicsàpartirdupanneaud'administration,sansavoiràtéléchargerunearchivedeContaoouenutilisantunlogicielFTPpourremplacerousynchroniserdesfichiers.
S'inscrirepourobtenirunIDLiveUpdate
LeLiveUpdatecomprendlesfonctionnalitéssuivantes:
Miseàjouretretouràuneversionantérieureversn'importequelleversiondeContaoSauvegardeautomatiquedelabasededonnéesavantlamiseàjourValidationpersonnaliséeetachèvementdel'installationdeContaoComparaisondesmodèlespersonnalisésetdesfichiersoriginaux
LiveUpdateService
Sélectiond'uneversion
Différencesentrelesmodèles
ManuelpourContao3.2
12LiveUpdateService
99%detouslesproblèmesdemiseàjourduLiveUpdatesontcauséspardespermissionsdefichierserronés.Contaorequiertdesautorisationsd'écriturepourgérerlesfichiersetlesdossiers,enconséquencesileLiveUpdatenefonctionnepascorrectement,vérifiezlaconfigurationdevotreserveuretassurez-vousdemettreenplaceleSafeModeHacktelquedécritdanscemoded'emploi!
SivousrencontrezdesproblèmespouractivervotreIDLiveUpdateoupourrecevoirl'archivedemiseàjour,veuillezs'ilvousplaîtcontacterlesupportdeiNetRobots.Sivousrencontrezdesproblèmespourconfigurerle"SafeModeHack"oupourutiliserContao,choisissezs'ilvousplaîtuneoptiondesupportsurlapagedesupport.
Résolutiondeproblèmes
Commentobtenirdel'aide
ManuelpourContao3.2
13LiveUpdateService
DéplaceruneinstallationdeContaoàpartird'unserveurlocalversunserveurenlignen'estpastrèsdifférentdel'installationd'unenouvelleversiondeContao,àl'exceptionquevousutilisezlesfichiersdevotreinstallationlocaleaulieud'unearchivedeContaoetunesauvegardeSQLdevotrebasededonnéeslocale.
OuvrezvotrelogicielFTP,connectez-vousauserveurcibleettéléversertouslesfichiersdevotreinstallationlocaledeContao.
LafaçonlaplussimpledecréerunesauvegardeMySQLestd'utiliserl'outild'administrationdebasesdedonnées"phpMyAdmin".Sivousêtesunadministrateurduserveur,vouspouvezégalementutiliserl'utilitairemysqldumpbiensûr.Connectez-vousà"phpMyAdmin",choisissezlabasededonnéesquevoussouhaitezexporteretcliquezsurl'onglet"Exporter"danslemenusupérieur.Ilestimportantd'ajusterlesparamètresd'exportationconformémentàlacaptured'écranci-dessousafinderestreindrelesproblèmesdecompatibilitédeversionsdeMySQL.
Ouvrez"phpMyAdmin"surleserveurcibleetcréezunenouvellebasededonnéespourContao.Enfonctiondela
Déplaceruneinstallation
Téléverserlesfichiers
Exportationdelabasededonnées
Importationdelabasededonnées
ManuelpourContao3.2
14Déplaceruneinstallation
configurationduserveur,vousdevrezprobablementutiliserlepanneaud'administrationduserveur(parexemple,"Plesk"ou"cPanel")pourcréerdenouvellesbasesdedonnées.Sélectionnezlabasededonnéesvideetcliquezsurl'onglet"Importer"danslemenusupérieur.PuistéléchargerlasauvegardeSQLdevotrebasededonnéeslocaleetlancezl'importation.
Enfin,ouvrezl'outild'installationdeContaodelanouvelleinstallation(lemotdepassedoitêtrelemêmequepourvotreinstallationlocale)etajustezlaconfigurationdelabasededonnéessinécessaire.Ensuite,allezaupanneaud'administrationetconnectez-vousavecvotrenomd'utilisateuretvotremotdepasse.
Ajustementdelaconfigurationdelabasededonnées
ManuelpourContao3.2
15Déplaceruneinstallation
Cechapitrenetraitepassurlaconfigurationd'unserveurentermesd'installationd'ApacheoudecompilationdePHP,quevousnepouvezpasfairesuruncompted'hébergementmutualisédetoutefaçon.IlexpliquecommentvérifiersilesexigencesdusystèmedeContaosontrempliesetcommentactiverPHP5.
ContaorequiertunserveurwebcommeApacheouIISavecPHPetlesupportdeMySQL.LaversionminimumdePHPest5.3.2etlaversionminimaledeMySQLest5.0.VousavezégalementbesoindesextensionsPHP"GDlib"(redimensionnementd'image),"DOM"(fichiersXML),"SOAP"(référentield'extensions)etéventuellement"mbstring"(gestiondescaractèresmulti-octets)ainsique"mcrypt"(cryptagedesdonnées).ContaoaététestéavecsuccèsavectouslesprincipauxnavigateurscommeFirefox(àpartirdelaversion2)ouInternetExplorer(àpartirdelaversion8).
Télécharger"ContaoCheck"afindesavoirsivotreserveurrépondauxexigencesdusystèmedeContao.Lescriptvavérifiersivouspouvezutiliserleréférentield'extensionsainsiquele"LiveUpdate"etsivousdevezutiliserle"SafeModeHack"ounon.Selonlaconfigurationdevotresystème,vouspouvezmettreenplaceunenouvelleinstallationdeContaoavecl'installateurwebouvalideruneinstallationexistante.
ExtrayezlefichierZip,téléversezledossiercheckdansvotrerépertoired'installationdeContaoetouvrez-ledansunnavigateurWeb.
TéléchargerContaoCheck|OuvrirleprojetsurGitHub
Ilyaquelquesgrandsfournisseursd'accèsàinternetquirequièrentunpeudeconfigurationssupplémentairesafinqueContaopuissefonctionner.Heureusement,ilsnesontquel'exceptionquiconfirmelarègle.LesparamètresFAIspécifiquessontdécritesdansleforumdeContao.SivouscherchezunhébergementsanstracaspourContao,consultezlalistedeshébergementspartenairesdeContao.
Configurationduserveurenligne
ConfigurationsdusystèmerequisesdeContao
ContaoCheck
ParamètresFAIspécifiques
ManuelpourContao3.2
16Configurationduserveurenligne
Pouraccéderaupanneaud'administrationdeContao(backoffice),ajoutersimplement/contaoàl'URLdevotresiteinternet.Leformulaired'identificationdubackofficeestprotégécontrelesattaquesparforcebrute,doncsivousentrezunmotdepasseerronéplusdetroisfoisdesuite,votrecompteserabloquédurant5minutes.
Panneaud'administration
ManuelpourContao3.2
17Panneaud'administration
Contaosupportetroisvues:unesimpleliste("vueenliste"),unelistequiestregroupéeparsatableparente("vueparente")etunelistehiérarchique("vuearborescente").Cestroisvuespeuventêtreutiliséespourlisterdesenregistrementsden'importequelletableoudetablesliéesentreelles.
La"vueenliste"répertorielesenregistrementsd'unetableuniquedansunordreparticulier.Lesrésultatssontgénéralementregroupésparleurpremièrelettre.
La"vueparente"répertorielesenregistrementsd'unetableenfantquisontliésàunenregistrementparticulierd'unetableparente.Lesrelationsdetypeparent-enfantsontbeaucouputiliséesdansContao.Parexemple,pourlesarticlesetlesélémentsdecontenu,lesarchivesd'actualitésetlesactualitésoulesfeuillesdestyleetlesdéfinitionsdeformatage.
Listed'enregistrements
Vueenliste
Vueparente
ManuelpourContao3.2
18Listed'enregistrements
La"vuearborescente"listedesenregistrementsetd'autresressourcestelsquedesfichiersetdesrépertoiresquisontorganisésdansunestructurehiérarchique.Contaoprendenchargelesrelationshiérarchiquesauseind'unetable(parexemple,lastructuredesite)ainsiquedestablesenfantsquiserapportentauxtableshiérarchiquesparentes(parexemple,lesarticlesetlespages).
Vuearborescente
ManuelpourContao3.2
19Listed'enregistrements
Contaosupportedifférentesfaçonsd'affinerlesrésultatsdesortequevousnelâchiezpaslefilmêmesiunetablepossèdeplusieursmilliersdelignes.Ungrandnombred'entréespeuventêtrefiltréesparunouplusieurschampsdesortequ'ilsnemontrentquelesenregistrementscorrespondantauxcritèresdefiltrage.Laplupartdesentréesoffrentdeplusunerechercheentexteintégralquiprendmêmeenchargelesexpressionsrégulières.Afinderéduireletempsdechargementdelapageauminimum,Contaoafficheseulementtrenteenregistrementsàlafois.
Trietfiltragedesdonnées
ManuelpourContao3.2
20Listed'enregistrements
L'éditiondesdonnéesestl'unedesfonctionscentralesd'unsystèmedegestiondecontenu.Contaooffrebeaucoupdefonctionnalitésprofessionnellesquirendentleprocessusd'éditionaussifacileetconfortablequepossible.Vouspouvezreveniràdesversionsantérieuresd'unenregistrement,restaurerdesenregistrementssupprimés,déplacerdesenregistrementsvialepresse-papiersetmêmeéditerplusieursenregistrementsàlafois.Laplupartdecesfonctionssontaccessiblesenutilisantlesicônesdenavigation.
La"vueenliste",étantlaplussimple,neproposequequatreactionsdebase:éditer,dupliquer,supprimeretafficherlesdétails.
La"vueparente"proposedeuxicônesdenavigationsupplémentairespourcontrôlerl'ordredesenregistrements.L'ordrepeutêtremodifiéparglisser-déposer.Pourcefaire,cliquezsimplementsurl'icônedenavigation"Glisser-déposer"etfaites-leglisserverssanouvelleposition.
Éditiondesenregistrements
Icônesdelavueenliste
Icônesdelavueparente
ManuelpourContao3.2
21Éditiondesenregistrements
La"vuearborescente"nécessitedesicônessupplémentairespourgérerlastructurehiérarchique.Outreladuplicationd'unenregistrementunique,ilprendenchargeladuplicationd'unenregistrementavectoussessous-enregistrementsainsiquelafonction"colleraprès"ou"collerdedans"unautreenregistrement,vouspouvezdonccréerunestructureimbriquée.
Icônesdelavuearborescente
ManuelpourContao3.2
22Éditiondesenregistrements
Contaocréeautomatiquementlesnouvellesversionsd'unenregistrementchaquefoisquevouslesauvegarder.Dèsqu'ilexisteplusd'uneversion,unmenudéroulant,quivouspermetdereveniràuneversionantérieure,apparaîtenhautduformulaire.Choisissezsimplementuneversionetcliquezsurlebouton"Restaurer".
L'icônesituéeàdroitedubouton"Restaurer"vouspermetdevoirlesdifférencesentredeuxversions.
Restaurerlesversionsprécédentes
ManuelpourContao3.2
23Éditiondesenregistrements
LapossibilitédemodifierplusieursenregistrementsàlafoispermetàContaodeclairementsedémarquerdelavariétédessystèmesdegestiondecontenu.Cliquezsurlebouton"Éditionmultiple"afindechangerlemoded'édition,puissélectionnezunouplusieursenregistrementsetchoisissezleschampsquevoussouhaitezmodifier.
Éditiondeplusieursenregistrements
ManuelpourContao3.2
24Éditiondesenregistrements
ManuelpourContao3.2
25Éditiondesenregistrements
ManuelpourContao3.2
26Éditiondesenregistrements
Afind'accélérerlefluxdetravaillorsquevoustravaillezavecContao,ilexisteplusieursraccourcisassociésaubackofficequivouspermettentd'exécutercertainescommandes.Vouspouvezparexempledéclencherlebouton"Enregistrer"àlafind'unformulaireencliquantavecvotresourisouenutilisantleraccourciclavier[Alt]+[s].
Raccourci Bouton Explication
[Alt]+[h] Accueil Alleràlapaged'accueildubackoffice.
[Alt]+[q] Quitter Quitterlasessionencoursdubackoffice(Déconnexion).
[Alt]+[t] Hautdelapage Allerenhautdelapage.
[Alt]+[b] Retour Retouràlapageprécédente.
[Alt]+[n] Nouvelenregistrement Créerunnouvelenregistrement.
[Alt]+[e] Éditionmultiple Passeenmoded'éditionmultiple.
[Alt]+[f] AperçuduFrontoffice Ouvrirl'aperçudufrontofficedansunenouvellefenêtredunavigateur.
Raccourci Bouton Explication
[Alt]+[s] Sauvegarder Sauvegardeleformulairecourant
[Alt]+[c]Sauvegarderetfermer Sauvegardeleformulairecourantetredirigeverslapageprécédente.
[Alt]+[g]Sauvegarderetretour
Sauvegardeleformulairecourantetredirigeverslapageparente,parexemple,àpartird'unélémentdecontenuverslavuearborescentedesarticles.
[Alt]+[e]Sauvegarderetéditer
Sauvegardeleformulairecourantetredirigeverslavuedesenregistrementsenfants.Parexemple,lorsdelacréationdefeuillesdestyle.
[Alt]+[n]Sauvegarderetnouveau Sauvegardeleformulairecourantetcréeunnouvelenregistrement.
Raccourci Bouton Explication
[Alt]+[d] Suppressionmultiple Supprimetouslesenregistrementssélectionnésenmoded'éditionmultiple.
[Alt]+[x] Coupemultiple Déplacetouslesenregistrementssélectionnésenmoded'éditionmultiple.
[Alt]+[c] Copiemultiple Dupliquetouslesenregistrementssélectionnésenmoded'éditionmultiple.
[Alt]+[v]Remplacementmultiple
Remplacetouslesenregistrementssélectionnésenmoded'éditionmultiple.
Lesraccourcisclavierci-dessusnefonctionnentquesousWindowssouscetteforme.LesutilisateursdeMacdoiventutiliser[Ctrl]+[⌥Opt]aulieudelatouche[Alt]avecleraccourciclavier.Enoutre,FirefoxsurWindowsfaitexceptionàlanorme:vousdevezappuyersurleraccourciclavier[Alt]+[Shift].
Raccourcisclavier
Raccourcisclaviergénéraux
Raccourcisclavierenmoded'édition
Raccourcisclavierenmoded'éditionmultiple
ManuelpourContao3.2
27Raccourcisclavier
ManuelpourContao3.2
28Raccourcisclavier
LeschapitressuivantsexpliquentcommentgérerlespagesdansContao.DepuisqueContaoestunsystèmedegestiondecontenubasésurlespages,cesdernièresetlastructuredesitesontlesélémentscentrauxdevotresiteinternetettoutcontenuquin'estpasassociéàunepagenepourrajamaisêtrevu.
Gestiondespages
ManuelpourContao3.2
29Gestiondespages
Comprendrecommentlespages,lesarticles,lesélémentsdecontenuetlesmodulessontliésentreeuxestlaclédel'apprentissagedeContao.Commementionnéprécédemment,lastructuredesiteestl'élémentcentraldevotresite.LesvisiteursdevotresiteinternetdemandenttoujoursdespagesetnondesarticlescommedansunCMSbasésurdesnœuds.
Lediagrammemontrequelesarticlesetlesprésentationsdepagesontlesdeuxélémentslesplusimportantesd'unepage.Alorsquelesarticlesstockentlecontenud'unepage,laprésentationdepagedéfinitlafaçondontilestaffichésurlesite.LesprésentationsdepagedeContaosontbaséessurlesCSSetbiensûrellesn'utilisentpasdemiseenpageavecdestables.Leschapitressuivantsexpliquentcommentcréerdesfeuillesdestyleetdesmodules,commentlescombinerdansuneprésentationdepageetcommentcréerdespagesquil'utilisent.
Composants
ManuelpourContao3.2
30Composants
Unedesigndesiteinternetsecomposegénéralementdefeuillesdestyle,demodulesfrontoffice,deprésentationsdepage,defichiersetdemodèlesquevouspouvezgérerdanslebackofficedeContao.Legestionnairedethèmenechangepascetteapprochedutout,ilajoutejusteuneoptionpourexporteretimportercesressources.
Laprincipaledifférenceentrelesthèmesetlesmodèlesdufrontofficeestqu'unmodèledufrontofficecontientunexempledesiteinternetentièrementpréconfiguré,ycomprisunexempledestructuredesite,d'articles,d'élémentsdecontenuetmêmed'utilisateursetdegroupesd'utilisateurs.Unthème,enrevanche,necontientqueledesigndusiteinternetetpeutdoncêtreimportésansrisquedeperdretouteslesdonnéesexistantes.
Unthèmeestungroupedefeuillesdestyle,demodulesfrontofficeetdeprésentationsdepage,quisonttousstockésdanslabasededonnéesetautomatiquementreconnusparl'exportateurdethème.Vousenapprendrezplussurcesélémentsdansleschapitressuivants.Unthèmeincluthabituellementdesimagesetd'autresfichiersàpartirdurépertoiredesfichiersetdesmodèlespersonnalisésenoptionàpartirdurépertoiredesmodèles.Toutefois,cesressourcesnesontpasautomatiquementliéesaveclethèmeetdoiventdoncêtreajoutéesdanslaconfigurationduthèmepouryêtreincluesdansl'exportation.
Thèmes
Thèmesparoppositionauxmodèlesdufrontoffice
Composantsd'unthème
ManuelpourContao3.2
31Thèmes
Pourexporterunthème,cliquezsimplementsurleboutond'exportationettéléchargerlefichier.ctoenlocalsurvotreordinateur.Bienque.ctoestuneextensiondefichierpropriétairepourlesthèmesdeContao,lefichierestenfaitunearchiveZIPquipeutêtreextraiteavecchaqueprogrammequitraitelesfichiers.zip.Pourréimporterunthème,téléversezlefichier.ctodansvotreinstallationdeContao,ouvrezlegestionnairedethèmesetcliquezsur"Importdethème".Vouspouvezimporterplusieursthèmesàlafois.Unefoisl'importationterminée,vouspouvezassocieruneouplusieursprésentationsdepagedunouveauthèmedanslastructuredesite.
Exportationetimportationd'unthème
ManuelpourContao3.2
32Thèmes
Lessitesinternetaccessiblesdoiventtoujoursêtreformatésàl'aidedesCSS,c'estpourquoiContaoinclutunmodule"feuillesdestyle"quivouspermetdegérerlesdéfinitionsdeformatagedanslebackoffice.PourréférencerlesdifférentsélémentsdeContao,vousdevezconnaîtreleursnomsdeclasse.Lesclassesdesélémentsdecontenucommencentpar"ce_"(parexemple"ce_text")etlesclassesdesmodulesavec"mod_"(parexemple"mod_search").Sivousn'êtespassûr,ilsuffitderegarderdanslecodesourcedelapage.
Chaquefeuilledestylepeutêtrelimitéeparunouplusieurstypesdemédiaet/ouparuneversionparticulièred'InternetExplorer,danslecasoùvousavezbesoindefixerundesesnombreuxbogues.Faitesattentionàl'ordredesdéfinitionsdeformatage,carcellesquisuivent,remplacentlesprécédentes.
/*Définirlavaleurgénéraled'abord*/
.mod_search{
margin:24px;
}
/*PuislaremplacerpourIE7*/
*:first-child+html.mod_search{
margin:18px;
}
Feuillesdestyle
ManuelpourContao3.2
33Feuillesdestyle
Sil'ordreestinversé,lavaleurgénéralel'emporteraitsurlamargespécifiqueàInternetExplorer.
ManuelpourContao3.2
34Feuillesdestyle
Lesmodulesfrontofficevouspermettentd'ajouterpresquen'importequeltypedefonctionnalitésàvotresiteinternet.LecœurdeContaocomprenddesmodulespourgénérerdifférentsmenusdenavigation,gérerl'enregistrementetl'authentificationd'unmembre,recherchersurlesite,l'importationdefluxRSSetbienplusencore.Pourcréerunmodule,connectez-vousaubackofficeetchoisissez"Thèmes"->"modulesfrontoffice"danslemenudenavigation.
Module ClasseCSS Description
Menudenavigation mod_navigation Génèreunmenudenavigationàpartirdelastructuredesite.
Navigationpersonnalisée mod_customnav Génèreunmenupersonnalisé.
Navigation"fild'Ariane" mod_breadcrumb Génèreunmenudetype"fild'Ariane".
Navigationrapide mod_quicknav Génèreunmenudetypelistedéroulanteàpartirdelastructuredesite.
Lienrapide mod_quicklink Génèreunmenudetypelistedéroulante.
Navigation"Livre" mod_booknav Génèreunmenudetype"Livre".
Paginationd'articles mod_article_nav Génèreunepaginationpournaviguerdanslesarticles.
Plandusite mod_sitemap Génèreunelistedetouteslespagesdelastructuredesite.
Formulairedeconnexion mod_login Génèreunformulairedeconnexion.
Déconnexionautomatique - Déconnecteautomatiquementunmembre.
Donnéespersonnelles mod_personalData Génèreunformulairepermettantdemodifierlesdonnéespersonnellesd'unmembre.
Formulaired'inscription mod_registration Créeunformulaired'inscription.
Motdepasseperdu mod_password Créeunformulairededemandedenouveaumotdepasse.
Fermerlecompte mod_closeAccount Créeunformulairepoursupprimerlecompted'unmembre.
Listed'actualités mod_newslist Ajouteunelisted'actualitésàlapage.
Lecteurd'actualités mod_newsreader Affichelesdétailsd'uneactualité.
Archived'actualités mod_newsarchive Ajouteunearchived'actualitésàlapage.
Menuarchived'actualités mod_newsmenu Génèreunmenudenavigationpourunearchived'actualités.
Calendrier mod_calendar Ajouteuncalendrierdansunepage.
Lecteurd'événement mod_eventreader Affichelesdétailsd'unévénement.
Listed'événements mod_eventlist Ajouteunelisted'événementsdansunepage.
Menulisted'événements mod_eventmenu Génèreunmenudenavigationpourparcourirlalisted'événements.
S'abonner mod_subscribe Génèreunformulairepours'abonneràuneouplusieurslistesdediffusion.
Sedésabonner mod_unsubscribe Génèreunformulairepoursedésabonneràuneouplusieurslistesdediffusion.
Listedebulletinsd'information mod_nl_list Ajouteunelistedebulletinsd'informationàunepage.
Modules
ManuelpourContao3.2
35Modules
d'information mod_nl_reader Affichelesdétailsd'unbulletind'information.
ListedeFAQ mod_faqlist Ajouteunelistedequestionsfréquemmentposéesdanslapage.
LecteurdeFAQ mod_faqreader Affichelaréponseàunequestionfréquemmentposée.
PagedeFAQ mod_faqpage AfficherlalistedeFAQetlelecteurdeFAQsurlamêmepage.
Formulaire mod_form Ajouteunformulairedanslapage.
Moteurderecherche mod_search Ajouteunformulairederecherchedanslapage.
Commentaires mod_comments Gérerlescommentairesoulesentréesd'unlivred'or.
Listed'enregistrements mod_listing Listerlesenregistrementsd'unetabledelabasededonnées.
AnimationFlash mod_flash Permetd'inclureuneanimationFlashdansunepage.
Listed'articles mod_article_list Génèreunelisted'articlescontenudansunezoneparticulière.
Imagealéatoire mod_random_image Ajouteuneimagealéatoiredansunepage.
CodeHTMLpersonnalisé - Permetd'inclureducodeHTMLpersonnalisé.
LecteurdefluxRSS mod_rss_reader AjouteunfluxRSSàlapage.
Chaquemodulefrontofficepeutêtreprotégédesortequeseulslesinvitésoulesmembresd'ungroupeenparticulierpuissentlevoirsurlesiteinternet.
Contrôled'accès
ManuelpourContao3.2
36Modules
Lesprésentationsdepagedéterminentl'agencementbasiqued'unepage,parex.lenombredecolonnesoulalargeurgénérale,etelledéfinissentquelsmodulesdefrontofficevontêtreaffichésdansquellescolonnes.Ellespermettentaussid'incluredesfeuillesdestyle,delierlapageàunfluxRSSouAtom,d'associerunIDGoogleAnalyticsetd'ajouterducodeJavaScriptquipourraitêtrerequispourcontrôlerdesélémentsinteractifsoudesplugins.LeframeworkCSSdeContaodiviseautomatiquementlafenêtredunavigateurenplusieurssectionsetaffichelesmodulesquiontétéassignésàcessectionslesunsàlasuitedesautres.
Celaimpliquequelorsquevousallezcréeruneprésentationdepage,vousdevriezdéjàavoircréétouteslesfeuillesdestyleetlesmodulesfrontofficequevousvoulezinclure.C'estpourquoi,ilestrecommandédecréerlesressourcesdansl'ordresuivant:
CréerlesmodulesfrontofficenécessairesCréerlesfeuillesdestylenécessaires
Présentationsdepage
ManuelpourContao3.2
37Présentationsdepage
Optionnellement,créerdesarchivesd'actualitésoudescalendriersCréeruneprésentationdepageetcombinertouslescomposants
ManuelpourContao3.2
38Présentationsdepage
Letypedepagedéterminesilapagevaafficherducontenu,redirigerversuneautrepageoudéfinirlepointdedépartd'unnouveausiteinternetdanslastructuredepage.Contaosupportesixtypesdepagesdifférentsquisontexpliquésci-dessous.
Typedepage Description
Pagesimple Unepagesimplecontientdesarticlesetdesélémentsdecontenu.C'estletypedepagepardéfaut.
RedirigerversuneURLexterne
CetypedepageréorienteautomatiquementlesvisiteursversuneURLexterne.Celafonctionnecommeunlienhypertexte.
Redirigerversuneautrepagedusite
Cetypedepageréorienteautomatiquementlesvisiteursversuneautrepagedelastructuredesite.
Racined'unnouveausite Cetypedepageestlepointdedépartpourcréerunsiteinternetdanslastructuredesite.
Erreur403(accèsinterdit)
Siunutilisateursanspermissionessayed'accéderàunepageprotégée,unepaged'erreur403seraretournée.Cettepagedoitêtreajoutéeaupremierniveaudansvotrepageracined'unnouveausite.
Erreur404(pagenontrouvée)
Siunutilisateuressayed'accéderàunepagequin'existepas,unepaged'erreur404seraretournée.Cettepagedoitêtreajoutéeaupremierniveaudansvotrepageracined'unnouveausite.
Contaosupporteplusieurssitesinternetàl'intérieurdelastructuredesiteetredirigeautomatiquementlesvisiteursversuneracinedesiteparticulièreenfonctiondunomdedomaineoudesréglagesdelangues.Imaginonsparexemplequevousdeviezcréerunsited'entreprisebilinguequiutiliselenomdedomaine"www.example.com"etunpetitsitepersonnelquiutiliselenomdedomaine"www.personal.example.org".Vousaurezbesoindetroispagesracinesd'unnouveausitepourcela:
Type DNS Codedelangue Languedesecours
Siteinternetd'entrepriseenAllemand aucun de non
Siteinternetd'entrepriseenAnglais aucun en oui
Siteinternetpersonnel www.personal.example.org de oui
Letableausuivantmontreversquellepageunvisiteurvaêtreredirigéenfonctiondunomdedomaineetdelalanguedesonnavigateur.
Domaine Languedunavigateur Ciblederedirection
www.example.com Anglais Siteinternetd'entrepriseenAnglais
www.example.com Allemand Siteinternetd'entrepriseenAllemand
www.example.com Espagnol Siteinternetd'entrepriseenAnglais
www.personal.example.org Nonpertinent Siteinternetpersonnel
Notezquesinousn'utilisionspasl'option"languedesecours",lesiteinternetpersonnelneseraitdisponiblequepourlesutilisateursdontlalanguedunavigateurestl'Allemand!
Typesdepage
Modemulti-domaines
ManuelpourContao3.2
39Typesdepage
Lesdroitsd'accèsdéterminentcequelesutilisateursdubackofficesontautorisésàfaireavecunepageetsesarticles.Ilsn'ontrienàvoiraveclespagesprotégéesquinesontaccessiblesqueparcertainsutilisateursfrontoffice!SimilaireausystèmedepermissionsdesfichiersUnix,ilexistetroisniveauxd'autorisation:
Accèsentantquepropriétaired'unepageAccèsentantquemembred'ungroupepropriétairedelapageAccèsentantqu'utilisateursansprivilège
Chaqueniveaupeutavoirdifférentespermissions.Pardéfaut,lepropriétairedelapageestautoriséàéditerlapageelle-mêmeainsiquelesarticlesdelapage,tandisqu'unutilisateurd'ungroupequipossèdeunepageestautoriséàéditerlesarticlesseulement.Lesutilisateurssansprivilègen'ontaucundroitsenécriture.
Droitsd'accès
ManuelpourContao3.2
40Typesdepage
LeschapitressuivantsexpliquentcommentgérerlecontenudansContao.LecœurdeContaosupportedenombreuxtypesdecontenucommedesarticles,desactualités,desévénements,desbulletinsd'information,desformulairesoudesdéfinitions.D'autrestypesdecontenucommedesbannières,desbillets,desproduitsoudesrecommandationssontdisponiblesdansleréférentield'extensions.Pourcréerducontenu,seconnecteraubackofficeetchoisirundesmodulesdanslasection"Contenu"dumenudenavigation.
Gestionducontenu
ManuelpourContao3.2
41Gestionducontenu
Lesarticlessontdesconteneurspourlesélémentsdecontenu.Regrouperlesélémentsdecontenupararticlerendletravailplusfacilepourdéplacer,publier,copier,éditerouexportercesélémentsensembleaulieud'unparun.Chaquearticleestassociéàunepageparticulièreetàunesectionparticulièredecettepage,ilaainsiunepositionfixedanslastructuredesiteetsurlesiteinternet.Contaopeutoptionnellementn'afficherqu'uneaccroched'articleavecunlien"Ensavoirplus...".
Lesélémentsdecontenusontunmoyensimpleetintuitifpourcréerducontenu.Aulieud'utiliserunéditeurdetexteriche,Contaofournitunélémentdistinctpourchaquetypedecontenucommelestextes,leslistes,lestableaux,leslienshypertextes,lesimagesoulestéléchargements.VoiciunaperçudesélémentsdecontenudebasedeContao:
Nom ClasseCSS Description
Titre ce_headline Génèreuntitre(h1-h6).
Texte ce_text Génèreuntexteenrichiquipeutêtreformatéàl'aidedeTinyMCE.
HTML - Vouspermetd'ajouterducodeHTMLpersonnalisé.
Liste ce_list Génèreunelisteordonnéounonordonnée.
Tableau ce_table Génèreuntableauquipeut-êtretrié.
Code ce_code Ajoutelacolorationsyntaxiquesurdesextraitsdecodeetlesimprimesurl'écran.
Accordéon(élémentseul) ce_accordion Génèreunseulélémentaccordéon(avecMooTools).
Accordéon(débutdel'enveloppe) ce_accordionStart Génèrel'ouvertureduconteneurdel'accordéon.
Accordéon(findel'enveloppe) - Génèrelafermetureduconteneurdel'accordéon.
Sliderdecontenu(débutdel'enveloppe) ce_sliderStart Génèrel'ouvertureduconteneurduslider.
Sliderdecontenu(findel'enveloppe) - Génèrelafermetureduconteneurduslider.
Lienhypertexte ce_hyperlink Génèreunlienhypertexteversunautresiteinternet.
Lienverslehautdepage ce_toplink Génèreunlienpourretournerenhautdepage.
Image ce_image Génèreuneimage.
Galeried'images ce_gallery Génèreunegaleried'imagesaveceffetlightbox.
Vidéo/audio ce_player Génèreunlecteurvidéoouaudio.
YouTube ce_youtube AjouteunevidéoYouTube.
Téléchargement ce_download Génèreunlienhypertexteversunfichieràtélécharger.
Téléchargements ce_downloads Génèredeslienshypertextesmultiplesversdesfichiersàtélécharger.
Contenud'unarticle - Insèreunautrearticle.
Élémentdecontenu (classeparente) Insèreunautreélémentdecontenu.
Formulaire ce_form Insèreunformulaire.
Articles
Élémentsdecontenu
ManuelpourContao3.2
42Articles
Module (classeparente) Insèreunmodulefrontoffice.
Accroched'unarticle ce_teaser Affichel'accroched'unarticle.
Commentaires ce_comments Ajouterunformulairedesaisiedecommentairesàlapage.
Chaqueélémentdecontenupeutêtreprotégédesortequeseulslesinvitésoulesmembresd'ungroupeenparticulierpuissentlevoirsurlesiteinternet.
LecontenuFlashestuntypeparticulierdecontenuquin'estpasaffichédansunarticlesurlesiteinternetmaischargédansunfilmFlashdynamiqueenutilisant"loadVars()".PourpermettrelacommunicationentreContaoetFlash,vousdevezajouterlafonctionsuivanteauframeprincipaldevotrefilm:
TextField.prototype._loadArticle=function(flashID){
tf=this;
//AutoriserlemodeHTMLetsupprimerlecontenu
tf.html=true;
tf.htmlText="";
//InstancierunnouvelobjetLoadVars
lv=newLoadVars();
lv["flashID"]=flashID;
lv.sendAndLoad(URL+"flash.php",lv,"POST");
lv.onLoad=function(success){
if(success){
tf.htmlText=lv["content"];
}
}
}
//ChargerlecontenuFlash"myArticle"danslechamptexte"myTextBox"
myTextBox._loadArticle("myArticle");
Contrôled'accès
ContenuFlash
Importerunefeuilledestyle
ManuelpourContao3.2
43Articles
LecodeActionScriptsuivantvouspermetd'importerunefeuilledestylepourformaterunchampdetextedynamique:
TextField.prototype._addCSS=function(style_sheet){
tf=this;
tf.styleSheet=null;
//InstancierunnouvelobjetStyleSheet
st=newTextField.StyleSheet();
st.load(URL+style_sheet);
st.onLoad=function(success){
if(success){
tf.styleSheet=st;
}
}
}
//Ajouterlafeuilledestyle"basic.css"auchamptexte"myTextBox"
myTextBox._addCSS("basic.css");
NotezqueFlashneprendenchargequ'unpetitsous-ensembledebalisesHTML,desortequecertainsdevosstylespuissentnepass'affichercorrectement.
ManuelpourContao3.2
44Articles
L'extensionactualités/blogvouspermetdegérerdesactualitésoudesbilletsd'unblogetdelesafficherdanslefrontoffice.Contrairementauxarticlesquisontassociésàunepageenparticulier,lesactualitéssontorganiséesdansdesarchivesd'actualités,quivouspermetdefacilementlesregrouper,delescatégoriseroudelesexporter.
Lesarchivesd'actualitésontutiliséespourregrouperet/oucatégoriserlesactualités.Chaquearchivepeutserapporteràunecertainelangueouunsujetparticulier.
Lesmodulesfrontofficesontutiliséspourafficherlesactualitéssurlesiteinternet.Ilspeuventêtreconfigurésaveclemodule"Modules"danslebackofficeetdoiventêtreajoutésàunarticleouàuneprésentationdepagepourpouvoirapparaîtresurlesiteinternet.L'extensionactualités/blogcomprendquatremodulesfrontoffice:
Module ClasseCSS Description
Listed'actualités mod_newslist Ajouteunelisted'actualitésàlapage.
Lecteurd'actualités mod_newsreader Affichelesdétailsd'uneactualité.
Archived'actualités mod_newsarchive Ajouteunearchived'actualitésàlapage.
Menuarchived'actualités mod_newsarchiveMenu Génèreunmenudenavigationpourunearchive
d'actualités.
ChaqueactualitéauneURLunique(permalien)quipeutêtreutiliséepourlaréférencer:
http://www.example.com/news/items/james-wilson-returns.html
L'URLci-dessussollicitel'actualité"james-Wilson-retours"vialapage"actualités".Rappelez-vousqueContaoestunCMSbasésurlespages,doncsilapage"actualités"n'existaitpasousiellenecomprenaitpaslemodulelecteurd'actualités,alorsl'actualiténeseraitpasaffichée.
Actualités
Archivesd'actualités
Modulesfrontoffice
Permaliens
ManuelpourContao3.2
45Actualités
L'extensioncalendriervouspermetdegérerdesévénementsetdelesafficherdansuncalendrierouunelisted'événementssurlesiteinternet.Contrairementauxarticlesquisontassociésàunepageenparticulier,lesévénementssontorganisésdansdescalendriers,quivouspermetdelesregrouper,delesclasseroudelesexporter.
Lescalendrierssontutiliséspourregrouperet/oucatégoriserdesévénements.Chaquecalendrierpeutserapporteràunecertainelangueouunsujetparticulier.
Lesmodulesfrontofficesontutiliséspourafficherdesévénementssurlesiteinternet.Ilspeuventêtreconfigurésaveclemodule"Modules"danslebackofficeetdoiventêtreajoutésàunarticleouàuneprésentationdepagepourpouvoirapparaîtresurlesiteinternet.L'extensioncalendriercomprendquatremodulesfrontoffice:
Module ClasseCSS Description
Calendrier mod_calendar Ajouteuncalendrierdansunepage.
Lecteurd'événements mod_eventreader Affichelesdétailsd'unévénement.
Listed'événements mod_eventlist Ajouteunelisted'événementsdansunepage.
Menulisted'événements mod_eventmenu Génèreunmenudenavigationpourparcourirlaliste
d'événements.
ChaqueévénementauneURLunique(permalien)quipeutêtreutiliséepourleréférencer:
http://www.example.com/event-reader/events/final-exams.html
L'URLci-dessussollicitel'événement"final-exams"vialapage"events".Rappelez-vousqueContaoestunCMSbasésurlespages,doncsilapage"events"n'existaitpasousiellen'incluaitpaslemodulelecteurd'événements,alorsl'événementneseraitpasaffiché.
Événements
Calendriers
Modulesfrontoffice
Permaliens
ManuelpourContao3.2
46Événements
Cettefonctionnalitépeutêtreutiliséepourlesarchivesd'actualitésetlescalendriers.Voiciunexempleaveclalistedescalendriers.
UnouplusieurscalendrierspeuventêtreregroupésetexportésentantquefluxRSSouAtom.Ilenvademêmepourlesarchivesd'actualités.Dansunmêmetemps,vouspouvezchoisird'exporteruniquementlesaccrochesoulesarticlescompletsdechaqueévénementouactualité.
FluxRSS/Atom
Paramètres
ManuelpourContao3.2
47FluxRSS/Atom
LesfichiersXMLsontgénérésautomatiquementdanslerépertoiresharedevotreinstallationdeContao.Danscetexemple:share/evenements.xml.
FichiersXML
ManuelpourContao3.2
48FluxRSS/Atom
L'extensionbulletinsd'informationvouspermetdegéreretd'envoyerdesbulletinsd'informationetoptionnellementdelesaffichersurlesiteinternet.Contrairementauxarticlesquisontassociésàunepageparticulière,lesbulletinsd'informationsontorganisésenlistesdediffusion,cequivouspermetdefacilementlesregrouperoudelescatégoriser.
Lesinscriptionsàunbulletind'informationsonttraitéesparlesmodulesfrontofficecréésàceteffet,doncvousn'avezpasàgérerlesdestinatairesmanuellement.Pourdesraisonsdeprotectiondesdonnéesprivées,Contaoutilisel'inscriptionparDoubleOptInetnestockequel'adressee-maildel'abonné.
Aucasoùvousauriezdéjàunelistededestinataires,vouspouvezl'importerdansContaoàpartird'unfichierCSV.
Danslamesureoùvousenvoyezdesbulletinsd'informationàdesmembresinscrits,vouspouvezpersonnalisercesbulletinsavecdes"SimpleTokens".Les"SimpleTokens"fonctionnentd'unemanièresimilaireàcelledesbalisesd'insertionetpeuventêtreutilisésaussibiendanslaversionHTMLquedanslaversiontextedevotrebulletind'information.
Cher##firstname####lastname##,
Veuillezmettreàjourvosdonnéespersonnelles:
Rue:##street##
Codepostal:##postal##
Ville:##city##
Téléphone:##phone##
E-mail:##email##
L'administrateur
Cependant,contrairementauxbalisesd'insertion,les"SimpleTokens"nepermettentpasseulementd'ajouterdesdonnéesdelatabletl_member,maisaussidefairedesdéclarationsif-elsesimples,parex.despécifierunesalutation:
{ifgender=="male"}
Bulletinsd'information
Destinataires
Bulletinsd'informationpersonnalisés
ManuelpourContao3.2
49Bulletinsd'information
Monsieur##lastname##,
{elseifgender=="female"}
Madame##lastname##,
{else}
Madame,Monsieur,
{endif}
[contenudubulletin]
{ifphone==""}
Veuillezs'ilvousplaîtmettreàjourvosinformationsdecontactetentrer
votrenumérodetéléphone.
{endif}
L'administrateur
Enparticuliersurleshébergementsmutualisés,ilyadeslimitesconcernantletempsd'exécutiond'unscriptet/oulenombred'e-mailsquipeuventêtreenvoyésparminute.Contaoessaiedecontournercesdeuxproblèmesendivisantleprocessusd'envoienplusieurscyclespouréviterledépassementdutempsd'exécutionduscriptetenajoutantunepauseentrechaquecyclepourcontrôlerlenombred'e-mailsparminute.
Lesmodulesfrontofficesontutiliséspourgérerlesinscriptionsauxbulletinsd'informationetoptionnellementlesaffichersurlesiteinternet.Ilspeuventêtreconfigurésaveclemodule"Modules"danslebackofficeetdoiventêtreajoutésàunarticleouàuneprésentationdepagepourêtreaffichéssurlesiteinternet.
Envoyerdesbulletinsd'information
Modulesfrontoffice
ManuelpourContao3.2
50Bulletinsd'information
Module ClasseCSS Description
S'abonner mod_subscribe Génèreunformulairepours'abonneràuneouplusieurslistesdediffusion.
Sedésabonner mod_unsubscribe Génèreunformulairepoursedésabonneràuneouplusieurslistesdediffusion.
Listedebulletinsd'information mod_nl_list Ajouteunelistedebulletinsd'informationàunepage.
Lecteurdebulletinsd'information mod_nl_reader Affichelesdétailsd'unbulletind'information.
Chaquebulletind'informationauneURLunique(permalien)quipeutêtreutiliséepourleréférencer:
http://www.example.com/newsletters/items/james-wilson-returns.html
L'URLci-dessussollicitelebulletind'information"james-wilson-returns"vialapage"newsletters".Rappelez-vousqueContaoestunCMSbasésurlespages,doncsilapage"newsletters"n'existaitpasousiellen'incluaitpaslemodulelecteurdebulletinsd'information,alorslebulletind'informationneseraitpasaffiché.
Permaliens
ManuelpourContao3.2
51Bulletinsd'information
Legénérateurdeformulaireintégrépeutêtreutilisépourcréerdesformulairesinteractifsquisontenvoyéesviae-mailoustockésdanslabasededonnéesdeContao.Lesfichierstéléverséspeuventêtreenvoyésentantquepiècesjointespare-mailoustockésdanslerépertoiredesfichiersdeContao.Legénérateurdeformulaireprendenchargequatreformatsdedonnéesdifférents:
Format Description
Rawdata
Lesdonnéesduformulairesontenvoyéescommedusimpletexteavecunenouvellelignepourchaquechamp.
XMLfile Lesdonnéesduformulairesontenvoyéesenpiècejointesouslaformed'unfichierXML.
CSVfile Lesdonnéesduformulairesontenvoyéesenpiècejointesouslaformed'unfichierCSV.
E-mailTousleschampssontignorésàpartemail,subject,messageetcc(copiecarbone)etlesdonnéessontenvoyéescommesil'e-mailavaitétéenvoyédepuisunclientdemessagerie.Lesenvoisdefichierssontautorisés.
Semblableauxélémentsdecontenu,Contaoproposeunélémentséparépourchaquetypedechampdeformulairetelsqueleschampsdetextes,leschampsdemotsdepasse,lesmenusdéroulants,lestéléchargementsdefichiers,leschampscachésouboutonsdesoumission.VoiciunaperçudeschampsdisponiblesdeContao:
Champ ClasseCSS Description
Titre headline Champpersonnalisépourinséreruntitredesection.
Explication explanation Champpersonnalisépourinséreruntexted'explication.
CodeHTML - ChamppersonnalisépourinsérerducodeHTML.
Fieldset - Unconteneurpourleschampsavecunelégendeenoption(uniquementdisponiblepourlesformulairessanstableau).
Champtexte text Champd'unelignepourlasaisied'untextecourtoumoyen.
Champmotdepasse password Champd'unelignepourlasaisied'unmotdepasse.Contaoajoute
automatiquementunchampdeconfirmation.
Zonedetexte textarea Champcomportantplusieurslignespourlasaisied'untextemoyenoulong.
Listedéroulante select/multiselect Listedéroulantepourlasélectiond'unouplusieurschoix.
Boutonradio radio Listedeplusieursoptionsdontuneseulepeutêtresélectionnée.
Caseàcocher checkbox Listedeplusieursoptionsdontchacunepeutêtresélectionnée.
Envoidefichier upload Champd'unelignepourl'envoid'unfichierlocalversleserveur.
Champcaché - Champd'unelignenonvisibledansleformulaire.
Questiondesécurité captcha Questionsimpled'arithmétiquepourvérifierqueleformulaireestbien
soumisparunindividu(CAPTCHA).
Bouton submit Boutond'envoiduformulaire.
Formulaires
Leschampsduformulaire
ManuelpourContao3.2
52Formulaires
d'envoi submit Boutond'envoiduformulaire.
Lemodulefrontofficeestutilisépourafficherdesformulairessurlesiteinternet.Ilpeutêtreconfiguréaveclemodule"Modules"danslebackofficeetdoitêtreajoutéàunarticleouàuneprésentationdepagepourpouvoirapparaîtresurlesiteinternet.L'extensiongénérateurdeformulairecomprendunmodulefrontoffice:
Module ClasseCSS Description
Formulaire mod_form Ajouteunformulairedanslapage.
L'élémentdecontenuestutilisépourafficherdesformulairessurlesiteinternet.Ilpeutêtreconfiguréavecl'élémentdecontenu"Formulaire"danslebackofficeetdoitêtreajoutéàunarticlepourpouvoirapparaîtresurlesiteinternet.L'extensiongénérateurdeformulairecomprendunélémentdecontenu:
Élémentdecontenu ClasseCSS Description
Formulaire ce_form Insèreunformulaire.
Modulefrontoffice
Élémentdecontenu
ManuelpourContao3.2
53Formulaires
Lescommentairessontuneautreformedecontenuquevouspouvezgéreràpartirdubackoffice.Lescommentairesdoiventêtreactivésdanslespréférencesdescalendriersetdesarchivesd'actualités.
Lemodulefrontofficeestutilisépourafficherdescommentairessurlesiteinternet.Ilpeutêtreconfiguréaveclemodule"Modules"danslebackofficeetdoitêtreajoutéàunarticleouàuneprésentationdepagepourpouvoirapparaîtresurlesiteinternet.L'extensioncommentairescomprendunmodulefrontoffice:
Module ClasseCSS Description
Commentaires mod_comments Gérerlescommentairesoulesentréesd'unlivred'or.
L'élémentdecontenuestutilisépourafficherdescommentairessurlesiteinternet.Ilpeutêtreconfiguréavecl'élémentdecontenu"Commentaires"danslebackofficeetdoitêtreajoutéàunarticlepourpouvoirapparaîtresurlesiteinternet.L'extensioncommentairescomprendunélémentdecontenu:
Élémentdecontenu ClasseCSS Description
Commentaires ce_comments Ajouterunformulairedesaisiedecommentairesàlapage.
Vouspouvezpermettreauxutilisateursdufrontofficed'utiliserlelangagedebalisageBBCode.
Contaoprendenchargelesbalisessuivantes:
BBCode Définition
[b][/b] Remplacelabaliseavecuntexteengras.
[i][/i] Remplacelabaliseavecuntexteenitalique.
[u][/u] Remplacelabaliseavecuntextesouligné.
[img][/img] Remplacelabaliseavecuneimage(AjouteruneURLentrelesbalises).
[code][/code] Remplacelabaliseavecuntexteàespacementfixe.
[color=#ff0000][/color] Remplacelabaliseavecuntexteencouleur.
[quote][/quote] Remplacelabaliseavecuntextecité.
[quote=John]Bonjour[/quote] Remplacelabaliseavecuntextecitéetlenomdel'auteur(parexemple,Johnaécrit:Bonjour).
[url][/url] Remplacelabaliseavecunlien.
[url=http://][/url] Remplacelabaliseavecunlien(insérerl'URLentantqueparamètre)
[email][/email] Remplacelabaliseavecunlienmailto.
[[email protected]][/email]
Remplacelabaliseavecunlienmailto(insérerl'adressee-mailentantqueparamètre).
Commentaires
Modulefrontoffice
Élémentdecontenu
BBCode
ManuelpourContao3.2
54Commentaires
UnmodèleestprincipalementcomposédecodesHTMLetPHP.Ilestutilisépourstructurerunepartieducontenud'unmoduleoud'unélémentdecontenu,etc.Parexemple,lemodèlenews_full.html5affichelecontenucompletd'uneactualitéalorsquelemodèlenews_short.html5afficheseulementunepartiedececontenu.
Lesmodèlessetrouventdansleurspropresmodules.Parexemple,news_full.html5setrouvesoussystem/modules/news/templates/news.
Sivousmodifiezcefichierdirectementdanscedossier,ilseraremplacélaprochainefoisquevousmettrezàjourContaoetvousperdreztoutesvosmodifications.Pourévitercela,Contaovouspermetdemodifierlesmodèlesdirectementàpartirdubackoffice.Danscecas,lefichierestdupliquéetvosmodificationsserontconservéeslorsdechaquemiseàjour.
Créezunnouveaudossieretajoutez-yunouplusieursmodèlesquevoussouhaitezmodifier.Parlasuite,n'oubliezpasdejoindreledossierauthèmecommeexpliquédansleparagrapheComposantsd'unthème.
Unmodèlepeutêtreunepartiedelastructured'unmodule,d'unélémentdecontenu,d'unformulaire,etc.etc'estpourquoiilssontpréfixés.Ilspeuventêtrefacilementgroupés,classésetreconnus.Parexemple:lepréfixej_signifie"jQuery"etnl_signifie"newsletter".
Modèles
ManuelpourContao3.2
55Modèles
Lesbalisesd'insertionsontdesjokersquisontremplacésparducontenudynamiquequandunepageestaffichéeàl'écran.Ellesvouspermettent,parexemple,d'afficherladatecourante,l'adressed'unmembreenfonctiondesonnomoubiend'inclureunfichier.Lesbalisesd'insertionpeuventêtreutiliséespresquepartoutdansContao,mêmedanslespagesencache.
Lesbalisesd'insertionsuivantesvouspermettentdefaireunlienversuneautrepageouversunarticleenutilisantsonIDousonalias.
Balised'insertion Description
{{link::*}}Cettebaliseseraremplacéeparunlienversunepageinterne(remplacez*parunIDouunaliasdepage).
{{link::back}}
Cettebaliseseraremplacéeparunlienquipointeversladernièrepagevisitée.Ellepeutaussiêtreutiliséecomme{{link_open::back}},{{link_url::back}}ou{{link_title::back}}(voirci-dessous).
{{link::login}}Cettebaliseseraremplacéeparunlienverslapagedeconnexiondumembreactuellementconnecté(s'ilyenaun).
{{link_open::*}}Cettebaliseseraremplacéeparlabalised'ouvertured'unlienversunepageinterne:{{link_open::12}}Cliquezici{{link_close}}.
{{link_url::*}}Cettebaliseseraremplacéeparl'URLd'unepageinterne:<ahref="{{link_url::12}}">Cliquezici</a>.
{{link_title::*}}Cettebaliseseraremplacéeparletitred'unepageinterne:<atitle="{{link_title::12}}">Cliquezici</a>.
{{link_close}}Cettebaliseseraremplacéeparlabalisedefermetured'unlienversunepageinterne:{{link_open::12}}Cliquezici{{link_close}}.
{{article::*}}Cettebaliseseraremplacéeparunlienversunarticle(remplacez*parunIDouunaliasd'article).
{{article_open::*}}Cettebaliseseraremplacéparlabalised'ouverturedulienversunarticle:{{article_open::12}}Cliquezici{{link_close}}.
{{article_url::*}}Cettebaliseseraremplacéeparl'URLd'unarticle:<ahref="{{article_url::12}}">Cliquezici</a>.
{{article_title::*}}Cettebaliseseraremplacéeparletitred'unarticle:<atitle="{{article_title::12}}">Cliquezici</a>.
{{news::*}}Cettebaliseseraremplacéeparunlienversuneactualité(remplacez*parunIDouunaliasd'actualité).
{{news_open::*}}Cettebaliseseraremplacéparlabalised'ouverturedulienversuneactualité:{{news_open::12}}Cliquezici{{link_close}}.
{{news_url::*}}Cettebaliseseraremplacéeparl'URLd'uneactualité:<ahref="{{news_url::12}}">Cliquezici</a>.
{{news_title::*}}Cettebaliseseraremplacéeparletitred'uneactualité:<atitle="{{news_title::12}}">Cliquezici</a>.
{{news_feed::*}}Cettebaliseseraremplacéeparl'URLd'unfluxd'unévénement(remplacez*parunIDdufluxd'unévénement).
{{event::*}}Cettebaliseseraremplacéeparunlienversunévénement(remplacez*parunIDouunaliasd'événement).
Balisesd'insertion
Lesélémentsdelien
ManuelpourContao3.2
56Balisesd'insertion
{{event_open::*}} Cettebaliseseraremplacéparlabalised'ouverturedulienversunévénement:{{event_open::12}}Cliquezici{{link_close}}.
{{event_url::*}}Cettebaliseseraremplacéeparl'URLd'unévénement:<ahref="{{event_url::12}}">Cliquezici</a>.
{{event_title::*}}Cettebaliseseraremplacéeparletitred'unévénement:<atitle="{{event_title::12}}">Cliquezici</a>.
{{calendar_feed::*}}Cettebaliseseraremplacéeparl'URLd'unfluxd'uncalendrier(remplacez*parunIDdufluxd'uncalendrier).
{{faq::*}}Cettebaliseseraremplacéeparunlienversunequestionfréquemmentposée(remplacez*parunIDouunaliasdeFAQ).
{{faq_open::*}}Cettebaliseseraremplacéparlabalised'ouvertureduliend'unequestion:{{faq_open::12}}Cliquezici{{link_close}}.
{{faq_url::*}}Cettebaliseseraremplacéeparl'URLd'unequestion:<ahref="{{faq_url::12}}">Cliquezici</a>.
{{faq_title::*}}Cettebaliseseraremplacéeparletitred'unequestion:<atitle="{{faq_title::12}}">Cliquezici</a>.
Lesbalisesd'insertionsuivantesvouspermettentd'affichern'importequellepropriétédumembreactuellementconnecté.
Balised'insertion Description
{{user::firstname}} Cettebaliseseraremplacéeparleprénomdumembreactuellementconnecté.
{{user::lastname}} Cettebaliseseraremplacéeparlenomdefamilledumembreactuellementconnecté.
{{user::company}} Cettebaliseseraremplacéeparlenomdelasociétédumembreactuellementconnecté.
{{user::phone}} Cettebaliseseraremplacéeparlen°detéléphonedumembreactuellementconnecté.
{{user::mobile}}Cettebaliseseraremplacéeparlen°detéléphoneportabledumembreactuellementconnecté.
{{user::fax}} Cettebaliseseraremplacéeparlen°defaxdumembreactuellementconnecté.
{{user::email}} Cettebaliseseraremplacéeparl'adressee-maildumembreactuellementconnecté.
{{user::website}}Cettebaliseseraremplacéeparl'adressedusiteinternetdumembreactuellementconnecté.
{{user::street}} Cettebaliseseraremplacéeparlenomdelaruedumembreactuellementconnecté.
{{user::postal}} Cettebaliseseraremplacéeparlecodepostaldumembreactuellementconnecté.
{{user::city}} Cettebaliseseraremplacéeparlenomdelavilledumembreactuellementconnecté.
{{user::country}} Seraremplacéeparlenomdupaysdumembreactuellementconnecté.
{{user::username}} Cettebaliseseraremplacéeparlenomd'utilisateurdumembreactuellementconnecté.
Lesbalisesd'insertionsuivantesvouspermettentd'affichern'importequellepropriétédelapagecourante.
Balised'insertion Description
{{page::id}} Cettebaliseseraremplacéeparl'IDdelapagecourante.
{{page::alias}} Cettebaliseseraremplacéeparl'aliasdelapagecourante.
{{page::title}} Cettebaliseseraremplacéeparlenomdelapagecourante.
Propriétésdel'utilisateur
Propriétésdepage
ManuelpourContao3.2
57Balisesd'insertion
{{page::pageTitle}} Cettebaliseseraremplacéeparletitredelapagecourante.
{{page::language}} Cettebaliseseraremplacéeparlalanguedelapagecourante.
{{page::parentAlias}} Cettebaliseseraremplacéeparl'aliasdelapageparente.
{{page::parentTitle}} Cettebaliseseraremplacéeparlenomdelapageparente.
{{page::parentPageTitle}} Cettebaliseseraremplacéeparletitredelapageparente.
{{page::mainAlias}} Cettebaliseseraremplacéeparl'aliasdelapageparenteprincipale.
{{page::mainTitle}} Cettebaliseseraremplacéeparlenomdelapageparenteprincipale.
{{page::mainPageTitle}} Cettebaliseseraremplacéeparletitredelapageparenteprincipale.
{{page::rootTitle}} Cettebaliseseraremplacéeparlenomdusiteinternet.
{{page::rootPageTitle}} Cettebaliseseraremplacéeparletitredusiteinternet.
Lesbalisesd'insertionsuivantesvouspermettentd'afficherlesvariablesd'environnementcommelenomdelapageoulachaînederequête.
Balised'insertion Description
{{env::host}} Cettebaliseseraremplacéeparlenomd'hôteactuel.
{{env::url}} Cettebaliseseraremplacéeparlenomd'hôteetleprotocole.
{{env::path}}Cettebaliseseraremplacéeparlabasedel'URLactuelleincluantlecheminversledossierContao.
{{env::request}} Cettebaliseseraremplacéeparlachaînederequêteactuelle.
{{env::ip}} Cettebaliseseraremplacéeparl'adresseIPduvisiteuractuel.
{{env::referer}} Cettebaliseseraremplacéeparl'URLdeladernièrepagevisitée.
{{env::files_url}} Cettebaliseseraremplacéeparl'URLstatiquedurépertoirefiles.
{{env::assets_url}} Cettebaliseseraremplacéeparl'URLstatiquedurépertoireassets.
Lesbalisesd'insertionsuivantesvouspermettentd'incluredifférentesressourcescommedesarticles,desmodulesoudesfichiersquisetrouventdanslerépertoire"templates".
Balised'insertion Description
{{insert_article::*}}Cettebaliseseraremplacéeparl'articleréférencé(remplacez*parl'IDoul'aliasdel'article).
{{insert_content::*}}Cettebaliseseraremplacéeparl'élémentdecontenuréférencé(remplacez*parl'IDdel'élément).
{{insert_module::*}} Cettebaliseseraremplacéeparlemoduleréférencé(remplacez*parl'IDdumodule).
{{insert_form::*}}Cettebaliseseraremplacéeparleformulaireréférencé(remplacez*parl'IDduformulaire).
{{article_teaser::*}} Cettebaliseseraremplacéeparuneaccroched'article(remplacez*parl'IDdel'article).
{{news_teaser::*}}Cettebaliseseraremplacéeparuneaccroched'actualité(remplacez*parl'IDdel'actualité).
Variablesd'environnement
Élémentsinclus
ManuelpourContao3.2
58Balisesd'insertion
{{event_teaser::*}} Cettebaliseseraremplacéeparuneaccroched'évènement(remplacez*parl'IDdel'évènement).
{{file::*}}
Cettebaliseseraremplacéeparlecontenud'unfichiersetrouvantdansledossier"templates"(remplacez*parlenomdufichier).Vouspouvezaussifournirdesarguments:{{file::file.php?arg1=val&arg2=val}}.Vouspouvezégalementrécupérerlechemind'unfichieràpartirdelabasededonnéesavecsonUUID:{{file::6939a448-9b30-11e4-bcba-079af1e9baea}}.
Lesbalisesd'insertionsuivantesvouspermettentd'effectuerdifférentestâchescommeajouterladatecouranteouajouterdesimageslightbox.
Balised'insertion Description
{{date}} Cettebaliseseraremplacéeparladatecourantedansleformatdedateglobal.
{{date::*}} Cettebaliseseraremplacéeparladatecourantedansunformatdedatepersonnalisé.
{{last_update}}Cettebaliseseraremplacéeparladatedeladernièremiseàjourdansleformatdedateglobal.
{{last_update::*}}Cettebaliseseraremplacéeparladatedeladernièremiseàjourdansunformatdedatepersonnalisé.
{{email::*}} Cettebaliseseraremplacéeunliencliquableetencodéversuneadressee-mail.
{{email_open::*}}Cettebaliseseraremplacéeparunliencliquableetencodéversuneadressee-mail.Toutefois,labalisedefermeture</a>neserapasajoutée.
{{email_url::*}} Cettebaliseseraremplacéeparl'adressee-mailencodéeseulement.
{{lang::*}}
Cettebalisepeutêtreutiliséepourmarquerlesmotsétrangersàl'intérieurd'untexte:{{lang::en}}Goodbye{{lang}}seraremplacépar<spanlang="en">Goodbye</span>etajoutel'attributxml:lang="en"siledoctypeestXHTML.
{{abbr::*}}Marquelesabréviationsdansuntexte:{{abbr::WorldWideWeb}}WWW{{abbr}}seraremplacépar<abbrtitle="WorldWideWeb">WWW</abbr>.
{{acronym::*}}
Marquelesacronymesdansuntexte:{{acronym::MultipurposeInternetMailExtensions}}MIME{{acronym}}seraremplacépar<acronymtitle="MultipurposeInternetMailExtensions">MIME</acronym>.
{{ua::*}}Propriétésdesortiedel'agentutilisateur:{{ua::browser}}.Ellesera,parexemple,remplacéepar"chrome".
{{iflng::*}}
Cettebaliseseracomplètementsuppriméesilalanguedelapagenecorrespondpasàlalanguedelabalise.Vouspouvezl'utiliserpourdéfinirdeslabelsspécifiquesàunelangue:{{iflng::en}}Yourname{{iflng}}{{iflng::de}}IhrName{{iflng}}.
{{ifnlng::*}}
Cettebaliseseracomplètementsuppriméesilalanguedelapagecorrespondàlalanguedelabalise.Vouspouvezl'utiliserpourdéfinirdeslabelsspécifiquesàunelangue:{{ifnlng::de}}Yourname{{ifnlng}}{{iflng::de}}IhrName{{iflng}}.
{{image::*}}
Cettebaliseseraremplacéeparunevignetted'image(remplacer*avecl'IDdebasededonnées,UUIDouunchemindefichiersystème):{{image::58ca4a90-2d30-11e4-8c21-0800200c9a66?width=200&height=150}}.width:Largeurdelavignette,height:Hauteurdelavignette,alt:Textealternatif,class:ClasseCSS,rel:Attributrel(parex."lightbox"),mode:Mode("proportional","crop"ou"box").
{{label::*}}
Cettebaliseseraremplacéeparunlibellétraduit.LepremierparamètreestunnomdefichierdelangueouunacronymetelsqueCNT(pays)ouLNG(langues).Exemples:{{label::CNT:au}}affiche"Australie"et{{label::tl_article:title:0}}affiche"Titre".Notezqueseullepremierdeux-pointsestdoublé.
Divers
ManuelpourContao3.2
59Balisesd'insertion
{{version}} CettebaliseseraremplacéeparlaversionactuelledeContao(parexemple3.2.7).
{{request_token}} Cettebaliseseraremplacéeparlademandedejetondelasessionencours.
{{toggle_view}}Ajoutelelienquivouspermetdebasculerentrelemodèlepourmobileetceluid'unordinateurdebureau.
{{br}} CettebaliseseraremplacéeparlabaliseHTML<br>(sautdeligne).
Enutilisantdesdrapeaux,lesbalisesd'insertionpeuventêtretraitéesdemanièreplusapprofondie.Parexemple,lavaleurpeutêtretransmiseauxméthodesPHPspécifiques.Plusieursdrapeauxpeuventêtreappliqués:
{{ua::browser|uncached}}
{{page::title|decodeEntities|strtoupper}}
Drapeauxdisponibles:
Drapeau Description Plusd'information
uncachedNepasremplacerunebalised'insertionlorsquelapageestmiseencache
refreshNepasmettreencachelabalised'insertion,mêmesielleestutiliséeplusieursfoissurlamêmepage
addslashes Ajoutedesbarresobliquesinverséesdansunechaîne FonctionPHP
stripslashes Supprimelesbarresobliquesinverséesd'unechaîne FonctionPHP
standardizeNormaliselasortie(parexemplepourunaliasdepageouuneclasseCSS)
ampersand ConvertitlesesperluettesenentitésdecaractèreHTML
specialcharsConvertitlescaractèresspéciauxenentitésdecaractèreHTML
nl2brInsèredesretoursàlaligneHTMLàchaquenouvellelignedansunechaîne FonctionPHP
nl2br_preIdentiqueànl2br,maisconservelesretoursàlalignedanslabalise<pre>
strtolower Renvoieunechaîneenminuscules FonctionPHP
utf8_strtolower ConversionUnicodeenminuscules
strtoupper Renvoieunechaîneenmajuscules FonctionPHP
utf8_strtoupper ConversionUnicodeenmajuscules
ucfirst Metlepremiercaractèred'unechaîneenmajuscule FonctionPHP
lcfirst Metlepremiercaractèred'unechaîneenminuscule FonctionPHP
ucwordsMetenmajusculelapremièrelettredetouslesmotsdansunechaîne FonctionPHP
trim Supprimelesespacesendébutetfindechaîne FonctionPHP
rtrim Supprimelesespacesdefindechaîne FonctionPHP
ltrim Supprimelesespacesdedébutdechaîne FonctionPHP
utf8_romanize Romaniselasortie
Drapeauxdesbalisesd'insertion
ManuelpourContao3.2
60Balisesd'insertion
strrev Inverseunechaîne FonctionPHP
encodeEmail Encodelesadressese-maildanslasortie VoirString::encodeEmail
decodeEntities DécodelesentitésdecaractèreHTMLdanslasortie VoirString::decodeEntities()
number_format Formateunnuméro(sansdécimale) VoirSystem::getFormattedNumber()
currency_format Formateunedevise(deuxdécimales) VoirSystem::getFormattedNumber()
readable_sizeConvertitdestaillesdefichiersdansunformatlisibleparunhumain
VoirSystem::getReadableSize()
ManuelpourContao3.2
61Balisesd'insertion
LeschapitressuivantsexpliquentcommentadministrerContao.Outrel'installationetlamiseàjourdel'application,unadministrateurestresponsabledelacréationdesutilisateursetdesgroupesd'utilisateurs,degérerlesmodulesadditionnelsetdelamaintenancedusystème.
Administrationdusystème
ManuelpourContao3.2
62Administrationdusystème
Contaofaitunedistinctionentrelesutilisateursdubackoffice("utilisateurs"),quipeuventseconnecteraupanneaud'administration,etlesutilisateursfrontoffice("membres"),quipeuventseconnecterausiteinternet.Contrairementauxadministrateurs,quiontaccèsàtouteslespagesetàtouslesélémentspardéfaut("allowall"),lesutilisateursnepeuventpasaccéderàuneressourcequin'apasétéexplicitementautoriséedansleurprofiloudansleprofildel'undesgroupesd'utilisateursauxquelsilsappartiennent("denyall").
Chaqueutilisateurpeutêtreassociéàplusieursgroupesd'utilisateursethériteautomatiquementdeleursautorisations.Touteslesautorisationssontcumulatives,cequisignifiequel'utilisateurhéritedelasommedespermissionsdetouslesgroupesauxquelsilappartient.SilegroupeAaccordeuncertaindroit,vousnepouvezpaslarévoquerdanslegroupeB.
L'option"Pagesautorisées"permetdedéfinirquellespagesdelastructuredesite,l'utilisateurestautoriséàvoir.Lacaptured'écranci-dessousmontrelastructuredesitetellequ'elleestperçueparHelenLewis.Bienquelesiteinternetcontientbeaucoupplusdepages,ellenepeutenvoirquetrois,parcequeseull'accèsàlapage"Courses"aétéautorisédanslesparamètresdugroupe"Editors".NotezquemêmesiHelenLewisestautoriséeàvoirtroispages,ellenepeutmodifierquel'uned'elles!
Êtrecapabledevoirunepagen'inclutpasledroitdelamodifier(oudemodifiersesarticles).Rappelez-vousquelespermissionsd'unepagesontdéfiniesdanslastructuredesite,doncpourpermettrel'accèsàunepageàunutilisateur,vousdevezlasélectionnerdanssonprofiletaccordersonaccèsdanslastructuredesite.
Semblableàl'option"Pagesautorisées",l'option"Répertoiresautorisés"définiequelsrépertoiresunutilisateurestautoriséàvoir.Lacaptured'écranci-dessousmontrelegestionnairedefichierstelqu'ilestperçuparHelenLewis.Ellen'estautoriséedevoirquelerépertoire"campus",alorsquelesadministrateurspeuventvoirlerépertoirecompletdesfichiers(files).
Utilisateursetgroupesd'utilisateurs
Utilisateurs
Pagesautorisées
Répertoiresautorisés
ManuelpourContao3.2
63Utilisateursetgroupesd'utilisateurs
Commementionnéaudébut,lesutilisateursn'ontpasdutoutdepermissionspardéfaut("denyall"),cequiimpliqueaussiqu'ilsnepeuventpasaccéderauxchampsd'unformulaire.Mêmes'ilssontparexempleautorisésàaccéderaumoduled'actualités,leformulairepourcréerunenouvelleentréeseravidejusqu'àcequel'administrateursélectionneunouplusieurschampsdelatabletl_newsdanslesparamètresdugroupe.
Champsautorisés
Membres
ManuelpourContao3.2
64Utilisateursetgroupesd'utilisateurs
Lagestiondesmembres(utilisateursfrontoffice)estbeaucoupplusfacileàgérerquecelledesutilisateursbackoffice,cariln'yapasdepagesoudechampsàautoriser.Lagestiondesmembresestprincipalementrequisepourcontrôlerl'accèsauxpagesprotégées,quiestmisenœuvreauniveaudugroupe.Enfonctiondelaconfigurationdusiteinternet,lesmembresinscritspourrontvoirdespagesprotégéesouaccéderàdestéléchargementsprotégésquinesontpasdisponiblespourlesinvités.
ManuelpourContao3.2
65Utilisateursetgroupesd'utilisateurs
LesextensionssontunepartieessentielledeContao,carilsvouspermettentd'ajouterdesfonctionnalitéssupplémentaires.Ilexisteplusde1400extensionsdisponiblesdansleréférentield'extensionsdeContao,quevouspouvezparcourirdirectementàpartirdubackoffice.Lacommunicationavecleserveurduréférentiels'effectueviaSOAP,doncvousdevezactiverl'extensionSOAPdePHPpourutiliserleservice(siellen'estpasactivéepardéfaut).
Lemodule"Catalogued'extensions"vouspermetdeparcourirlalistedesextensionsetd'installerdesextensionsparsimplepressiond'unbouton.Utilisezlesoptionsdefiltrageetdetripourtrouveruneextensionparticulièreetcliquezsurl'icôned'informationouletitredel'extensionpourouvrirlapagededétailsetinstallerlemodule.
Lapagededétailscontientunedescriptiondel'extensionetdesinformationsimportantesconcernantlesconfigurationsdusystèmerequisesainsiquelesversionsetlesdépendancesd'autresmodules.Cliquezsurlebouton"Installer"pourtéléchargeretinstallerl'extension.
Extensions
Catalogued'extensions
ManuelpourContao3.2
66Extensions
Contaotéléchargeraetinstalleraautomatiquementl'extensionetmettraàjourlabasededonnéessinécessaire.
ManuelpourContao3.2
67Extensions
Lemodule"Gestionnaired'extensions"vouspermetdemettreàjouretdedésinstallerdesextensions.Ilvérifieautomatiquementlesmisesàjouretvousavertitsiunenouvelleversionestdisponible.Denombreusesextensionsincluentégalementdesliensversunmanuelenligneet/ouunfildediscussiondansunforumoùvouspouvezobtenirdel'aide.
Pourdésinstalleruneextension,cliquezsimplementsurl'icônededésinstallationetsuivezlesinstructions.Legestionnaired'extensionsvasupprimertouslesfichiersetrépertoiresetmettreàjourlabasededonnéessinécessaire.Notezquecetteactionnepeutpasêtreannuléeetlestablesnepeuventpasêtrerestaurées!
Gestionnaired'extensions
ManuelpourContao3.2
68Extensions
Danslecasoùl'extensionSOAPdePHPn'estpasdisponiblesurvotreserveur,vouspouvezégalementinstallerdesextensionsdeContaomanuellement.Trouvezlemodulecorrespondantdanslalistedesextensionsettéléchargezl'archive.zipdeladernièreversion.Ensuite,décompressezlesfichiersetcopiez-lesdansvotrerépertoirelocaloudistantdeContao.Enfin,vérifiezlabasededonnéesavecl'outild'installationdeContao.
Installationmanuelle
ManuelpourContao3.2
69Extensions
Laplupartdestravauxd'entretiendansContaosontexécutésautomatiquementparle"PeriodicCommandScheduler",vouspouvezdoncvousconcentrersurvotretravail.Mêmelestâchesdanslemoduledemaintenancesonteffectuéesautomatiquement,maisparfoisilestnécessairedelesdéclenchermanuellement.
Outrelecontenugénéréparl'utilisateur,Contaostockebeaucoupdedonnéesdusystèmequisontutiliséespourrestaurerlesenregistrementssupprimés,reveniràdesversionsantérieures,créerl'indexderecherchedusiteinternetouréduireletempsdechargementd'unepage.Vouspouvezpurgercesdonnéesmanuellementparexemplepoursupprimerlesanciennesvignettesàpartirducached'imagesoupourrecréerlesfichiersXMLduplandusiteaprèsquevousayezmodifiélastructuredesite.
Lespagessontgénéralementajoutéesautomatiquementàl'indexderecherchequandellessontvuesdanslefrontoffice(saufsivousêtesconnectéaubackofficeenmêmetemps),vousn'avezdoncpasbesoindevousinquiéterausujetdel'indexderecherche.Cependant,sivousavezmodifiéungrandnombredepages,ilestpluscommodedelesmettreàjourtoutesàlafoisaulieudelesouvriruneparunedanslenavigateur.Danscecas,vouspouvezreconstruirel'indexde
Maintenance
Purgerdesdonnées
Reconstruirel'indexderecherche
ManuelpourContao3.2
70Maintenance
recherchemanuellement.
ManuelpourContao3.2
71Maintenance
Lestableauxconteneursdedonnées("DataContainerArrays"enAnglais,ouDCA)sontutiliséspourstockerlesmétadonnéesdestables.ChaqueDCAdécritunetableparticulièredupointdevuedesaconfiguration,desesrelationsaveclesautrestablesetdeseschamps.LenoyaudeContaodéterminegrâceàcesmétadonnéescommentlisterlesenregistrements,commentgénérerlesformulairesdanslebackofficeetcommentsauvegarderlesdonnées.LesfichiersDCAdetouslesmodulesactifssontchargéslesunsaprèslesautres(encommençantpar"backend",puis"frontend"etensuitedansl'ordrealphabétique)afinquechaquemodulepuissesurchargerlaconfigurationexistante.Lefichiersystem/config/dcaconfig.phpestinclusàlafin.
Tableauxconteneursdedonnées
ManuelpourContao3.2
72Tableauxconteneursdedonnées
Untableauconteneurdedonnéesestdiviséensixsections.Lapremièresectioncontientlesconfigurationsgénéralesdelatable,commelesrelationsavecd'autrestables.Lesdeuxièmeettroisièmesectionsdéterminentlamanièredontlesenregistrementssontlistés,etquellesopérationsunutilisateurestendroitd'exécuter.Laquatrièmesectiondéfinitdifférentsgroupesdechampsdeformulaires,appelés"palettes",etlesdeuxdernièressectionsdécriventleschampsendétail.
Laconfigurationdelatabledécritlatableelle-même,parexemplequeltypedeconteneursdedonnéesestutilisépourstockerlesdonnéesoucommentelleestenrelationavecd'autrestables.Vouspouvezégalementactiverlesuividesversionsoudéfinircequiarriveauxenregistrementsenfantslorsquelesdonnéessontéditéesousupprimées.
Clé Valeur Description
label&$GLOBALS['TL_LANG']
(string)Lelibelléutilisédansl'arborescencedespagesoudesfichiers,etincluttypiquementuneréférenceautableaudelangues.
ptable Tableparente(string) Lenomdelatableparente(table.pid=ptable.id).
ctable Tablesenfants(array) Lesnomsdestablesenfants(table.id=ctable.pid).
dataContainer Conteneurdedonnées(string)
Table(tabledelabasededonnées),File(fichierdeconfigurationlocal)ouFolder(gestionnairedefichiers).
closed true/false(boolean) Sitrue,vousnepouvezplusrajouterd'enregistrementdanscettetable.
notEditable true/false(boolean) Sitrue,latablenepeutpasêtremodifiée.
notDeletable true/false(boolean) Sitrue,lesenregistrementsdelatablenepeuventpasêtresupprimés.
switchToEdit true/false(boolean) Activelebouton"Sauvegarderetéditer"lorsqu'unnouvelenregistrementestajouté(modedetri4uniquement).
enableVersioning true/false(boolean) Sitrue,Contaoenregistrel'ancienneversiondel'enregistrementlorsqu'unenouvelleversionestcréée.
doNotCopyRecords true/false(boolean)Sitrue,Contaonedupliquerapaslesenregistrementsdelatablecourantelorsqu'unenregistrementdesatableparenteestdupliqué.
doNotDeleteRecords true/false(boolean)Sitrue,Contaon'effacerapaslesenregistrementsdelatablecourantelorsqu'unenregistrementdesatableparenteesteffacé.
onload_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséelorsqu'unDataContainerestinitialisé,etpassel'objetDataContainerenargument.
onsubmit_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséeaprèslamiseàjourd'unenregistrement,etpassel'objetDataContainerenargument.
ondelete_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséeaprèslasuppressiond'unenregistrement,etpassel'objetDataContainerenargument.
oncut_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséelorsqu'unenregistrementestdéplacé,etpassel'objetDataContainerenargument.Ajoutéeàpartirdelaversion2.8.2deContao.
oncopy_callback Fonctioncallback Appelleunefonctionpersonnaliséelorsqu'unenregistrementestdupliqué,etpassel'objetDataContainerenargument.Ajoutéeà
Référence
Configurationdelatable
ManuelpourContao3.2
73Référence
partirdelaversion2.8.2deContao.
onversion_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséelorsqu'unenouvelleversiond'unenregistrementestcrééeetpasselatable,l'IDd'insertionetl'objetDataContainerenarguments.
onrestore_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséelorsqu'uneversiond'unenregistrementestrestauréeetpassel'IDd'insertion,latable,letableaudedonnéesetlaversionenarguments.
sql Configurationdelatable(array)
Décritlaconfigurationdelatable,parexemple'keys'=>array('id'=>'primary','pid'=>'index')
Letableau"list"définitcommentlesenregistrementssontlistés.Contaofournittroisvuesdifférentes:lavueenliste,lavueparenteetlavuearborescente.Vouspouvezconfigurerdifférentesoptionsdetri,telsquedesfiltresouunordredetripardéfautetajouterdeslibelléspersonnalisés.
Clé Valeur Description
mode Modedetri(integer)
0Lesenregistrementsnesontpastriés1Lesenregistrementssonttriésselonunchampdéterminé2Lesenregistrementssonttriésselonunchampsélectionnable3Lesenregistrementssonttriésparlatableparente4Affichelesenregistrementsenfantsd'unetableparente(voirlemodulefeuillesdestyle)5Lesenregistrementssontprésentésenarborescence(voirlastructuredesite)6Affichelesenregistrementsenfantsdansunestructureenarborescence(voirlemodulearticles)
flag Tri"flag"(integer)
1Triascendantsurlapremièrelettre2Tridescendantsurlapremièrelettre3Triascendantsurlesdeuxpremièreslettres4Tridescendantsurlesdeuxpremièreslettres5Triascendantparjour6Tridescendantparjour7Triascendantparmois8Tridescendantparmois9Triascendantparannée10Tridescendantparannée11Triascendant12Tridescendant
panelLayoutPrésentationdupanneau(string)
searchaffichelemenuderecherchedesenregistrementssortaffichelemenudetridesenregistrementsfilteraffichelemenudefiltragedesenregistrementslimitaffichelemenudelimitationdunombredesenregistrements
Lesoptionsdoiventêtreséparéespardesvirgules(=espace)etdespoints-virgules(=nouvelleligne)commesort,filter;search,limit.
fieldsValeursdetripardéfaut(array)
Unouplusieurschampsutiliséspourtrierlatable.
headerFields Champsd'en-tête(array)
Unouplusieurschampsaffichésdansl'élémenten-tête(modedetri4uniquement).
iconIcôned'arborescence(string)
Chemindel'icônequiseraaffichéeaudessusdel'arborescence(modedetri5et6uniquement).
root Nœudsracines(array)
IDdesenregistrementsracines(pagesautorisées).Engénéral,cettevaleursegèretouteseule.
Listedesenregistrements
Tri
ManuelpourContao3.2
74Référence
(array) valeursegèretouteseule.
filterFiltrederequête(array)
Vouspermetd'ajouterdesfiltrespersonnaliséssousformedetableaux,parexemplearray('status=?','active').
disableGrouping true/false(boolean)
Vouspermetdedésactiverlesen-têtesdegroupedanslesvuesenlisteetdanslesvuesparentes.
paste_button_callbackFonctioncallback(array)
Cettefonctionseraappeléeaulieud'afficherlesboutonsdecollagepardéfaut.Aspécifierentantquearray('Class','Method').
child_record_callbackFonctioncallback(array)
Cettefonctionseraappeléepourrestituerlesélémentsenfants(modedetri4uniquement).Aspécifierentantquearray('Class','Method').
child_record_class ClassCSS(string)
Vouspermetd'ajouteruneclasseCSSauxélémentsdelavueparente.
Clé Valeur Description
fields Champs(array) Unouplusieurschampsquiserontaffichésdanslaliste.(parexemplearray('title','user_id:tl_user.name')).
showColumns true/false(boolean)
Sitrue,unen-têtedetableauseragénéréaveclesnomsdecolonnes(parexemple,lalistedesmembresdanslebackoffice)
formatChaînedeformatage(string)
UnechaînedecaractèresHTMLutiliséepourformaterleschampsquiserontaffichés(parexemple%s).
maxCharactersNombredecaractères(integer)
Nombremaximumdecaractèresdulibellé.
group_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséeplutôtquelafonctionpardéfautpourl'en-têtedegroupe.
label_callback Fonctioncallback(array) Appelleunefonctionpersonnaliséeplutôtquelafonctionlibellépardéfaut.
Letableaudesopérationsestdiviséendeuxsections:lesopérationsglobales,quiconcernenttouslesenregistrementsàlafois(parexemple,modificationdeplusieursenregistrements),etlesopérationsunitaires,quiconcernentqu'unenregistrementspécifique(parexemple,modificationousuppressiond'unenregistrement).
Clé Valeur Description
label&$GLOBALS['TL_LANG']
(string)Labeldubouton.Typiquementuneréférenceautableauglobaldelangues.
href Fragmentd'URL(string)
Unfragmentd'URLajoutéàlachaînedel'URIlorsduclicsurunbouton(parexemple,act=editAll).
class ClasseCSS(string) AttributdeclasseCSSdubouton.
attributesAttributssupplémentaires(string)
Attributssupplémentairescommeungestionnaired'événementsoudedéfinitionsdestyle.
Libellés
Opérations
Opérationsglobales
ManuelpourContao3.2
75Référence
Clé Valeur Description
label&$GLOBALS['TL_LANG']
(string)Intitulédubouton.Typiquementuneréférenceautableauglobaldelangues.
href Fragmentd'URL(string)
Fragmentd'URLajoutéàlachaînedel'URIlorsduclicsurlebouton(parexemple,act=edit).
icon Icône(string) Cheminetnomdefichierdel'icône.
attributesAttributssupplémentaires(string)
Attributssupplémentairescommeungestionnaired'événementsoudedéfinitionsdestyle.
button_callback Fonctioncallback(array)
Appelleunefonctionpersonnaliséeàlaplacedelafonctiondeboutonpardéfaut.Aspécifierentantquearray('Class','Method').
Letableaudeschampsdéfinitlescolonnesd'unetable.Enfonctiondecesparamétrages,Contaodéterminequeltypedechampsdeformulaireàcharger,siunutilisateurestautoriséounonàaccéderàcertainchampetsiunchamppeutêtreutilisécommecritèredetrioudefiltre.
Clé Valeur Description
label&$GLOBALS['TL_LANG']
(string)Intituléduchamp.Typiquement,uneréférenceautableauglobaldelangues.
default Valeurpardéfaut(mixed)
Valeurpardéfautattribuéequandunnouvelenregistrementestcréé.
exclude true/false(boolean)Sitrue,lechampseraexclupourlesnon-administrateurs.Ilpeutêtreactivédanslemodulegroupesd'utilisateurs(champsexclusacceptés).
search true/false(boolean) Sitrue,lechampserainclusdanslemenuderecherche(voir"tridesenregistrements"->"panelLayout").
sorting true/false(boolean) Sitrue,lechampserainclusdanslemenudetri(voir"tridesenregistrements"->"panelLayout").
filter true/false(boolean) Sitrue,lechampserainclusdanslemenudefiltrage(voir"tridesenregistrements"->"panelLayout").
flag Modedetri(integer)
1Triascendantsurlapremièrelettre2Tridescendantsurlapremièrelettre3TriascendantsurlesXpremièreslettres(voirlength)4TridescendantsurlesXpremièreslettres(voirlength)5Triascendantparjour6Tridescendantparjour7Triascendantparmois8Tridescendantparmois9Triascendantparannée10Tridescendantparannée11Triascendant12Tridescendant
length Longueurducritèredetri(integer)
Permetdespécifierlenombredecaractèresutiliséspourlesgroupesdetri(flags3et4).
textChamptextepasswordChampmotdepassetextareaTextareaselectMenudéroulantcheckboxCaseàcocher
Opérationsunitaires
Champs
ManuelpourContao3.2
76Référence
inputType Typedechamps(string)
selectMenudéroulantcheckboxCaseàcocherradioBoutonradioradioTableTableauavecimagesetboutonsradioimageSizeDeuxchampsdetexteavecunmenudéroulantinputUnitChamptexteavecunpetitmenudéroulantd'élémentstrblQuatrechampstextesavecunpetitmenudéroulantd'élémentschmodTableauCHMODpageTreeArborescencedespagesfileTreeArborescencedesfichierstableWizardAssistantdetablestimePeriodChampdetexteavecunmenudéroulantlistWizardAssistantdelistesoptionWizardAssistantd'optionsmoduleWizardAssistantdemodulescheckboxWizardAssistantdecasesàcocher
options Options(array) Optionsd'unmenudéroulantoudeboutonsradio.
options_callback Fonctioncallback(array)
Fonctioncallbackretournantuntableaud'options.Aspécifierentantquearray('Class','Method').
foreignKey Table.champ(string)
Récupèrelesoptionsdepuisunetabledelabasededonnées.Renvoiel'IDcommecléetlechampspécifiécommevaleur.
reference&$GLOBALS['TL_LANG']
(string)Tableaucontenantlesintitulésdesoptions.Typiquement,uneréférenceautableauglobaldelangues.
explanation&$GLOBALS['TL_LANG']
(string)Tableaucontenantlesdescriptions.Typiquement,uneréférenceautableauglobaldelangues.
input_field_callback Fonctioncallback(array)
Exécuteunefonctionpersonnaliséeàlasaisieduchamp,àlaplacedelaroutinepardéfaut,etpassel'objetDataContaineretlelibelléenarguments.
eval Configurationduchamp(array) Diversesoptionsdeconfiguration.Voirleparagraphesuivant.
wizard Fonctioncallback(array)
Appelleunefonctionpersonnaliséeetajoutesavaleurderetourdanslechampdesaisie.Aspécifierentantquearray('Class','Method').
sqlDéfinitiond'unchampdebasededonnées(string)
Décritletypededonnéesetsaconfigurationdebasededonnées,parexemplevarchar(255)NOTNULLdefault''
relation Configurationdesrelations(array) Décritlarelationàlatableparente(voirleparagraphe"relations").
load_callback Fonctionscallback(array)
Cesfonctionsserontappeléesauchargementduchamp.Spécifiezchaquefonctiondecallbackentantquearray('Class','Method').Passelavaleurduchampetleconteneurdedonnéesenarguments.Attendlavaleurduchampcommevaleurderetour.
save_callback Fonctionscallback(array)
Cesfonctionsserontappeléesàlasauvegardeduchamp.Spécifiezchaquefonctiondecallbackentantquearray('Class','Method').Passelavaleurduchampetleconteneurdedonnéesenarguments.Attendlavaleurduchampcommevaleurderetour.Renvoieuneexceptionpourafficherunmessaged'erreur.
Letableaud'évaluationconfigureendétailunchampparticulier.Vouspouvez,parexemple,créerdeschampsobligatoires,ajouterunsélecteurdedatesoudéfinirlenombredelignesetdecolonnesd'unblocdetexte(textarea).Vouspouvezaussimodifierl'apparenced'unchampouactiverl'encryptagedesdonnées.Chaquechamppeutêtrevalidéparuneexpressionrégulière.
Clé Valeur Description
Évaluation
ManuelpourContao3.2
77Référence
helpwizard (boolean) Sitrue,l'icônedel'assistantseraaffichéeàcôtédulibelléduchamp.
mandatory true/false(boolean) Sitrue,lechampnepeutpasêtrevide.
maxlengthLongueurmaximale(integer)
Nombremaximumdecaractèresautorisésdanslechampcourant.
minlengthLongueurminimale(integer)
Nombreminimumdecaractèresquidoiventêtresaisis.
fallback true/false(boolean) Sitrue,lechampnepeutêtreassignéqu'unefoispartable.
rgxpExpressionrégulière(string)
alias exigeunaliasvalide
alnumn'autorisequedescaractèresalphanumériques(ycomprislepoint[.],letraitd’union[-],letiretbas[_]etl'espace[])
alpha n'autorisequedescaractèresalphabétiques(ycomprislepoint[.],letraitd’union[-]etl'espace[])
date exigeunedatevalide
datim exigeunedateetuneheurevalide
digit n'autorisequedescaractèresnumériques(ycomprislepoint[.]etletraitd’union[-])
email exigeuneadressee-mailvalide
emails exigeunelisted'adressese-mailvalide
extnd interdit#&()/<=>
folderalias exigeuneURLd'aliasdedossiervalide
friendly exigeuneadressee-mailvalideauformat"nomconvivial"(friendlynameformat)
language exigeuncodedelanguesvalide
locale exigeune"locale"valide(parexemple"fr-CH")
phoneexigeunnumérodetéléphonevalide(caractèresnumériques,espace[],plus[+],traitd’union[-],parenthèses[()]etbarreoblique[/])
prcnt autorisedesnombresentre0et100
url exigeuneURLvalide
time exigeuneheurevalide
cols Colonnes(integer) Nombredecolonnes(champstextareaseulement).
rows Lignes(integer) Nombredelignes(champstextareaseulement).
multiple true/false(boolean)
Autoriselesvaleursmultiples.S'appliqueauxchampstextes,listesdéroulantes,boutonsradiosetcasesàcocher.Requispourl'assistantdecasesàcocher.
size Taille(integer)
Tailled'unelistedéroulanteàchoixmultiples,ounombredechampsdesaisie.
Attributsde
ManuelpourContao3.2
78Référence
style style(string)
Attributsdestyle(parexempleborder:2px)
rteÉditeurdetexteriche(string)
tinyMCEutiliselefichierconfig/tinyMCE.phptinyFlashutiliselefichierconfig/tinyFlash.phpVouspouvezégalementajoutervospropresfichiersdeconfiguration.
submitOnChange true/false(boolean) Sitrue,leformulaireserasoumislorsquelavaleurduchampestmodifiée.
nospace true/false(boolean) Sitrue,lescaractèresd'espacementneserontpasautorisés.
allowHtml true/false(boolean) Sitrue,lechampcourantaccepteralecodeHTML.
preserveTags true/false(boolean) Sitrue,lesbalisesHTMLneserontpassupprimées.
decodeEntities true/false(boolean)
Sitrue,lesélémentsHTMLserontdécodés.NotezquelesélémentsHTMLsonttoujoursdécodéssiallowHtmlvauttrue.
doNotSaveEmpty true/false(boolean) Sitrue,lechampneserapasenregistrés'ilestvide.
alwaysSave true/false(boolean)
Sitrue,lechampseratoujoursenregistré,mêmesisavaleurn'apaschangé.Celapeutêtreutileenconjonctiond'unload_callback.
spaceToUnderscore true/false(boolean)
Sitrue,touslescaractèresd'espacementserontremplacésparuntiretbas.
unique true/false(boolean) Sitrue,lavaleurduchampnepeutêtreenregistréesielleexistedéjà.
encrypt true/false(boolean) Sitrue,lavaleurduchampserastockéesousformecryptée.
trailingSlash true/false(boolean)
Sitrue,unebarreobliqueseraajoutéeàlafindelavaleurduchamp.Sifalse,labarreoblique,siexistante,quiterminelavaleurduchampserasupprimée.
files true/false(boolean)
Sitrue,lesfichiersetlesdossiersserontaffichés.Sifalse,seulslesrépertoiresserontaffichés.Nes'appliquequ'auxarborescencesdefichiers.
filesOnly true/false(boolean)
Supprimelesboutonsradiooulescasesàcocheràcôtédesnomsdesrépertoires.Nes'appliquequ'auxarborescencesdefichiers.
extensionsExtensionsdefichiers(string)
N'autorisequecertainesextensionsdansl'arborescencedefichiers(listeséparéepardesvirgules).Nes'appliquequ'auxarborescencesdefichiers.
path Chemin(string)
Répertoireracinepersonnalisépourl'arborescencedefichiers.Nes'appliquequ'auxarborescencesdefichiers.
fieldType
Typedechampd'entrée(string)
checkboxautoriselessélectionsmultiplesradion'autorisequ'uneseulesélectionNes'appliquequ'auxarborescencesdefichiersetdepages.
includeBlankOption true/false(boolean)
Sitrue,uneoptionvideseraajoutéeautableaudesoptions.Nes'appliquequ'auxlistesdéroulantes.
blankOptionLabel Libellé(string) Libellépourl'optionvide(pardéfaut-).
chosen true/false(boolean) Balises"select"nativesamélioréesavecChosen.
findInSet true/false(boolean) Trisurlesvaleursactuellesdesoptionsplutôtquesurleurslibellés.
datepicker true/false Sitrue,lechampactuelaunsélecteurdedates.
ManuelpourContao3.2
79Référence
datepicker (boolean) Sitrue,lechampactuelaunsélecteurdedates.
colorpicker true/false(boolean) Sitrue,lechampactuelaunsélecteurdecouleurs
feEditable true/false(boolean)
Sitrue,lechampcourantpeutêtremodifiédanslefrontoffice.Nes'appliquequ'àlatabletl_member.
feGroup Groupname(string)
personaldonnéespersonnellesaddressdétailsdel'adressecontactdétailsdecontactlogindétailsd'identification(uniquementlatabletl_member)Vouspouvezégalementdéfinirvospropresgroupes.
feViewable true/false(boolean)
Sitrue,lechampcourantestaffichédanslemoduledelistesdesmembres.
doNotCopy true/false(boolean)
Sitrue,lechampcourantneserapasdupliquélorsquel'enregistrementestdupliqué.
hideInput true/false(boolean)
Sitrue,lavaleurduchampseracachée(elleseracependantvisibledanslasourcedelapage!).
doNotShow true/false(boolean)
Sitrue,lechampcourantneserapasaffichédanslesmodes"modifiertous"et"voirlesdétails".
isBoolean true/false(boolean) Indiquequ'unchampparticulierestdetypebooléen.
disabled true/false(boolean) Désactivelechamp(n'estpassupportépartouslestypesdechamps).
readonly true/false(boolean)
Rendlechampenlectureseule(n'estpassupportépartouslestypesdechamps).
csv Délimiteur(string)
Lechoixdecechampneserapassauvegardécommeunechaînesérialiséemaiscommeunelisteséparéepardesvirgules.Exemple:'eval'=>array('csv'=>',')
Lesrelationsdécrivent,commentleschampsdebasededonnéessontliésàd'autrestables.DéfinitlatableréférencéedanslacléforeignKey.Lesrelationsfournissentdesclassesdemodèlespourchargerdesensemblesdedonnéesréférencéesdemanièreefficaceetconvivialepourledéveloppeur.(voirModel::getRelated()).
Clé Valeur Description
type Typederelation(string)
hasOneLavaleurréférenceunensemblededonnéesenfantshasManyLavaleurréférencecertainsensemblesdedonnéesenfants(sérialisé)belongsToLavaleurréférenceunensemblededonnéesparentes(z.B.pid)belongsToManyLavaleurréférencecertainsensemblesdedonnéesparentes(sérialisé)
loadComportementauchargement(string)
lazyChargelesenregistrementsréférencésuniquementlorsquecelaestnécessaire.(pardéfaut,économisedelaRAM)eagerChargeautomatiquementlesenregistrementsréférencés(économiselesappelsàlabasededonnées)
Relations
ManuelpourContao3.2
80Référence
Unepaletteestungroupedechampsdeformulairequisontnécessairespourmodifierunenregistrement.Unepalettenecontienttypiquementpastouteslescolonnesd'unetable,maisseulementcellesquiappartiennentàuncertainmoduleouuncertainélémentdecontenu.Lespalettespeuventchangerdynamiquementsuivantlesdroitsdel'utilisateurouletypedel'élémentetcertainssous-ensemblesduformulaire(appelésdessubpalettes)peuventêtrechargésinteractivementavecAjax.
Unepaletteestunechaînedecaractèrescomposéedenomsdechampsconcaténésetséparéssoitpardespoints-virgules(;),soitpardesvirgules(,).Alorsquelavirguleestutiliséesimplementpourséparerdesnomsdechamps,lepoint-virguleindiquelecommencementd'unnouveaufieldset,quipeutêtredérouléouenroulé.
Palettes
Définirdesgroupes
ManuelpourContao3.2
81Palettes
L'exempleci-dessussedéfinitparlecodesuivant:
{title_legend},headline,alias,author;{date_legend},date,time;{teaser_legend:hide},subheadline,teaser
Lesélémentsdesubstitutiontitle_legendetdate_legendserontremplacésparleurlibellécorrespondantdansletableau"TL_LANG".
$GLOBALS['TL_LANG']['tl_news']['title_legend']='Titleandauthor';
$GLOBALS['TL_LANG']['tl_news']['date_legend']='Dateandtime';
LebackofficedeContaoutiliseunsystèmesimpledegrilleendeuxcolonnespourdisposerleschampsd'entréesdansleursgroupes.VouspouvezutiliserlesclassesCSSsuivantesdanslasectionévaluationdutableauconteneurdedonnéesentantquetl_class(exemple'tl_class'=>'w50wizard').
tl_class Description
w50 Définitlalargeurduchampsà50%etlerendflottant(float:left).
clr Libèretouslesélémentsflottants(clear:both).
wizard Raccourcitlechampdesaisiedesortequ'ilyaitassezdeplacepourlebouton"Assistant"(parexempleleschampsavecunsélecteurdedates).
long Lechampdesaisiedetextes'étendsurdeuxcolonnes.
m12 Ajouteunemargesupérieurede12pixelsàl'élément(utilisépourlescasesàcocheruniques).
Disposerleschamps
ManuelpourContao3.2
82Palettes
Lesfonctionscallbacksontfondéessurunpatternderépartitiond'événements.Vouspouvezinscrireuneouplusieurscallbackspouruncertainévénementetlorsquel'événementestdéclenché,lesfonctionscallbacksontexécutées.Lescallbacksvouspermettentdepersonnaliserlecoursdel'exécutionducœurdeContao.
Callback Description
onload_callbackEstexécutéequandl'objetDataContainerestinitialisé.Celavouspermet,parexemple,devérifierlespermissionsoudemodifierletableauconteneurdedonnéesdynamiquementàl'exécution.
onsubmit_callbackEstexécutéelorsqu'unformulairedubackofficeestsoumis.Celavouspermet,parexemple,demodifierlesdonnéesduformulaireavantqu'ellesnesoientécritesdanslabasededonnées(utiliséepourcalculerlesintervallesdansl'extensioncalendrier).
ondelete_callback Estexécutéeavantqu'unenregistrementsoitsupprimédelabasededonnées.
oncut_callback Estexécutéeaprèsqu'unenregistrementaitétédéplacéversunenouvelleposition.
oncopy_callback Estexécutéeaprèsqu'unenregistrementaitétédupliqué.
Callback Description
paste_button_callbackPermetd'avoirdesboutonsdecollageindividuelsetest,parexemple,utiliséedanslastructuredesitepourdésactiverlesboutonsenfonctiondespermissionsdel'utilisateur(nécessiteuncontrôledecommandeadditionnelviaload_callback).
child_record_callback Définitcommentlesélémentsenfantssontrendusdansla"vueparente".
group_callback Permetd'avoirdesen-têtesdegroupesindividuelsdanslelisting.
label_callback Permetd'avoirdeslibellésindividuelsdanslelistingetest,parexemple,utiliséedanslemoduleutilisateurspourajouterdesicônesdestatut.
Callback Description
button_callbackPermetd'avoirdesicônesdenavigationindividuelsetest,parexemple,utiliséedanslastructuredesitepourdésactiverdesboutonsenfonctiondespermissionsdel'utilisateur(nécessiteuncontrôledecommandeadditionnelviaload_callback).
Callback Description
options_callbackVouspermetdedéfinirunefonctionindividuellepourchargerdesdonnéesdansunmenudéroulantouunelistedecasesàcocher.Utile,parexemple,pourdesrelationsavecclésétrangèresconditionnelles.
input_field_callbackPermetlacréationdechampsdeformulaireindividuelsetest,parexemple,utiliséedanslemodulebackoffice"donnéespersonnelles"pourgénérerlewidget"nettoyerlesdonnées".Attention:lechampsn'estpassauvegardéautomatiquement!
load_callback Estexécutéelorsqueunchampsdeformulaireestinitialiséetpeut,parexemple,êtreutiliséepourchargerunevaleurpardéfaut.
Callbacks
Callbacksglobaux
Callbacksdelisting
Callbacksd'opérations
Callbacksdechamps
ManuelpourContao3.2
83Callbacks
save_callback Estexécutéequandunchampsestsoumisetpeut,parexemple,êtreutiliséepourajouteruneroutinedevalidationindividuelle.
ManuelpourContao3.2
84Callbacks
Lapersonnalisationestunedesfonctionnalitéslesplusimportantesden'importequelleapplicationetparticulièrementdessystèmesdegestiondecontenu.Contaofournitdenombreusesoptionspourajusterlaconfiguration,personnaliserleschampsetleslibellés,ajoutersespropresmorceauxdecodeoumêmecréerdenouvellesextensions.Vouspouvezcontrôlerpresquen'importequelcomportementducœurdeContaosansmêmetouchersesfichiers,ainsivousn'avezpasàréappliquervoschangementsàchaquemiseàjour.
PersonnaliserContao
ManuelpourContao3.2
85PersonnaliserContao
AvantdedévelopperdesextensionspourContao,vousdevezcontournerlecacheinterne.Sivousvoulezcontournerlecacheinterne,Suivezlesliens"Système"->"Configuration"etcochezlacase"Contournerlecacheinterne"sous"Configurationglobale".
Dèsquelesiteinternetseraenproduction,vousdevrezdécocherlacase"Contournerlecacheinterne",afinderéduireaumaximumletempsderéponse.
Contournerlecacheinterne
ManuelpourContao3.2
86Contournerlecacheinterne
LaconfigurationdeContaoestdéfiniedansungrandtableaudiviséentroissections:laconfigurationdusystème,laconfigurationduconteneurdedonnéesetlaconfigurationdelalangue.Letableaudeconfigurationestconstruitaumomentdel'exécutionetnecontientquelespartiesnécessairesàlagénérationd'unepagedonnée.Contaoneperdpasdetempsetdemémoireà"parser"denombreuxfichiersdeconfigurationsredondants.
Laconfigurationdusystèmeestenregistréedanslesfichiersconfig.phpdesdifférentsmodulesdeContao.Sivousvoulezlapersonnaliser,ajoutezvosmodificationsdanslefichiersystem/config/localconfig.php,afinqu'ellesnesoientpasécraséesàlaprochainemiseàjour.LaplupartdesparamètrespeuventêtreconfigurésdanslemoduleConfigurationdubackofficeetserontécritsautomatiquementdanslefichierdeconfiguration;vousaurezdoncrarementbesoindelemodifiermanuellement.
//Désactivelecréateurd'extension
unset($GLOBALS['BE_MOD']['devtools']['extension']);
###INSTALLSCRIPTSTART###
$GLOBALS['TL_CONFIG']['debugMode']=false;
$GLOBALS['TL_CONFIG']['displayErrors']=false;
Pensezàmettrevosmodificationsau-dessusdelaligneINSTALLSCRIPTSTART;Àdéfaut,ellesserontsuppriméesparlemoduledeconfiguration.Etn'utilisezjamaislefichierconfig.phppourstockerdesparamètresdeconfiguration,carcefichierpeutêtreécrasélorsdesmisesàjour!
Contaoutiliseletableauconteneurdedonnées(DCA)pourstockerlesmétadonnéesrelativesauxtables.LaconfigurationduconteneurdedonnéesestenregistréedanslesdossiersdcadesdiversmodulesdeContao.Faitesvosmodificationsdanslefichiersystem/config/dcaconfig.phpafinqu'ellesnesoientpasécraséesàlaprochainemiseàjour.
//Rendobligatoirelechampcompanydanslatabledesmembres
$GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['mandatory']=
true;
//Vérifiequelesnomsdecompanynecomprennentquedescaractères
alphanumériques
$GLOBALS['TL_DCA']['tl_member']['fields']['company']['eval']['rgxp']='alnum';
//N'autorisequelesadministrateursàutiliserlesélémentsdecontenude
type"includes"
if(!BackendUser::getInstance()->isAdmin)
{
unset($GLOBALS['TL_CTE']['includes']);
}
Commevouspouvezlevoir,lefichierdcaconfig.phpestunbonendroitpourenregistrerdepetitesmodificationsconcernantlaconfigurationdeContao.Pourfairedenombreuxchangements,pensezplutôtàlesincluredansuneextensionpersonnalisée,afindenepasenperdrelatrace.
LeslibellésetlestraductionssontenregistrésdanslesdossierslanguagesdesdifférentsmodulesdeContao.ChaquelangueestidentifiéeparsoncodeISO-639-1.Appliquezvosmodificationsdanslefichiersystem/config/langconfig.phpafin
Configurationspersonnalisées
Personnaliserlaconfigurationdusystème
Personnaliserlaconfigurationduconteneurdedonnées
Personnaliserleslibellésetlestraductions
ManuelpourContao3.2
87Configurationspersonnalisées
qu'ellesnesoientpasécraséesàlaprochainemiseàjour.
//Modifieunlibellépourtoutesleslangues
$GLOBALS['TL_LANG']['MSC']['goBack']='«';
//Modifieunlibellépouruneseulelangue
if($GLOBALS['TL_LANGUAGE']=='de')
{
$GLOBALS['TL_LANG']['tl_layout']['column']='Bereich';
}
elseif($GLOBALS['TL_LANGUAGE']=='fr')
{
$GLOBALS['TL_LANG']['tl_layout']['column']='Section';
}
Bienentendu,lesmodificationsdutableaudelanguespeuventaussiêtreinclusesdansunmodulepersonnalisé,cequiestrecommandélorsqu'ilyenabeaucoup.
ManuelpourContao3.2
88Configurationspersonnalisées
Imaginonsquevoussouhaitiezajouterunnumérodeclientàlatabledesmembres.L'ajoutd'unchamppersonnaliséàunetabledeContaonécessitedemodifierplusd'unfichier,ilestdoncpréférabled'ajouterunmodulepersonnalisédanslerépertoiresystem/modules.Gardezenmémoirequelesmodulessontchargésensuivantl'ordrealphabétique,n'appelezdoncpasvotreextensioncustomsivoussouhaitezredéfinirlesconfigurationsdel'extensionnews.
Créezlefichierdca/tl_member.phpdanslerépertoiredevotremoduleetajoutez-ylesmétadonnéespourlenouveauchamp,afinqueContaosachecommentlegérer.
Àpartirdelaversion3deContao,vouspouvezégalementspécifierdirectementleschampscorrespondantsetleurconfigurationpourlabasededonnéesdansletableauconteneurdedonnéessoussql.LesdétailsSQLnesontpasenvoyésàlabasededonnées,maissontutiliséspourcalculerladifférenceentrelesspécificationsdeContaoetlestablesexistantes.
//Modificationdelapalette
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']=str_replace
(
'company',
'customer_number,company',
$GLOBALS['TL_DCA']['tl_member']['palettes']['default']
);
//Ajoutelesmétadonnéesduchamp
$GLOBALS['TL_DCA']['tl_member']['fields']['customer_number']=array
(
'label'=>&$GLOBALS['TL_LANG']['tl_member']['customer_number'],
'exclude'=>true,
'inputType'=>'text',
'eval'=>array('mandatory'=>true,'rgxp'=>'digit','maxlength'=>8),
'sql'=>"varchar(8)NOTNULLdefault''"
);
Sivousnecomprenezpaslecodeci-dessus,ilpeutêtreutilederelirelechapitresurlestableauxconteneursdedonnées.
Aprèsl'ajoutoulamodificationd'unchampdansletableauconteneurdedonnées,vousdevriezutiliserl'outild'installationdeContaoafindemettreàjourlestablesdevotrebasededonnées.
Créezlefichierlanguages/en/tl_member.phpdanslerépertoiredevotremodule,etajoutez-yleslibellésanglaispourvotrenouveauchamp:
$GLOBALS['TL_LANG']['tl_member']['customer_number']=array
(
'Customernumber',
'Pleaseenterthe8-digitcustomernumber.'
);
Danslemodulemembres,vouspouvezdésormaissaisirunnumérodeclientquipeutcontenirjusqu'à8caractèresnumériques.Silechampn'estpassaisi,oucontientuncaractèrenonnumérique,Contaorefuserad'enregistrerlavaleuretafficheraunmessaged'erreuràlaplace.
Ajouterdeschampspersonnalisés
ÉtendreleDCA(tableauconteneurdedonnées)
Ajouterunetraduction
ManuelpourContao3.2
89Ajouterdeschampspersonnalisés
CettepageexpliquecommentpersonnaliserTinyMCEetsauvegarderlesmodificationsafinqu'ellesnesoientpasécraséesparlaprochainemiseàjourdeContao.Notezque,pardéfaut,Contaon'inclutpastouslespluginsdeTinyMCE;sivoussouhaitezutiliserunpluginparticulierquinefaitpaspartiedeladistributiondeContao,ilvousfautdoncletéléchargeràpartirdusiteduprojetTinyMCE,etlemettredanslerépertoireassets/tinymce/plugins.
L'imageci-dessusmontrelefichierdeconfigurationdel'éditeurdetexterichesystem/config/tinyMCE.php.Pourcréerunfichierdeconfigurationpersonnalisé,copiezsimplementcefichieretrenommez-le,parexempleentinyCustom.php.Faitesensuitevosmodificationsetsauvegardezlenouveaufichier.Ilresteencoreàadapterlaconfigurationduconteneurdedonnéesdanslefichiersystem/config/dcaconfig.phpetindiqueràContaoàquelschampslefichierpersonnalisédeconfigurations'applique.
//Utilisationd'uneconfigurationpersonnaliséedel'éditeurdetexteriche
pourlesélémentstextes
$GLOBALS['TL_DCA']['tl_content']['fields']['text']['eval']['rte']=
'tinyCustom';
Personnaliserl'éditeurdetexteriche(TinyMCE)
ManuelpourContao3.2
90Personnaliserl'éditeurdetexteriche(TinyMCE)
Imaginonsquevousvouliezmodifierlecomportementdumoduledenavigationpourqu'ilsoittoujoursvisible,mêmeenl'absencedesous-pages,alorsquelemoduleneseraitnormalementpasaffiché.Danscecas,unenotedoitinformerl'utilisateurqu'iln'yapasdesous-pages.Bienentendu,nousallonsfaireensortedeconserveraumaximumlaclasseoriginaledenavigation,afinquelesfuturesmisesàjournenécessitentpasdemaintenance.Lesclassesdemodulesetd'élémentsdecontenupeuventêtreassignéesdynamiquementdanslaconfigurationdusystèmedeContao,cequivouspermetdelesremplacerfacilementparvospropresversions.
Lecomportementdelaclassedenavigationpardéfautcorrespondassezbienàcequenousvoulons,saufquelaméthodegenerate()cachelemodulelorsqu'iln'yapasdesous-pages.Ilsuffitdoncdemodifiercetteméthodeparticulière,etlameilleurefaçondelefaireestd'étendrelaclasseoriginaleenlasupplantant.Pourcefaire,créezunnouveaufichierxcustom/ModuleMyNavigation.phpetdéfinissezlaclassepersonnaliséeModuleMyNavigation:
//xcustom/ModuleMyNavigation.php
classModuleMyNavigationextendsModuleNavigation
{
publicfunctiongenerate()
{
//Exécutelaméthodeoriginale
$buffer=parent::generate();
if(empty($buffer))
{
$buffer='Therearenosubpages';
}
return$buffer;
}
}
Lesclassesdemodulesetd'élémentsdecontenupeuventêtreassignéesdynamiquementdanslaconfigurationdusystèmedeContao,cequivouspermetdelesremplacerfacilementparvospropresversions.LesnomsdesclassesdemodulessontenregistrésdansletableauglobalFE_MOD.
//xcustom/config/config.php
$GLOBALS['FE_MOD']['navigationMenu']['navigation']='ModuleMyNavigation';
Grâceàlaconfigurationdynamique,Contaochargeautomatiquementlanouvelleclasseàlarequêtesuivante,etlemoduledenavigationafficheralemessage"Therearenosubpages"aulieudenerienafficherdutout.Lamodificationsupportelesmisesàjoursansnécessiterdemaintenance.
Surchargerlesméthodesdeclasses
Créeruneclassepersonnalisée
Enregistreruneclassepersonnalisée
ManuelpourContao3.2
91Surchargerlesméthodesdeclasses
Leshooksfonctionnentdelamêmemanièrequelesfonctionscallbackdutableauconteneurdedonnées(DCA).Vouspouvezenregistreruneouplusieursfonctionspourunévénementdonné,etlorsquel'événementestdéclenché,lesfonctionscallbacksontexécutées.Leshooksvouspermettentd'ajouterdesfonctionnalitéspersonnaliséesaucœurdeContao.
LehookactivateAccountestdéclenchélorsqu'unnouveaucompteenfrontofficeestactivé.Ilpassel'objetUserenargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.4.3.
//config.php
$GLOBALS['TL_HOOKS']['activateAccount'][]=array('MyClass',
'myActivateAccount');
//MyClass.php
publicfunctionmyActivateAccount(Database_Result$objUser)
{
//Fairequelquechose
}
LehookactivateRecipientestdéclenchélorsqu'unnouveaudestinataired'unenewsletterestajouté.Ilpassel'adressee-mail,lesIDdudestinataireetdelalistedediffusionenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['activateRecipient'][]=array('MyClass',
'myActivateRecipient');
//MyClass.php
publicfunctionmyActivateRecipient($strEmail,$arrRecipients,$arrChannels)
{
//Fairequelquechose
}
LehookaddCommentestdéclenchélorsqu'uncommentaireestajouté.Ilpassel'IDdel'enregistrementetletableaudedonnéesenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.2.
//config.php
$GLOBALS['TL_HOOKS']['addComment'][]=array('MyClass','myAddComment');
//MyClass.php
publicfunctionmyAddComment($intId,$arrSet)
{
//Fairequelquechose
}
LehookaddCustomRegexpestdéclenchélorsqu'uneexpressionrégulièreinconnueesttrouvée.Ilpasselenomde
Contaohooks
activateAccount
activateRecipient
addComment
addCustomRegexp
ManuelpourContao3.2
92Contaohooks
l'expressionrégulière,lavaleurcouranteetl'objetWidgetenargumentsetattendunevaleurderetourdetypebooléen.Ilestdisponibleàpartirdelaversion2.6.2.
//config.php
$GLOBALS['TL_HOOKS']['addCustomRegexp'][]=array('MyClass',
'myAddCustomRegexp');
//MyClass.php
publicfunctionmyAddCustomRegexp($strRegexp,$varValue,Widget$objWidget)
{
if($strRegexp=='postal')
{
if(!preg_match('/^0-9{4,6}$/',$varValue))
{
$objWidget->addError('Field'.$objWidget->label.'shouldbeapostalcode.');
}
returntrue;
}
returnfalse;
}
LehookaddLogEntryestdéclenchélorsqu'unenouvelleentréeestajoutéeaujournal(log).Ilpasselemessage,lafonctionetl'actionenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['addLogEntry'][]=array('MyClass','myAddLogEntry');
//MyClass.php
publicfunctionmyAddLogEntry($strText,$strFunction,$strAction)
{
//Fairequelquechose
}
LehookcheckCredentialsestdéclenchélorsqu'unetentatived'identificationéchoueàcaused'unmotdepasseincorrect.Ilpasselenomdel'utilisateur,lemotdepasseetl'objetUserenargumentsetattendunevaleurderetourdetypebooléen.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
$GLOBALS['TL_HOOKS']['checkCredentials'][]=array('MyClass',
'myCheckCredentials');
//MyClass.php
publicfunctionmyCheckCredentials($strUsername,$strPassword,User$objUser)
{
//Checkagainstaglobaldatabase
if($this->checkGlobalDbFor($strUsername,$strPassword))
{
returntrue;
}
returnfalse;
}
LehookcloseAccountestdéclenchélorsqu'unutilisateurclôturesoncompte.Ilpassel'IDdel'utilisateur,lemode
addLogEntry
checkCredentials
closeAccount
ManuelpourContao3.2
93Contaohooks
opérationneletlemoduleenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.0.
//config.php
$GLOBALS['TL_HOOKS']['closeAccount'][]=array('MyClass','myCloseAccount');
//MyClass.php
publicfunctionmyCloseAccount($intId,$strMode,$objModule)
{
if($strMode=='close_delete')
{
//Fairequelquechose
}
}
LehookcompileDefinitionestdéclenchéquandunedéfinitiondeformataged'unefeuilledestyleestécrite.Ilpasseletableaudeconfigurationenargumentetattendunechaînedecaractèrescommevaleurderetour.Ilestdisponibleàpartirdelaversion2.9.4.
//config.php
$GLOBALS['TL_HOOKS']['compileDefinition'][]=array('MyClass',
'myCompileDefinition');
//MyClass.php
publicfunctionmyCompileDefinition($arrRow)
{
if(isset($arrRow['border-radius']))
{
return"\nborder-radius:".$arrRow['border-radius'].";";
}
return'';
}
LehookcompileFormFieldsestdéclenchéavantqu'unchampdeformulairesoitchargé.Ilpasseuntableaud'objetsFormFieldModelainsiquel'IDetl'objetduformulaireenargumentsetattendletableaud'objetsFormFieldModelcommevaleurderetour.Aveccehook,leschampsdeformulairepeuventêtreajustésdynamiquementavantl'affichage.Ilestdisponibleàpartirdelaversion3.2.
//config.php
$GLOBALS['TL_HOOKS']['compileFormFields'][]=array('MyClass','myCompileFormFields');
//MyClass.php
publicfunctionmyCompileFormFields($arrFields,$formId,$this)
{
if($formId=='my_form_id')
{
foreach($arrFieldsAS$objFields)
{
if($objFields->name=='my_form_field_1')
{
//Fairequelquechose
}
}
}
return$arrFields;
}
compileDefinition
compileFormFields
ManuelpourContao3.2
94Contaohooks
LehookcreateDefinitionestdéclenchéquandunedéfinitiondeformataged'unefeuilledestyleestimportée.Ilpasselacléetlavaleur,ladéfinitiondeformataged'origineetletableaudedonnéesenargumentsetattenduntableauoufalsecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.9.4.
//config.php
$GLOBALS['TL_HOOKS']['createDefinition'][]=array('MyClass',
'myCreateDefinition');
//MyClass.php
publicfunctionmyCreateDefinition($strKey,$strValue,$strDefinition,$arrSet)
{
if($strKey=='border-radius')
{
returnarray('border-radius'=>$strValue);
}
returnfalse;
}
LehookcreateNewUserestdéclenchélorsqu'unnouvelutilisateurfrontoffices'enregistresurlesiteinternet.Ilpasselenouvelutilisateuretletableaudedonnéesenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.2.0.
//config.php
$GLOBALS['TL_HOOKS']['createNewUser'][]=array('MyClass','myCreateNewUser');
//MyClass.php
publicfunctionmyCreateNewUser($intId,$arrData)
{
//Modificationdel'enregistrement
}
LehookexecutePreActionsestdéclenchéparlesrequêtesAjaxquinenécessitentpasunobjetDCA.Ilpasselenomdel'actionenargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.1.
//config.php
$GLOBALS['TL_HOOKS']['executePreActions'][]=array('MyClass','myExecutePreActions');
//MyClass.php
publicfunctionmyExecutePreActions($strAction)
{
if($strAction=='update')
{
//Fairequelquechose
}
}
LehookexecutePostActionsestdéclenchéparlesrequêtesAjaxquinécessitentunobjetDCA.Ilpasselenomdel'actionetl'objetDataContainerenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.1.
createDefinition
createNewUser
executePreActions
executePostActions
ManuelpourContao3.2
95Contaohooks
//config.php
$GLOBALS['TL_HOOKS']['executePostActions'][]=array('MyClass','myExecutePostActions');
//MyClass.php
publicfunctionmyExecutePostActions($strAction,DataContainer$dc)
{
if($strAction=='update')
{
//Fairequelquechose
}
}
LehookgenerateBreadcrumbpermetdemodifierlanavigationfild'Ariane.Ilpasselesélémentsdenavigationetlemodulefrontofficeenargumentsetattenddesélémentscommevaleurderetour.Ilestdisponibleàpartirdelaversion2.10.0.
//config.php
$GLOBALS['TL_HOOKS']['generateBreadcrumb'][]=array('MyClass','myGenerateBreadcrumb');
//MyClass.php
publicfunctionmyGenerateBreadcrumb($arrItems,\Module$objModule)
{
return$arrItems;
}
LehookgenerateFrontendUrlestdéclenchélorsdelare-créationd'uneURLdefrontoffice.Ilpassel'objetPage,lachaînedeparamètresetl'URLpardéfautenargumentsetattendunechaînedecaractèrescommevaleurderetour.Ilestdisponibleàpartirdelaversion2.5.8.
//config.php
$GLOBALS['TL_HOOKS']['generateFrontendUrl'][]=array('MyClass','myGenerateFrontendUrl');
//MyClass.php
publicfunctionmyGenerateFrontendUrl($arrRow,$strParams,$strUrl)
{
returnstr_replace('.html','.xml',$strUrl);
}
LehookgeneratePageestdéclenchéavantlacompilationdumodèledeprésentationprincipale("fe_page").Ilpassel'objetPage,l'objetModeletuneréférencequiluiestpropreenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['generatePage'][]=array('MyClass','myGeneratePage');
//MyClass.php
publicfunctionmyGeneratePage(\PageModel$objPage,\LayoutModel$objLayout,\PageRegular$objPageRegular)
{
//Fairequelquechose
}
generateBreadcrumb
generateFrontendUrl
generatePage
getAllEvents
ManuelpourContao3.2
96Contaohooks
LehookgetAllEventsvouspermetdemodifierlesjeuxderésultatsproduitsparlesmodulescalendrieretévénements.Ilpasselejeuderésultatscourant,lesIDdesélémentsparentsetl'heurededébutetdefinenargumentsetattendunjeuderésultats(tableau)commevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.4.
//config.php
$GLOBALS['TL_HOOKS']['getAllEvents'][]=array('MyClass','myGetAllEvents');
//MyClass.php
publicfunctionmyGetAllEvents($arrEvents,$arrCalendars,$intStart,$intEnd,Module$objModule)
{
ksort($arrEvents);
return$arrEvents;
}
LehookgetAttributesFromDcavouspermetdemodifierlesattributsdechampsd'unformulaire.IlpasselesattributswidgetcourantsetunobjetDataContainerenargumentsetattenduntableaud'argumentscommevaleurderetour.Ilestdisponibleàpartirdelaversion3.2.RC1.
//config.php
$GLOBALS['TL_HOOKS']['getAttributesFromDca'][]=array('MyClass','myGetAttributesFromDca');
//MyClass.php
publicfunctionmyGetAttributesFromDca($arrAttributes,$objDca)
{
//Fairequelquechose
return$arrAttributes;
}
LehookgetContentElementestdéclenchélorsqu'unélémentdecontenuestrendu.Ilpassel'objetDatabaseetunechaîne-tampon(bufferstring)enargumentsetattendunechaîne-tamponcommevaleurderetour.Ilestdisponibleàpartirdelaversion2.9.0.
//config.php
$GLOBALS['TL_HOOKS']['getContentElement'][]=array('MyClass','myGetContentElement');
//MyClass.php
publicfunctionmyGetContentElement(Database_Result$objElement,$strBuffer)
{
return$strBuffer;
}
LehookgetImageestdéclenchéquandunevignetteestgénéréeetvouspermetd'ajouteruneroutinepersonnalisée.Ilpasselechemind'accès,lalargeuretlahauteur,lamode,lenomducacheetl'objetFileenargumentsetattendunchemind'accèscommevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['getImage'][]=array('MyClass','myGetImage');
//MyClass.php
publicfunctionmyGetImage($image,$width,$height,$mode,$strCacheName,$objFile)
{
getAttributesFromDca
getContentElement
getImage
ManuelpourContao3.2
97Contaohooks
returnMyImage::generateThumbnail($image,$widht,$height,$mode);
}
LehookgetPageIdFromUrlestdéclenchélorsdel'évaluationdespartiesd'uneURL.Ilpasselesfragmentsd'URLenargumentetattenduntableaudefragmentsd'uneURLenvaleurderetour.Ilestdisponibledepuislaversion2.5.4.
//config.php
$GLOBALS['TL_HOOKS']['getPageIdFromUrl'][]=array('MyClass','myGetPageIdFromUrl');
//MyClass.php
publicfunctionmyGetPageIdFromUrl($arrFragments)
{
returnarray_unique($arrFragments);
}
LehookgetPageLayoutestexécutéeavantd'initialiserlemodèlefrontoffice.Ilpasselemodèledelapage,l'objetModeletuneréférenceàl'objetPageenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion3.1.0.
//config.php
$GLOBALS['TL_HOOKS']['getPageLayout'][]=array('MyClass','mygetPageLayout');
//MyClass.php
publicfunctionmygetPageLayout(\PageModel$objPage,\LayoutModel$objLayout,\PageRegular$objPageRegular)
{
//Fairequelquechose
}
LehookgetSearchablePagesestdéclenchélorsdelareconstructiondel'indexderecherche.Ilpasseletableaudespagesetl'IDdelapageracineenargumentsetattenduntableaud'URLsabsolues(!)commevaleurderetour.Ilestdisponibleàpartirdelaversion2.2.0.
//config.php
$GLOBALS['TL_HOOKS']['getSearchablePages'][]=array('MyClass','myGetSearchablePages');
//MyClass.php
publicfunctionmyGetSearchablePages($arrPages,$intRoot)
{
returnarray_merge($arrPages,array('Additionalpages'));
}
LehookinitializeSystemestdéclenchélorsquelesystèmeestinitialisé.Ilestdisponibleàpartirdelaversion3.1.RC1.
//config.php
$GLOBALS['TL_HOOKS']['initializeSystem'][]=array('MyClass','myInitializeSystem');
//MyClass.php
publicfunctionmyInitializeSystem()
{
//Fairequelquechose
}
getPageIdFromUrl
getPageLayout
getSearchablePages
initializeSystem
ManuelpourContao3.2
98Contaohooks
LehookimportUserestdéclenchélorsqu'unnomd'utilisateurnepeutêtretrouvédanslabasededonnées.Ilpasselenomd'utilisateur,lemotdepasseetlenomdelatableenargumentsetattendunevaleurderetourdetypebooléen.Ilestdisponibleàpartirdelaversion2.7.RC1.
//config.php
$GLOBALS['TL_HOOKS']['importUser'][]=array('MyClass','myImportUser');
//MyClass.php
publicfunctionmyImportUser($strUsername,$strPassword,$strTable)
{
if($strTable=='tl_member')
{
//Importel'utilisateuràpartird'unserveurLDAP
if($this->importUserFromLdap($strUsername,$strPassword))
{
returntrue;
}
}
returnfalse;
}
LehookisVisibleElementestdéclenchélorsdelavérificationsiunélémentdoitêtrevisibledanslefrontofficeounon.Un"élément"danscecassignifiesoitunarticle,soitunmoduledefrontofficeousoitunélémentdecontenu.AladifférencedestroisautreshooksgetArticle,getFrontendModuleetgetContentElement,onpeutprévenirlacréationdubalisagecomplet.Lehookpasselemodèledel'instanceetl'étatdevisibilitécourantenargumentsetattendlenouvelétatdevisibilitécommevaleurderetour.Ilestdisponibleàpartirdelaversion3.2.RC1.
//config.php
$GLOBALS['TL_HOOKS']['isVisibleElement'][]=array('MyClass','myIsVisibleElement');
//MyClass.php
publicfunctionmyIsVisibleElement($objElement,$blnIsVisible)
{
if($objElementinstanceofContentElement)
{
//Vérifiezsicetélémentdecontenupeutêtreaffiché
if($this->myElementCanBeShownInFrontend($objElement))
{
returntrue;
}
}
//Sinon,nousnevoulonspaschangerl'étatdevisibilité
return$blnIsVisible;
}
LehooklistCommentsestdéclenchélorsquedescommentairessontlistésdanslebackoffice.Ilpassel'enregistrementcourantenargumentetattendunechaînedecaractèrescommevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC2.
//config.php
$GLOBALS['TL_HOOKS']['listComments'][]=array('MyClass','myListComments');
importUser
isVisibleElement
listComments
ManuelpourContao3.2
99Contaohooks
//MyClass.php
publicfunctionmyListComments($arrRow)
{
return'<ahref="contao/main.php?do=…">'.$arrRow['title'].'</a>';
}
LehookloadFormFieldestdéclenchélorsqu'unchampdeformulaireestchargé.Ilpassel'objetWidget,l'IDetlesdonnéesduformulaireenargumentsetattendunobjetWidgetcommevaleurderetour.Ilestdisponibleàpartirdelaversion2.5.0.
//config.php
$GLOBALS['TL_HOOKS']['loadFormField'][]=array('MyClass','myLoadFormField');
//MyClass.php
publicfunctionmyLoadFormField(Widget$objWidget,$strForm,$arrForm)
{
$objWidget->class='myclass';
return$objWidget;
}
LehookloadDataContainerestdéclenchélorsqu'unfichierDCAestchargé.Ilpasselenomdefichierenargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.2.
//config.php
$GLOBALS['TL_HOOKS']['loadDataContainer'][]=array('MyClass','myLoadDataContainer');
//MyClass.php
publicfunctionmyLoadDataContainer($strName)
{
//Fairequelquechose
}
LehookloadLanguageFileestdéclenchéauchargementd'unfichierdelangues.Ilpasselenomdufichieretlalangueenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['loadLanguageFile'][]=array('MyClass','myLoadLanguageFile');
//MyClass.php
publicfunctionmyLoadLanguageFile($strName,$strLanguage)
{
//Fairequelquechose
}
LehookoutputBackendTemplateestdéclenchélorsdel'affichageàl'écrand'unmodèledubackoffice.Ilpasselecontenuetlenomdumodèleenargumentsetattendlecontenudumodèlecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
loadFormField
loadDataContainer
loadLanguageFile
outputBackendTemplate
ManuelpourContao3.2
100Contaohooks
$GLOBALS['TL_HOOKS']['outputBackendTemplate'][]=array('MyClass','myOutputBackendTemplate');
//MyClass.php
publicfunctionmyOutputBackendTemplate($strContent,$strTemplate)
{
if($strTemplate=='be_main')
{
//Modificationdelasortie
}
return$strContent;
}
LehookoutputFrontendTemplateestdéclenchélorsdel'affichageàl'écrand'unmodèledufrontoffice.Ilpasselecontenuetlenomdumodèleenargumentsetattendlecontenudumodèlecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
$GLOBALS['TL_HOOKS']['outputFrontendTemplate'][]=array('MyClass','myOutputFrontendTemplate');
//MyClass.php
publicfunctionmyOutputFrontendTemplate($strContent,$strTemplate)
{
if($strTemplate=='fe_page')
{
//Modificationdelasortie
}
return$strContent;
}
LehookparseBackendTemplateestdéclenchélorsqu'unmodèledebackofficeestanalysé("parsé").Ilpasselecontenuetlenomdumodèleenargumentsetattendlecontenudumodèlecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
$GLOBALS['TL_HOOKS']['parseBackendTemplate'][]=array('MyClass','myParseBackendTemplate');
//MyClass.php
publicfunctionmyParseBackendTemplate($strContent,$strTemplate)
{
if($strTemplate=='be_main')
{
//Modificationdelasortie
}
return$strContent;
}
LehookparseFrontendTemplateestdéclenchélorsdel'analyse("parsing")d'unmodèledefrontoffice.Ilpasselecontenuetlenomdumodèleenargumentsetattendlecontenudumodèlecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
$GLOBALS['TL_HOOKS']['parseFrontendTemplate'][]=array('MyClass','myParseFrontendTemplate');
outputFrontendTemplate
parseBackendTemplate
parseFrontendTemplate
ManuelpourContao3.2
101Contaohooks
//MyClass.php
publicfunctionmyParseFrontendTemplate($strContent,$strTemplate)
{
if($strTemplate=='ce_text')
{
//Modificationdelasortie
}
return$strContent;
}
LehookparseTemplateestdéclenchéavantleprocessusd'analysed'unmodèle.IlreçoituneinstanceTemplate(quipeutêtreFrontendTemplateouBackendTemplate)enargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.10.0.
//config.php
$GLOBALS['TL_HOOKS']['parseTemplate'][]=array('MyClass','myParseTemplate');
//MyClass.php
publicfunctionmyParseTemplate($objTemplate)
{
if($objTemplate->getName()=='mod_html')
{
//Modifierl'objet
}
}
LehookpostDownloadestdéclenchéaprèsqu'unfichieraitététéléchargéavecl'élémenttéléchargement(s).Ilpasselenomdufichierenargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.4.6.
//config.php
$GLOBALS['TL_HOOKS']['postDownload'][]=array('MyClass','myPostDownload');
//MyClass.php
publicfunctionmyPostDownload($strFile)
{
//Fairequelquechose
}
LehookpostLoginestdéclenchéaprèsqu'unmembrefrontofficeouunutilisateurbackofficesesoitidentifié.Ilpassel'objetUserenargumentetn'attendpasdevaleurderetour.
//config.php
$GLOBALS['TL_HOOKS']['postLogin'][]=array('MyClass','myPostLogin');
//MyClass.php
publicfunctionmyPostLogin(User$objUser)
{
//Fairequelquechose
}
parseTemplate
postDownload
postLogin
postLogout
ManuelpourContao3.2
102Contaohooks
LehookpostLogoutestdéclenchéaprèsqu'unmembrefrontofficeouunutilisateurbackofficesesoitdéconnecté.Ilpassel'objetUserenargumentetn'attendpasdevaleurderetour.
//config.php
$GLOBALS['TL_HOOKS']['postLogout'][]=array('MyClass','myPostLogout');
//MyClass.php
publicfunctionmyPostLogout(User$objUser)
{
//Fairequelquechose
}
LehookpostUploadestdéclenchéaprèsqu'unutilisateuraitenvoyéunouplusieursfichiersdanslebackoffice.Ilpasseuntableaudenomsdefichiersenargumentetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.4.
//config.php
$GLOBALS['TL_HOOKS']['postUpload'][]=array('MyClass','myPostUpload');
//MyClass.php
publicfunctionmyPostUpload($arrFiles)
{
//Fairequelquechose
}
LehookprepareFormDataestdéclenchéaprèsqu'unformulaireaétésoumis.Ilpasseletableaudesdonnées,letableaudeslabelsetl'objetduformulairecommeargumentsetn'attendpasdevaleurderetour.Decettefaçon,lesdonnéespeuventêtremodifiéesouétendues,avantl'exécutiondesactionscommel'envoidemessagerieoulestockagededonnées.Ilestdisponibleàpartirdelaversion3.0.0.
//config.php
$GLOBALS['TL_HOOKS']['prepareFormData'][]=array('MyClass','myPrepareFormData');
//MyClass.php
publicfunctionmyPrepareFormData(&$arrSubmitted,$arrLabels,$objForm)
{
//Fairequelquechose
}
LehookprintArticleAsPdfestdéclenchélorsqu'unarticleestexportéauformatPDF.Ilpasseletextedel'articleetl'objetArticleenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['printArticleAsPdf'][]=array('MyClass','myPrintArticleAsPdf');
//MyClass.php
publicfunctionmyPrintArticleAsPdf($strArticle,Database_Result$objArticle)
{
//Fairequelquechose
exit;
}
postUpload
prepareFormData
printArticleAsPdf
ManuelpourContao3.2
103Contaohooks
LehookprocessFormDataestdéclenchéaprèslasoumissiond'unformulaire.Ilpasseletableaudesdonnéesduformulaire,letableauconteneurdedonnéesetletableaudefichiersenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.4.4.
//config.php
$GLOBALS['TL_HOOKS']['processFormData'][]=array('MyClass','myProcessFormData');
//MyClass.php
publicfunctionmyProcessFormData($arrPost,$arrForm,$arrFiles)
{
//Fairequelquechose
}
LehookremoveOldFeedsestdéclenchélorsdelasuppressiondesvieuxfichiersXMLdurépertoiredeContao.Ilnepassepasd'argumentsetattenduntableaudenomsdefichiersàconservercommevaleurderetour.Ilestdisponibleàpartirdelaversion2.5.8.
//config.php
$GLOBALS['TL_HOOKS']['removeOldFeeds'][]=array('MyClass','myRemoveOldFeeds');
//MyClass.php
publicfunctionmyRemoveOldFeeds()
{
returnarray('custom.xml');
}
LehookremoveRecipientestdéclenchéàlasuppressiond'undestinatairedenewsletter.Ilpassel'adressee-mailetlesIDdelalistedediffusionenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.8.RC1.
//config.php
$GLOBALS['TL_HOOKS']['removeRecipient'][]=array('MyClass','myRemoveRecipient');
//MyClass.php
publicfunctionmyRemoveRecipient($strEmail,$arrChannels)
{
//Fairequelquechose
}
LehookreplaceInsertTagsestdéclenchélorsqu'unebalised'insertioninconnueesttrouvée.Ilpasselabalised'insertionenargumentetattendlavaleurderemplacementoufalsecommevaleurderetour.Ilestdisponibleàpartirdelaversion2.6.0.
//config.php
$GLOBALS['TL_HOOKS']['replaceInsertTags'][]=array('MyClass','myReplaceInsertTags');
//MyClass.php
publicfunctionmyReplaceInsertTags($strTag)
{
if($strTag=='mytag')
{
processFormData
removeOldFeeds
removeRecipient
replaceInsertTags
ManuelpourContao3.2
104Contaohooks
return'mytagreplacement';
}
returnfalse;
}
LehookreviseTableestdéclenchélorsqueContaosupprimed'unetabledesenregistrementsorphelins.Ilpasselenomdelatablecourante,lesIDdetouslesnouveauxenregistrements,lenomdelatableparente,etlesnomsdetouteslestablesenfantsenargumentsetattendunbooléencommevaleurderetour(leretourdelavaleurtrueprovoquelerechargementdelapagecourante).Ilestdisponibleàpartirdelaversion2.6.4.
//config.php
$GLOBALS['TL_HOOKS']['reviseTable'][]=array('MyClass','myReviseTable');
//MyClass.php
publicfunctionmyReviseTable($table,$new_records,$parent_table,$child_tables)
{
//Fairequelquechose
}
LehooksetNewPasswordestdéclenchéaprèslasaisied'unnouveaumotdepasse.Ilpassel'objetUseretlemotdepassecryptéenargumentsetn'attendpasdevaleurderetour.Ilestdisponibleàpartirdelaversion2.2.3.
//config.php
$GLOBALS['TL_HOOKS']['setNewPassword'][]=array('MyClass','mySetNewPassword');
//MyClass.php
publicfunctionmySetNewPassword($objUser,$strPassword)
{
//Fairequelquechose
}
LehookvalidateFormFieldestdéclenchéàlasoumissiond'unchampdeformulaire.Ilpassel'objetWidgetetl'IDduformulaireenargumentsetattendunobjetWidgetcommevaleurderetour.Ilestdisponibleàpartirdelaversion2.5.0.
//config.php
$GLOBALS['TL_HOOKS']['validateFormField'][]=array('MyClass','myValidateFormField');
//MyClass.php
publicfunctionmyValidateFormField(Widget$objWidget,$intId)
{
if($objWidgetinstanceofFormPassword)
{
//Fairequelquechose
}
return$objWidget;
}
reviseTable
setNewPassword
validateFormField
ManuelpourContao3.2
105Contaohooks
Pourpubliervotrepropreextensiondansleréférentield'extensions,vousavezbesoind'uncomptedecontributeur.Unefoisquevousêtesconnecté,vouspouvezaccéderàl'interfacedudéveloppeurduréférentield'extensionsparl'intermédiairedesliens"Manageextensions"et"Managetranslations".
Référentield'extensions
ManuelpourContao3.2
106Référentield'extensions
Pourajouterunenouvelleextension,suivezlelien"Manageextensions"etcliquezsurlebouton"Addextension".Vousserezredirigéversunformulaireoùvouspouvezentrerlesdétailsdel'extension.Laboîtejauneau-dessuscontientdesinformationsimportantessurlesconventionsdenommage,quevousdevriezlireattentivement.
Lescatégoriessuivantessontactuellementdisponibles:
Catégorie Description
Application L'extensionestuneapplicationautonome.
Plugin L'extensionestunelibrairiePHPouJavaScript.
Theme L'extensionestunthèmepourlebackoffice.
Utility L'extensionestunprogrammeutilitairepourlebackoffice.
Widget L'extensionestunwidgetdeformulaire.
Translation L'extensionestunetraductiond'uneversiondeContao.
Bundle Unensembled'extensionsquipeuventêtreinstalléessimultanément.
Other L'extensionn'entredansaucunedescatégoriesprécédentes.
Ajoutd'uneextension
ManuelpourContao3.2
107Ajoutd'uneextension
Aprèsavoircrééuneextension,vouspouvezajouterunepremièrerelease.Chaquenouvelleversiond'uneextensionseraenregistréecommeunereleaseséparée.Ouvrezlesgestionnairedereleasesgrâceàl'icônedenavigationcorrespondanteetcliquezsurlebouton"Addrelease".
Lesnumérosdeversionsdansleréférentield'extensionssontformésdetroisblocsdechiffresquiindiquents'ils'agitd'uneversionmajeure,mineureoudemaintenance(parexemple1.0.0)ainsiqu'unstatutdedéveloppementsousformedetexte(parexemplebeta1).
Status Description
alpha1-alpha3 Indiquequ'ils'agitd'uneversionalpha.
beta1-beta3 Indiquequ'ils'agitd'uneversionbêta.
rc1-rc3 Indiquequ'ils'agitd'uneversionreleasecandidate.
stable Indiquequ'ils'agitd'uneversionstablepourdessystèmesenproduction.
Ajouterunerelease
ManuelpourContao3.2
108Ajouterunerelease
Vousdevezensuiteajouterdesfichiersàlanouvellerelease.Ouvrezlegestionnairedefichiers,etcliquezsurlebouton"Add/updatefiles".Vouspouveztéléverserdesfichiersindividuellementoudesarchives.zipcomplètes.Assurez-vousdechoisirlebonrépertoirecible,afinquelescheminsd'accèssoientcorrectsàl'issuedel'envoi.
Ajouterdesfichiers
ManuelpourContao3.2
109Ajouterdesfichiers
Lesfichierspeuventégalementêtreimportésàpartird'unréférentielGitHub,sivousaveztaguélareleaseetpousséletagversleréférentielcentraldeGitHub.
Entrezl'URLHTTPSduréférentielGitHubdanslesparamètres.
Vouspouvezégalementspécifierlenomdurépertoireracinedevotreréférentiel.Danscecas,lesfichiersetlesrépertoiresendehorsdecerépertoireracineserontignoréslorsdel'importation.
Sivoussélectionnezuntag,sesfichiersseronttéléchargésautomatiquementetserontalorsdisponiblescommelorsd'untéléversementmanuel.
Ajoutdefichiersàpartird'unréférentielGitHub
ManuelpourContao3.2
110Ajoutdefichiersàpartird'unréférentielGitHub
Avantdepouvoirpublieruneextension,vousdevezcréeraumoinsunetraduction.Ouvrezlegestionnairedetraductionsetcliquezsurlebouton"Addlanguage".Ilestrecommandédetoujourscréerunetraductionanglaise,carlesutilisateursdebackofficenevoientgénéralement,danslegestionnaired'extensions,quelesextensionsdisponiblesdansleurproprelangueouenanglais(languepardéfaut).
Lestraductionscomplétéespeuventêtrepubliéesencliquantsurl'icônedenavigationcorrespondante.
Ajouterdestraductions
ManuelpourContao3.2
111Ajouterdestraductions
Peut-êtrequel'unedevosextensionsutiliselesfonctionalitésd'uneautreextensioncommeparexemplelestâchesplanifiées(cronjobs).Pourfairefonctionnervotreextension,l'installationdel'extensioncronconstituedoncunpré-requis,généralementappelédépendance.Cesdépendancespeuventêtreenregistréesdansleréférentield'extensions,detellesortequelesmodulesnécessairessoientautomatiquementinstalléslorsquevousinstallezuneextensionparticulière.
Choisissezd'abordl'extensionquevoussouhaitezajouterentantquedépendanceetconfirmezvotrechoixencliquantsurlebouton"Continue".Puissélectionnezlaversionminimaleetmaximaledontlefonctionnementavecvotreextensionestreconnu.
Ajouterdesdépendances
ManuelpourContao3.2
112Ajouterdesdépendances
Aprèsavoircrééauminimumunerelease,téléverséauminimumunfichier,publiéauminimumunetraductionetajoutélesdépendancesnécessaires,vouspouvezpublierl'extensiongrâceàl'icônedenavigationcorrespondante.Notezquevousnepouvezplussupprimerl'extensionunefoisqu'elleestpubliée.Pourvérifiersitoutfonctionnecommeprévu,connectez-vousdanslebackofficeetfaitesuntestd'installationaveclegestionnaired'extensions.
Publieruneextension
ManuelpourContao3.2
113Publieruneextension
LesiteinternetdedéveloppementdeContao,quiestlabasedudéveloppementcontinudeContao,estdisponiblesurgithub.com/contao.Ilcontientparexempleunjournaldesmodificationspasséesetdesfuturesfonctionnalités(milestones)ainsiqu'unsystèmedeticketspoursignalerdesproblèmesoudemanderdenouvellesfonctionnalités.IlprendégalementenchargelanavigationdansleréférentielducodedeContao,oùvouspouvezvoirexactementquelsfichiersontchangés.
DéveloppementdeContao
ManuelpourContao3.2
114DéveloppementdeContao
Toutd'abord,veuilleznoterquevousdevezêtreconnectépourcréerdenouveauxtickets.L'inscriptionsurGitHubestgratuite.Ensuite,connectez-vousàvotrecompteetcliquezsur"NewIssue"danslemenuprincipal.
Toujoursdécrireleséventuelsproblèmesendétailetfaites-noussavoircommentlesreproduireàpartirdeladémonstrationenligneoudansnotreenvironnementdedéveloppement.Siunproblèmeseproduituniquementdansvotreinstallation,maispasdansladémonstrationenligne,veuillezs'ilvousplaîtconsulterleforums.
Créationd'unnouveauticket
ManuelpourContao3.2
115Créationd'unnouveauticket