Manuel pour Contao 3.2 - Contao Documentation

Post on 05-Jan-2017

225 views 0 download

transcript

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=name@example.com][/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'=>&amp;$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