Manuel pour Contao 3.2 - Contao Documentation
Transcript of Manuel pour Contao 3.2 - Contao Documentation
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