Page 1
1.1
1.2
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
1.3
1.3.1
1.3.2
1.3.3
1.4
1.4.1
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.5
1.5.1
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.5.10
1.6
1.6.1
1.6.2
1.6.3
Inhaltsverzeichnis
Inhaltsverzeichnis
Einleitung
Installation
Contaoinstallieren
DenSafeModeHackverwenden
ManuellesUpdate
LiveUpdateService
EineInstallationumziehen
DenLive-Serverkonfigurieren
Administrationsbereich
Datensätzeauflisten
Datensätzebearbeiten
Backend-Tastaturkürzel
Seitenverwalten
Komponenten
Themes
Stylesheets
Module
Seitenlayouts
Seitentypen
Inhalteverwalten
Artikel
Nachrichten
Termine
RSS-/Atom-Feed
Newsletter
Formulare
Kommentare
Templates
Markdown
Insert-Tags
Systemadministration
BenutzerundGruppen
Erweiterungen
Systemwartung
1
Page 3
HandbuchfürContao3.5DiesistdasoffizielleHandbuchfürAnwenderundEntwickler.DieneusteVersionistunterdocs.contao.orgerhältlich.
Licence
TheContaodocumentationislicensedunderaCreativeCommonsAttribution3.0Licenselicense(CCBY-NC-SA3.0).Ifyouwanttoredistributeamodifiedorunmodifiedversionofthedocumentation,youcandosounderthelicenseterms.
Ifyoucontributetothedocumentation,e.g.bycreatingpullrequests,yougrantusfullusagerightsofanycontentyoucreateorupload.Youalsoensurethatyourcontentdoesnotviolateanythird-partyrights.
Wearenotclaimingexclusiveusagerights,thereforeyouarefreetouseyourcontributedcontent(e.g.textsorimages)inanyotherprojectaswell.
Einleitung
3
Page 4
InstallationDiefolgendenAbschnitteerklärendieInstallationundAktualisierungvonContao.SielernenwiemandasContao-Installtoolverwendet,wiemaneineInstallationperFTPsynchronisiert,wiemandenSafeModeHackeinrichtetundwiemaneinenWebserverfürContaokonfiguriert.
Installation
4
Page 5
Contaoinstallieren
LadenSiesichzunächstdasaktuelleContao-ArchivherunterundentpackenSieesaufIhremlokalenRechner.VerschiebenSiedieDateienindashtdocs-VerzeichnisIhrerXAMPP-InstallationoderkopierenSiesiemiteinemFTP-Programm(z.B.WinSCP)aufIhrenServer.StellenSiesicherdassauchdieDatei.htaccess.defaulthochgeladenwirdundbenennenSiediesedanachauf.htaccessum.DerBasisordnerheißtwahrscheinlichhtdocs,httpdocs,html,public_htmloderwww.
WennSieSSH-ZugriffaufdenServerhaben,könnenSieContaoauchdirektüberdieKommandozeileherunterladen,beispielsweisemitcurl.JenachgewünschterVersionistdieURLanzupassen.
NeusteVersionvonContao(4.x):
curl-Lhttp://download.contao.org|tar-xzp
LTS-VersionvonContao(3.5):
curl-Lhttp://download.contao.org/lts|tar-xzp
EinebestimmteVersion(z.B.3.5.2):
curl-Lhttp://download.contao.org/3.5.2|tar-xzp
DasContao-Installtool
UmdasContao-Installtoolaufzurufen,hängenSieeinfach/contao/install.phpandieURLIhrerContao-Installationan.BeachtenSie,dassdasInstalltoolmiteinemPasswortgegenBruteForce-Attackengeschütztistundgesperrtwird,wenndreimalhintereinandereinfalschesPassworteingegebenwurde.UmdieseSperreaufzuheben,öffnenSiedieDateisystem/config/localconfig.phpineinemTexteditor,findenSiediefolgendeZeileundsetzenSiesieauf0.
$GLOBALS['TL_CONFIG']['installCount']=0;//HebtdieautomatischeSperreauf
Datenbankverbindungherstellen
MeldenSiesichanderAdministrationsoberflächeIhresServers(z.B."Plesk"oder"cPanel")anunderstellenSieeineneueDatenbankfürContao.GebenSiedieZugangsdatenimContao-InstalltooleinundbeachtenSiedieabweichendeSchreibweiseUTF8anstattUTF-8inMySQL!
Tabellenaktualisieren
ContaoprüftbeiderInstallationdieTabellenderDatenbankundgibteineListeempfohlenerÄnderungenaus,wenndiesenichtaktuellsind.LesenSiedieseEmpfehlungenaufmerksam,dennContaokenntnurseineeigenenTabellenundwirdversuchen,vermeintlichnichtbenötigteTabellenandererProgramme"aufzuräumen".BestätigenSiedieÄnderungendurchAnklickender"Datenbankaktualisieren"-Schaltfläche.
EinTemplateimportieren
EinTemplateisteinevorkonfigurierteWebseite,dieeinebeispielhafteSeitenstrukturundverschiedeneStylesheetszurFormatierungderContaoCore-Moduleund-Inhaltselementeenthält.
Contaoinstallieren
5
Page 6
SeitVersion3.2.11istdieBeispiel-WebseitenichtmehrimDownloadpaketenthalten.AbhängigvondereingesetztenVersionkanndieneueContaoOfficialDemooderdiealteMusicAcademyalsErweiterunginstalliertwerden.AufschlussüberKompatibilitätgibtdasErweiterungsverzeichnis.
VorgehenzurInstallationderDemo:
1. EinefrischeContaoInstallationmitAdmin-Accounterstellen2. AlsAdminimBackendanmelden3. PassendeErweiterungüberdasExtensionRepositoryhinzufügen4. AlsAdminvomBackendabmelden5. Installtoolerneutaufrufen
UmeinTemplatezuimportieren,wählenSiedenEintragausdemDrop-Down-MenüundklickenSieaufdie"Templateimportieren"-Schaltfläche.
Achtung
BeimImporteinesTemplateswerdenbestehendeDatenüberschrieben!
Administrator-Kontoerstellen
WennSiekeinTemplateimportierthaben,müssenSieeinAdministrator-Kontoerstellen,damitSiesichamContao-Backendanmeldenkönnen.DanachistderInstallationsprozessabgeschlossen.DerLinkuntenrechtsleitetSiezurBackend-Anmeldungweiter.WennSiedieBeispielwebseiteimportierthaben,könnenSiesichdortalsBenutzer"k.jones"mitdemPasswort"kevinjones"anmelden.
ContaoDemoinstallieren
SieheVorgehenzurInstallationderDemoimAbschnittEinTemplateimportierenweiteroben.
SuchmaschinenfreundlicheURLsverwenden
WennSieeinenApache-Webserverhabenundmod_rewriteverwendendürfen,könnenSieContaodazuveranlassen,suchmaschinenfreundlicheURLszugenerieren,diewiestatischeHTML-Seitenaussehen.DiedazubenötigtenRewrite-Regelnsindinder.htaccess.default-DateiimContao-Verzeichnisgespeichert.BenennenSiedieseDateiumin.htaccess,damitsievomApache-Servererkanntwird,undrufenSieanschließenddasModul"Einstellungen"imContao-Backendauf.WählenSiedieOption"URLsumschreiben"inderGruppe"Frontend-Einstellungen"ausundspeichernSieIhreÄnderungen.ContaogeneriertjetztstatischeURLswiez.B.home.htmlanstattindex.php?id=12.
Contaoinstallieren
6
Page 7
DenSafeModeHackverwenden
EventuellhabenSiebeimAufrufdesContao-InstalltoolsdieMitteilungerhalten,dassdielokaleKonfigurationsdateinichtbeschreibbarist.
Dateizugriffsrechte
DieBezeichnung"SafeModeHack"isteigentlichnichtkorrekt,dasieimpliziert,dassdasProblemdurchdenPHPsafe_modeverursachtwürde.TatsächlichwirdesjedochvonunzureichendenDateizugriffsrechtenverursachtundtrittauchbeideaktiviertemsafe_modeauf,dahersollteesrichtiger"FilePermissionHack"heißen.
PHPalsApache-ModulläuftnormalerweisealsBenutzerwwwrun,www-dataodernobody,wohingegendieDateien,dieSieperFTPhochgeladenhaben,IhremBenutzer(z.B.web4oderab5678)gehören.DerSerververweigertBenutzerngrundsätzlichdenZugriffauffremdeDateienundmachtauchfürdasPHP-SkriptContaokeineAusnahme.
FTPfürDateioperationenverwenden
UmdasRechteproblemzuumgehen,bautContaoeineFTP-VerbindungaufundlegtdieRessourcenunterdemFTP-Benutzeran.SiemüssendafürnurIhreFTP-ZugangsdatenimInstalltooleintragen.AchtenSiedabeibesondersaufdenkorrektenrelativenPfadvomFTP-BasisordnerzumContao-Verzeichnis(z.B.html/,public_html/oderhttpdocs/).
EinpaarwenigeVerzeichnissebenötigentrotzSafeModeHackSchreibrechte,weilPHPdirektaufsiezugreift:
assets/images
assets/images/*
system/logs
DenSafeModeHackverwenden
7
Page 8
system/tmp
DieSchreibrechte(CHMOD777)werdenvomInstalltoolautomatischgesetztundmüsseninderRegelnichtmanuellnachgearbeitetwerden.Fallsdiesdocheinmalnotwendigseinsollte,passenSiebittenurdiesedreiVerzeichnissean–auchwennSieineinemTutorialoderdemContao-Forumetwasanderesgelesenhabensollten!
DenSafeModeHackverwenden
8
Page 9
ManuellesUpdate
BeidermanuellenAktualisierungeinerContao-InstallationkönnenSieentwederdaskompletteContao-ArchivaufdenServerübertragen(Dateienersetzen)odernurdiegeändertenDateienhochladen(Dateiensynchronisieren).InjedemFallsolltenSievorherfolgendeDateienundOrdnersichern-nurfürdenFall,dasseinFehlerauftrittoderSiesieversehentlichüberschreiben:
files/*
system/config/dcaconfig.php
system/config/initconfig.php
system/config/langconfig.php
system/config/localconfig.php
system/config/pathconfig.php
templates/*
DiesesBackupumfasstIhrelokaleKonfiguration,eventuellangepassteTemplatessowiediehochgeladenenDateien.
Dateienersetzen
DieDateieneinerContao-Installationzuersetzenistrelativsimpel.ÜbertragenSieeinfachdasContao-ArchivaufIhrenServeroderentpackenSieesaufIhremlokalenRechnerundkopierenSiedieDateienanschließendmiteinemFTP-Programm(wirempfehlenWinSCP).DanachstellenSiedieDateienausdemBackupwiederherundentferneneventuelleÜberbleibselvorherigerContao-Versionen.
Achtung:WennSieThird-Party-Erweiterungeninstallierthaben,müssenSiedieseebenfallssichernundnachdemUpdatewiederherstellenoderdaraufachten,siegarnichterstzuüberschreiben.AndernfallsmüssendieseModuleneuinstalliertwerden,wasbeieinigenErweiterungenzuDatenverlustführenkann!
SolltederComposer-ClientimEinsatzsein,mussdasVerzeichnis/composerebenfallsgesichertwerden.
Dateiensynchronisieren
UmeineContao-Installationzusynchronisieren,könnenSieentwederdasUnixDiff-ProgrammodereinenFTP-Clientverwenden.Unix-UtilitieswerdennormalerweisenurvonServeradministratorenverwendet,daherwerdensiehiernichterklärt.UmDateienperFTPzusynchronisieren,öffnenSieWinSCPundverbindenSiesichmitdemServer.ErstellenSieeinBackupderobengenanntenDateienundnavigierenSiedannzumContao-VerzeichnisundklickenSieaufdie"Dateiensynchronisieren"-Schaltfläche.
ManuellesUpdate
9
Page 10
TreffenSieIhreAuswahlwieinderAbbildungundwählenSieunbedingtdieOption"Änderungsvorschau"aus,damitSiediezuaktualisierendenDateiennocheinmalprüfenkönnen.BestätigenSiedanachdieEinstellungenimVorschaufensterundachtenSiebesondersaufdiezulöschendenRessourcen!KlickenSie"OK",umdenSynchronisationsvorgangzustarten.
DieDatenbankaktualisieren
NachdemSiedieContao-Dateienaktualisierthaben,müssenSienochdieDatenbankaufdenneuestenStandbringen.DieseArbeitübernimmtdasContao-InstalltoolfürSie.GebenSieIhrPasswortein,scrollenSiebiszumDatenbank-AbschnittundbestätigenSiedieÄnderungen.
DeninternenCacheleeren
ManuellesUpdate
10
Page 11
ZumSchlussmussnochderinterneCache(DCA-undSprachdateien)geleertundneuangelegtwerden.GehenSieimBackendzur"Systemwartung"undwählenunter"Datenbereinigen"denPunkt"InternenCacheleeren"aus.BestätigenSiedieAktionmit"Datenbereinigen".
NunerscheintinderKopfzeilevomBackendeinHinweis,dassderinterneCachenochnichtaufgebautwurde.ErstellenSiedeninternenCacheindemSieinderKopfzeile"DenCacheaufbauen"anklicken.
ManuellesUpdate
11
Page 12
LiveUpdateService
DerContaoLiveUpdate-ServiceisteinkommerziellesContaoAdd-onvoniNetRobots,derFirmadesContao-GründersundKernentwicklers,LeoFeyer.EsermöglichtdieAktualisierungIhrerInstallationmitwenigenKlicksimBackend,ohneeinContao-ArchivherunterzuladenoderdieDateienmiteinemFTP-Programmzusynchronisieren.
EineContaoLiveUpdateIDbestellen
DasLiveUpdateumfasstfolgendeFunktionen:
BeliebigeUp-undDowngradesaufalleContao-VersionenAutomatischesBackupderDatenbankvordemUpdateIndividuellePrüfungundVervollständigungderContao-InstallationVergleichderangepasstenTemplatesmitdenOriginaldateien
Versionsauswahl
Template-Unterschiede
LiveUpdateService
12
Page 13
Fehlersuche
99%allerLiveUpdate-ProblemesindaufunzureichendeDatei-Zugriffsrechtezurückzuführen.ContaobenötigtSchreibrechte,umDateienundOrdnerzuverwalten,dahersolltenSiealserstesIhreServerkonfigurationprüfenundsicherstellen,dassderSafeModeHacksowieindiesemHandbuchbeschriebenkonfiguriertist!
Hinweis
WennSieProblemebeiderAktivierungIhrerLiveUpdateIDhaben,wendenSiesichbitteandeniNetRobots-Support.BeiProblemenmitdemSafeModeHackoderderBenutzungvonContao,wählenSiebitteeinepassendeSupport-OptionaufderSupport-Seite.
LiveUpdateService
13
Page 14
EineInstallationumziehen
DerUmzugeinerContao-InstallationvoneinemlokalenServeraufeinenLive-ServeristnichtvielandersalseineneueInstallation,außerdassSiedieDateienIhrerlokalenInstallationstattdenendesContao-ArchivssowieeinenSQL-DumpIhrerlokalenDatenbankverwenden.
Dateienkopieren
ÖffnenSieIhrFTP-Programm,verbindenSiesichmitdemZielserverundübertragenSiealleDateienIhrerlokalenContao-Installation.
Datenbankexportieren
EinMySQL-DumplässtsichameinfachstenmitderDatenbankverwaltung"phpMyAdmin"erstellen.AlsServeradministratorkönnenSienatürlichauchdasProgrammmysqldumpverwenden.MeldenSiesichan"phpMyAdmin"an,wählenSiediezuexportierendeDatenbankundklickenSieaufdie"Export"-SchaltflächeimoberenMenü.UmKompatibilitätsproblemezwischenverschiedenenMySQL-Versionenzuminimieren,isteswichtig,dieEinstellungenfürdenExportgemäßdesfolgendenScreenshotsanzupassen:
Datenbankimportieren
EineInstallationumziehen
14
Page 15
ÖffnenSie"phpMyAdmin"aufdemZielserverunderstellenSieeineneueDatenbankfürContao.JenachServerkonfigurationistdaseventuellnurüberdieVerwaltungsoberfläche(z.B."Plesk"oder"cPanel")möglich.WählenSiedieneueleereDatenbankausundklickenSieaufdie"Import"-SchaltflächeimoberenMenü.LadenSiedanndenSQL-DumpderlokalenDatenbankhochundstartenSiedenImport.
Datenbank-Konfigurationanpassen
AlsLetztesöffnenSiedasContao-InstalltoolderneuenInstallation(dasPasswortistdasselbewiefürIhrelokaleInstallation)undpassenwennnötigdieDatenbank-Zugangsdatenan.DanachkönnenSiesichwiegewohntmitIhremBenutzernamenimBackendanmelden.
EineInstallationumziehen
15
Page 16
DenLive-Serverkonfigurieren
IndiesemKapitelgehtesnichtdarum,denApache-DienstzuinstallierenoderPHPzukompilieren,wasaufeinemShared-Hosting-Serverohnehinnichtmöglichist.Stattdessenwirderklärt,wiemandieContao-SystemvoraussetzungenprüftundPHP5aktiviert.
Contao-Systemvoraussetzungen
ContaobenötigteinenWebserverwieApacheoderIISmitPHP-undMySQL-Support.
Software Version(min.)
PHP 5.4.0
MySQL 5.0.3
AußerdembenötigenSieverschiedenePHP-Erweiterungen,umvonallenFunktionenprofitierenzukönnen.
PHP-Erweiterungen für Pflicht
GDlib Bildbearbeitung Ja
DOM XML-Dateien Ja
SOAP ExtensionRepository Nein
Phar LiveUpdate Nein
mbstring internationaleZeichen Nein
mcrypt Verschlüsselung Nein
Hinweis
JenachinstalliertenExtensionskannesaußerdemnotwendigseindiePHPVariablemax_input_varszuerhöhen(bspw.auf2000oderhöher).AndernfallskönnenzulangeBackendFormularenichtkomplettabgeschicktwerden.
ContaowurdeerfolgreichinallenmodernenBrowsernwieFirefoxoderInternetExplorer(abVersion9)getestet.
DerContao-Check
LadenSiedenContao-CheckherunterundfindenSieheraus,obIhrServerdieContao-Systemvoraussetzungenerfüllt.DerContao-Checkprüft,obSiedasExtensionRepositoryunddasLiveUpdatenutzenkönnenundobSiedenSafeModeHackbenötigenodernicht.JenachSystemkonfigurationkönnenSiemitHilfedesWeb-InstallerseineneueContao-InstallationaufsetzenodereinebestehendeInstallationprüfen.
DenLive-Serverkonfigurieren
16
Page 17
EntpackenSiedieZip-Datei,übertragenSiedenOrdnercheckinIhrContao-VerzeichnisundöffnenSieihnineinemBrowser.
DenContao-Checkherunterladen|ZumProjektaufGitHub
Provider-spezifischeEinstellungen
EsgibteinpaarwenigegroßeInternetServiceProvider,diespezielleEinstellungenfürdenBetriebvonContaoerfordern.ZumGlücksindsienurdieAusnahmevonderRegel.DieProvider-spezifischeEinstellungenfindenSieimContao-Forum.SorgenfreiesContao-HostingerhaltenSiebeidenContaoHosting-Partnern.
DenLive-Serverkonfigurieren
17
Page 18
AdministrationsbereichUmdenAdministrationsbereich(Backend)aufzurufen,hängenSieeinfach/contaoandieURLIhrerContao-Webseitean.
Hinweis
DieKontensindgegenBruteForce-Attackengeschütztundwerdenfür5Minutengesperrt,wenndreimalhintereinandereinfalschesPassworteingegebenwurde.BeachtenSiedassdieGroß-/KleinschreibungbeiBenutzernameundPasswortberücksichtigtwird.
Administrationsbereich
18
Page 19
Datensätzeauflisten
DieContaoCore-EngineunterstütztdreiAnsichten:eineeinfacheListe("listview"),einenachderübergeordnetenTabellegruppierteListe("parentview")undeinehierarchischeListe("treeview").DiesedreiAnsichtenwerdenzurDarstellungderDatenimBackendverwendet.
ListView
Der"ListView"listetdieDatensätzeeinerTabelleineinerbestimmtenReihenfolgeauf,normalerweisegruppiertnachAnfangsbuchstabe.
ParentView
Der"ParentView"listetdieDatensätzeeinerKindtabelleauf,diesichaufeinenDatensatzderElterntabellebeziehen.Eltern-Kind-RelationenkommenhäufigvorinContao,z.B.beiArtikelnundInhaltselementen,ArchivenundNachrichtenoderStylesheetsundFormatdefinitionen.
Datensätzeauflisten
19
Page 20
TreeView
Der"TreeView"listetDatensätzeauf,dieineinerhierarchischenStrukturorganisiertsind.ContaounterstütztsowohlhierarchischeBeziehungeninnerhalbeinerTabelle(z.B.Seitenstruktur)alsauchKindtabellen,diesichaufhierarchischeElterntabellenbeziehen(z.B.ArtikelundSeiten).
Datensätzeauflisten
20
Page 21
Datensortierenundfiltern
ContaobietetmehrereMöglichkeiten,Auflistungenzusortierenundzufiltern,damitSieauchbeimehrerentausendDatensätzendenÜberblickbehalten.VieleListenkönnenanhandeinesodermehrererFeldereingeschränktwerden.DiemeistenbietenzusätzlicheineVolltext-Suchean,diesogarreguläreAusdrückeunterstützt.UmdieLadezeitzuoptimieren,zeigtContaoimmernur30Datensätzeaufeinmalan.
Datensätzeauflisten
21
Page 22
Datensätzeauflisten
22
Page 23
Datensätzebearbeiten
ContaobietetetlicheprofessionelleFunktionen,diedasBearbeitenvonDatensoeinfachundkomfortabelwiemöglichmachen.SiekönnenzufrüherenVersionenzurückgehen,gelöschteDatensätzewiederherstellen,ElementeviaClipboardverschiebenundsogarmehrereDatensätzeaufeinmalbearbeiten.DiemeistendieserFunktionensindüberdieNavigationssymboleaufrufbar.
IconsimListView
Der"ListView"alseinfachsteAnsichtbietetnurdieviergrundlegendenBefehle:bearbeiten,duplizieren,löschenundInfo.
IconsimParentView
Der"ParentView"bietetzweizusätzlicheIcons,umdieReihenfolgederDatensätzezukontrollieren.DieReihenfolgekannauchmittelsDrag&Dropgeändertwerden.Dazueinfachaufdas"Drag&Drop"IconklickenundandieneuePositionbewegen.
Datensätzebearbeiten
23
Page 24
IconsimTreeView
Im"TreeView"werdenweitereIconsbenötigt,umdiehierarchischeStrukturabbildenzukönnen.NebendemKopiereneineseinzelnenDatensatzeskönnenauchganzeTeilbäumedupliziertundentwederineinenodernacheinemanderenDatensatzeingefügtwerden.
Datensätzebearbeiten
24
Page 25
FrühereVersionenwiederherstellen
ContaoerstelltbeijedemSpeichervorgangautomatischeineneueVersioneinesDatensatzes.SobaldesmehralseineVersiongibt,erscheintoberhalbdesFormularseinDrop-Down-Menü,mitdemSiezueinerfrüherenVersionenzurückgehenkönnen.
DurchKlickaufdasIconrechtsdesDrop-Down-MenüswerdendieUnterschiedezwischenderaktuellenunddergewähltenVersionangezeigt.
Datensätzebearbeiten
25
Page 26
MehrereDatensätzebearbeiten
DieMöglichkeit,mehrereDatensätzeaufeinmalzubearbeiten,hebtContaoklarvondenMitbewerbernab.WechselnSiedenBearbeitungsmodusdurchAnklickender"Mehrerebearbeiten"-SchaltflächeundwählenSiedanndiezubearbeitendenDatensätzeundFelderaus.
Datensätzebearbeiten
26
Page 27
Datensätzebearbeiten
27
Page 28
Datensätzebearbeiten
28
Page 29
Backend-Tastaturkürzel
UmdenWorkflowbeiderArbeitmitContaozubeschleunigen,gibtesimBackendetlicheTastaturkürzel,mitdenensichbestimmteBefehledirektaufrufenlassen.ZumBeispielkönnenSiedieSchaltfläche"Speichern"amEndeeinesEingabeformularsalternativzurBedienungmitderMausauchmitdemTastaturkürzel[Alt]+[s]ansteuern.
AllgemeineTastaturkürzel
Tastaturkürzel Schaltfläche Erklärung
[Alt]+[h] Startseite ZurStartseitedesBackend(Home).
[Alt]+[q] Abmelden BeendetdieaktuelleBackend-Sitzung(Quit).
[Alt]+[t] Nachoben SpringtzumAnfangderSeite(Top).
[Alt]+[b] Zurück ZurückzurvorherigenSeite(Back).
[Alt]+[n] NeuerDatensatz LegteinenneuenDatensatzan(New).
[Alt]+[e] Mehrerebearbeiten Wechseltinden"mehrerebearbeiten"-Modus(Editmultiple).
[Alt]+[f] Frontend-Vorschau ÖffnetdieFrontend-VorschauineinemneuenFenster(Frontendpreview).
TastaturkürzelimBearbeitungsmodus
Tastaturkürzel Schaltfläche Erklärung
[Alt]+[s] Speichern SpeichertdasaktuelleEingabeformular(Save).
[Alt]+[c]
Speichernundschließen
SpeichertundschließtdasaktuelleEingabeformular(Saveandclose).SiegelangenzurückzurvorherigenSeite.
[Alt]+[g]Speichernundzurück
SpeichertundschließtdasaktuelleEingabeformular(Saveandgoback).SiegelangenzurückzurübergeordnetenSeite,z.B.voneinemInhaltselementdirektzurArtikelübersicht.
[Alt]+[e]
Speichernundbearbeiten
SpeichertdasaktuelleEingabeformular(Saveandedit)undwechseltzurAnsichtderKind-Datensätze,z.B.beimAnlegenvonStylesheets.
[Alt]+[n]Speichernundneu
SpeichertdasaktuelleEingabeformularundlegteinenneuenDatensatzan(Saveandnew).
TastaturkürzelimModus"mehrerebearbeiten"
Tastaturkürzel Schaltfläche Erklärung
[Alt]+[d] Mehrerelöschen LöschtalleausgewähltenDatensätzeimModus»mehrerebearbeiten«(Delete).
[Alt]+[x] Mehrereverschieben VerschiebtalleausgewähltenDatensätzeimModus»mehrerebearbeiten«.
[Alt]+[c] Mehrerekopieren KopiertalleausgewähltenDatensätzeimModus»mehrerebearbeiten«(Copy).
[Alt]+[v] Mehrereüberschreiben ÜberschreibtalleausgewähltenDatensätzeimModus»mehrerebearbeiten«.
Backend-Tastaturkürzel
29
Page 30
[Shift] MehrereCheckboxenauswählen
WähltmehrereCheckboxenauswenndieShift-Tastegedrücktwird.
DiebeschriebenenTastaturkürzelfunktionierenindieserFormnurunterWindows.Mac-Nutzermüssenanstattder[Alt]-Taste[Ctrl]+[⌥Opt]inVerbindungmitdemjeweiligenKürzelverwenden.ZudemweichtFirefoxunterWindowsleidervomgewohntenStandardab,dortmüssenSie[Alt]+[Umsch]inVerbindungmitdemgewünschtenKürzeldrücken.
Backend-Tastaturkürzel
30
Page 31
SeitenverwaltenDiefolgendenKapitelerklären,wiemanSeiteninContaoverwaltet.DaContaoeinSeiten-basiertesCMSist,sindSeitenunddieSeitenstrukturdiezentralenElementeIhrerWebseiteundjederInhalt,dernichtmiteinerSeiteassoziiertist,erscheintauchniemalsimFrontend.
Seitenverwalten
31
Page 32
Komponenten
DasZusammenspielvonSeiten,Artikeln,InhaltselementenundModulenzuverstehen,istderSchlüsselzumErlernenvonContao.Wiebereitserwähnt,istdieSeitenstrukturdaszentraleElementderWebseite.BesucherrufengrundsätzlichimmerSeitenaufundniemalseinzelneArtikel,wieesineinemNode-basiertenContentManagementSystemderFallist.
DasDiagrammverdeutlicht,dassArtikelundLayoutsdiebeidenwichtigstenKomponenteneinerSeitesind.WährendArtikeldieInhalteeinerSeitespeichern,legtdasSeitenlayoutfest,wiedieseaufderWebseitedargestelltwerden.LayoutsinContaosindnatürlichCSS-basiertundverwendenkeineLayout-Tabellen.AufdenfolgendenSeitenwirderklärt,wiemanStylesheetsundFrontend-Moduleanlegt,siezueinemLayoutkombiniertundsieanschließendeinerneuerstelltenSeitezuweist.
Komponenten
32
Page 33
Themes
DasDesigneinerWebseitebestehtnormalerweiseausStylesheets,Frontendmodulen,Seitenlayouts,DateienundTemplates,dieSieimContao-Backendverwaltenkönnen.DerTheme-ManagerändertdiesenAnsatznicht,erfügtlediglicheineMöglichkeithinzu,dieRessourcenzuexportierenundwiederzuimportieren(Video-Einführungansehen).
ThemesversusFrontend-Templates
DerHauptunterschiedzwischenThemesundFrontend-Templatesist,dasseinFrontend-TemplateeinevollständigvorkonfigurierteBeispielwebseitemiteinerbeispielhaftenSeitenstruktur,Artikeln,InhaltselementenundsogarBenutzernundGruppenenthält.EinThemeenthältdagegennurdaseigentlicheDesignderWebseiteundkanndeswegenimportiertwerden,ohnedassbestehendeDatenverlorengehen.
Theme-Bestandteile
EinThemeisteineGruppevonStylesheets,Frontend-ModulenundSeitenlayouts,diealleinderDatenbankgespeichertsindundautomatischvomThemeExportererkanntwerden.SiewerdendieseElementeindennächstenAbschnittennäherkennenlernen.EinThemebeinhaltetdarüberhinausmeistensauchBilderundandereDateienausdemFiles-VerzeichnissowieoptionalangepassteTemplatesausdemTemplates-Verzeichnis.DieseRessourcensindjedochnichtautomatischmitdemThemeverlinktundmüssendeswegenindenTheme-Einstellungenhinzugefügtwerden,damitsiebeimTheme-Exportberücksichtigtwerden.
Themes
33
Page 34
Theme-Exportund-Import
UmeinThemezuexportieren,klickenSieeinfachaufdieExport-SchaltflächeundspeichernSiedie.cto-DateiaufIhremlokalenComputer.Obwohl.ctoeineproprietäreDateiendungfürContao-Themesist,handeltessichdabeieigentlichumZIP-Archive,dieSiemitjedemProgrammentpackenkönnen,das.zip-Dateienunterstützt.UmeinThemezureimportieren,übertragenSiedie.cto-DateiaufIhrenWebserver,öffnenSiedenTheme-ManagerimContao-BackendundklickenSieauf"Themeimportieren".SiekönnenmehrereThemesaufeinmalimportieren.NachdemderImportabgeschlossenist,könnenSiedasSeitenlayoutdesneuenThemesinderSeitenstrukturzuweisen.
Themes
34
Page 35
Stylesheets
BarrierefreieWebseitensolltenimmermitCSSformatiertwerden,daherenthältContaoein"Stylesheets"-Modul,mitdemSieFormatdefinitionenbequemimBackendverwaltenkönnen.UmdieverschiedenenContao-Elementeund-ModuleineinemStylesheetzureferenzieren,müssenSiederenKlassennamenkennen.Inhaltselement-Klassenbeginnenmit"ce_"(z.B."ce_text")undModul-Klassenmit"mod_"(z.B."mod_search").FallsSiesichnichtsichersind,sehenSieeinfachimQuelltextderWebseitenach.
JedesStylesheetkannaufeinenodermehrereMedientypenund/odereinebestimmteVersiondesInternetExplorersbeschränktwerden,fallsSieeinendervielendarinenthaltenenFehlergesondertbehebenmüssen.AchtenSiedabeiaufdieReihenfolgederFormatdefinitionen,dafrühereAnweisungenvonspäterenüberschriebenwerdenkönnen.
/*ZuerstdengenerellenAbstandsetzen*/
.mod_search{
margin:24px;
}
/*DanachdiespezielleIE7-Anweisung*/
*:first-child+html.mod_search{
margin:18px;
}
Stylesheets
35
Page 36
WäredieReihenfolgeumgekehrt,würdederallgemeineAbstanddenIE-spezifischenWertüberschreiben.
Stylesheets
36
Page 37
Module
MitHilfevonFrontend-ModulenkönnenSieIhreWebseiteumfastjedeerdenklicheFunktionalitäterweitern.DerContao-CoreenthältModule,umverschiedeneNavigationsmodulezuerstellen,dieBenutzerregistrierungund-anmeldungzuermöglichen,dieWebseitezudurchsuchen,RSS-Feedszuimportierenundvielesmehr.ModulekönnenimBackendunter"Themes"->"Frontend-Module"konfiguriertwerden.
Modul CSS-Klasse Beschreibung
Navigationsmenü mod_navigation ErzeugteinNavigationsmenüausderSeitenstruktur.
IndividuelleNavigation mod_customnav ErzeugteinindividuellesNavigationsmenü.
Navigationspfad mod_breadcrumb ErzeugteinenNavigationspfad.
Quicknavigation mod_quicknav ErzeugteinDrop-Down-MenüausderSeitenstruktur.
Quicklink mod_quicklink ErzeugteinindividuellesDrop-Down-Menü.
Buchnavigation mod_booknav ErzeugteinBuchnavigationsmenü.
Artikelnavigation mod_article_nav ErzeugteinSeitenumbruch-MenüzurArtikelnavigation.
Sitemap mod_sitemap ErzeugteineListeallerSeitenausderSeitenstruktur.
Login-Formular mod_login ErzeugteinAnmeldeformular(Login).
AutomatischerLogout - MeldeteinenBenutzerautomatischab(Logout).
PersönlicheDaten mod_personalData ErzeugteinFormularzurBearbeitungderBenutzerdaten.
Registrierung mod_registration ErzeugteinFormularzurBenutzerregistrierung.
Passwortändern mod_changePassword ErzeugteinFormularzurPasswort-Änderung.
Passwortvergessen mod_password ErzeugteinFormularzurPasswort-Anforderung.
Kontoschließen mod_closeAccount ErzeugteinFormularzurLöschungeinesBenutzerkontos.
Nachrichtenliste mod_newslist FügtderSeiteeineNachrichtenlistehinzu.
Nachrichtenleser mod_newsreader StellteineneinzelnenNachrichtenbeitragdar.
Nachrichtenarchiv mod_newsarchive FügtderSeiteeinNachrichtenarchivhinzu.
Nachrichtenarchiv-Menü mod_newsmenu ErzeugteinMenüzurNavigationdesNachrichtenarchivs.
Kalender mod_calendar FügtderSeiteeinenKalenderhinzu.
Eventleser mod_eventreader StellteineinzelnesEventdar.
Eventliste mod_eventlist ListetalleEventseinesbestimmtenZeitraumsauf.
Eventliste-Menü mod_eventmenu ErzeugteinMenüzurNavigationderEventliste.
Abonnieren mod_subscribe ErzeugteinFormularzumAbonnierenvonVerteilern.
Kündigen mod_unsubscribe ErzeugteinFormularzumKündigenvonAbonnements.
Newsletterliste mod_nl_list FügtderSeiteeineNewsletterlistehinzu.
Newsletterleser mod_nl_reader StellteineneinzelnenNewsletterdar.
FAQ-Liste mod_faqlist FügtderSeiteeineListehäufiggestellterFragenhinzu.
FAQ-Leser mod_faqreader StelltdieAntwortzueinerhäufiggestelltenFragedar.
Module
37
Page 38
FAQ-Seite mod_faqpage GibtdieFAQ-ListeunddenFAQ-LeseraufderselbenSeiteaus.
Formular mod_form FügtderSeiteeinFormularhinzu.
Suchmaschine mod_search FügtderSeiteeinSuchfomularhinzu.
Kommentare mod_comments Kommentarebzw.Gästebuch-Einträgeverwalten.
Auflistung mod_listing ListetdieDateneinerbeliebigenTabelleauf.
Flash-Film mod_flash BindeteinenFlash-FilmineineSeiteein.
Artikelliste mod_article_list ErzeugteineListeallerArtikeleinerSpalte.
Zufallsbild mod_random_image FügtderSeiteeinzufälligausgewähltesBildhinzu.
EigenerHTML-Code - ErlaubtdasHinzufügenvoneigenemHTML-Code.
RSS-Reader mod_rss_reader FügtderSeiteeinenRSS-Feedhinzu.
Zugriffsschutz
JedesFrontend-Modulkanngeschütztwerden,sodassesnurGästeoderBenutzereinerbestimmtenMitgliedergruppesehenkönnen.
Module
38
Page 39
Seitenlayouts
SeitenlayoutsdefinierendengrundsätzlichenAufbaueinerSeite,wiez.B.dieAnzahlderSpaltenoderdieGesamtbreite,undsielegenfest,welcheFrontend-ModuleinwelcherSpalteangezeigtwerden.SieermöglichenzudemdasEinbindenvonStylesheetsundRSS-bzw.Atom-FeedssowiedasEinfügeneinerGoogleAnalyticsIDoderbeliebigemJavaScript-Code,derfürdieSteuerunginteraktiverElementeundPluginsbenötigtwird.DasContaoCSS-FrameworkteiltdasBrowserfensterautomatischinmehrereLayoutbereicheauf.
Dasimpliziert,dassSiezumZeitpunktderErstellungeinesSeitenlayoutsbereitsdiebenötigtenStylesheetsundFrondend-Moduleangelegthabenmüssen.DaherwirdfolgendeReihenfolgebeimAnlegenvonRessourcenempfohlen:
ErstellenderbenötigtenStylesheetsErstellenderbenötigtenFrontend-ModuleOptionaleErstellungvonNachrichtenarchivenoderKalendernErstelleneinesneuenSeitenlayoutsundEinbindungderKomponenten
Seitenlayouts
39
Page 41
Seitentypen
DerTypeinerSeitelegtfest,obsiestatischeInhalteausgibt,zueineranderenSeiteweiterleitetoderdenStartpunkteinerWebseiteinnerhalbderSeitenstrukturmarkiert.Contaounterstütztfolgende6Seitentypen:
Seitentyp Beschreibung
ReguläreSeite EinereguläreSeiteenthältArtikelundInhaltselemente.SieverhältsichwieeinestatischeHTML-Seite.
ExterneWeiterleitung DieseSeiteleitetBesucherautomatischzueinerexternenWebseiteum(entsprichteinemHyperlink).
InterneWeiterleitung DieseSeiteleitetBesucherautomatischzueineranderenSeiteinnerhalbderSeitenstrukturum.
StartpunkteinerWebseite
DieseSeitekennzeichnetdenStartpunkteinerneuenWebseiteinnerhalbderSeitenstruktur.
403Zugriffverweigert
BeimAufrufeinergeschütztenSeiteohneZugriffsrechtewirdstattdessendie403-Fehlerseitegeladen.DieseSeitemussdirektunterhalbdesStartpunkteseinerWebseiteangelegtwerden.
404Seitenichtgefunden
BeimAufrufeinernichtvorhandenenSeitewirdstattdessendie404-Fehlerseitegeladen.DieseSeitemussdirektunterhalbdesStartpunkteseinerWebseiteangelegtwerden.
Startseite
WenndasFrontendmiteinerleerenRequestURLgeöffnetwird(z.B.http://www.example.org/),zeigtContaodieersteveröffentlichteSeiteimjeweiligenStartpunkt.DerAliasdieserSeitesollteaufindexgesetztwerden.NurdannwirddieerzeugteURLfürdieseSeiteaucheinleererRequestsein.
AbVersion3.5.18wirdaußerdemautomatischaufdieStartseiteweitergeleitet,fallsderenAliasnichtindexlautet.DieURLinkludiertdanndenAliasunddasglobaldefinierteSuffix(z.B.http://www.example.org/home.html).
Multidomain-Betrieb
ContaounterstütztmehrereWebseiteninnerhalbderSeitenstrukturundleitetBesucherjenachDNS-undSpracheinstellungenautomatischaufeinenbestimmtenStartpunkteinerWebseiteweiter.Nehmenwiran,SiebetreibeneinezweisprachigeFirmenwebseiteunter"www.example.com"undeinekleineprivateWebseiteunterderDomain"www.personal.example.org".SiebenötigendafürdreiStartpunkte:
Typ DNS Sprachenkürzel Fallback-Sprache
DeutscheFirmenseite keine de nein
EnglischeFirmenseite keine en ja
PrivateWebseite www.personal.example.org de ja
DiefolgendeTabellezeigt,zuwelcherSeiteeinBesucherabhängigvonderDomainundseinerBrowserspracheweitergeleitetwird.
Domain Browsersprache Weiterleitung
www.example.com Englisch EnglischeFirmenseite
www.example.com Deutsch DeutscheFirmenseite
Seitentypen
41
Page 42
www.example.com Spanisch EnglischeFirmenseite
www.personal.example.org egal PersönlicheWebseite
BeachtenSie,dassdiepersönlicheWebseiteohnedieOption"Sprachen-Fallback"nurfürdeutscheBenutzersichtbarwäre!
Zugriffsrechte
Zugriffsrechtelegenfest,wasBackend-BenutzermiteinerSeiteundihrenArtikelnmachendürfen.SiehabennichtsmitdemZugriffsschutzzutun,derdenZugriffaufeineSeiteimFrontendlimitiert!ÄhnlichdemUnix-RechtesystemgibtesdreiZugriffsebenen:
ZugriffalsBesitzereinerSeiteZugriffalsMitgliedderGruppeeinerSeiteZugriffalsunprivilegierterBenutzer
FürjedeZugriffsebenekönnengesonderteRechtevergebenwerden.StandardmäßigdarfderBesitzereinerSeitesowohldieSeiteselbst,alsauchdiedamitverbundenenArtikelbearbeiten.EinMitgliedderGruppeeinerSeitedarfhingegennurdieArtikelbearbeitenundeinunprivilegierterBenutzerhatüberhauptkeineSchreibrechte.
Seitentypen
42
Page 43
InhalteverwaltenDiefolgendenKapitelerklären,wiemanInhalteinContaoverwaltet.DerContao-CorebeinhaltetbereitsdiegrundlegendenInhaltstypenwiez.B.Artikel,Nachrichten,Events,NewsletteroderFormatdefinitionen.WeitereInhaltstypenwieBanner,Tickets,ProdukteoderEmpfehlungensindüberdasExtensionRepositoryverfügbar.InhaltekönnenimBackendmitdenentsprechendenModulenangelegtwerden.
Inhalteverwalten
43
Page 44
Artikel
ArtikelsindContainerfürInhaltselemente.DasGruppierenzusammengehörigerInhaltselementemachteseinfach,siealleaufeinmalzuverschieben,zuveröffentlichen,zukopierenoderzuexportieren,anstattjedeseinzelneElementzubearbeiten.JederArtikelistmiteinerbestimmtenSeiteundeinemLayoutbereichassoziiertundhatdahereinefestePositioninnerhalbderSeitenstrukturundaufderWebseite.
Inhaltselemente
InhaltselementesindeineinfacherundintuitiverWeg,umInhaltezuerstellen.AnstattnurdenRichTextEditorzuverwenden,bietetContaofürjedenInhaltstypwiez.B.Texte,Listen,Tabellen,Hyperlinks,BilderoderDownloadseineigenesElement.NachfolgendfindenSieeineÜbersichtüberdieimContao-CoreenthaltenenInhaltselemente.
Name CSS-Klasse Beschreibung
Überschrift ce_headline ErzeugteineÜberschrift(h1-h6).
Text ce_text ErzeugteinenRichText,dermitTinyMCEformatiertwerdenkann.
HTML - ErlaubtdasHinzufügenvoneigenemHTML-Code.
Aufzählung ce_list ErzeugteinegeordneteoderungeordneteListe.
Tabelle ce_table ErzeugteineoptionalsortierbareTabelle.
Code ce_code GibtformatiertenProgrammcodeaufdemBildschirmaus.
Markdown ce_markdown ErzeugtHTML-CodeauseinemMarkdown-Text.
Akkordeon(Einzelelement) ce_accordion ErzeugteineinzelnesAkkordeon-Element(MitMooTools).
Akkordeon(UmschlagAnfang) ce_accordionStart ErzeugtdenöffnendenTeildesAkkordeon-Umschlags.
Akkordeon(UmschlagEnde) - ErzeugtdenschließendenTeildesAkkordeon-Umschlags.
Content-Slider(UmschlagAnfang) ce_sliderStart ErzeugtdenöffnendenTeildesSlider-Umschlags.
Content-Slider(UmschlagEnde) - ErzeugtdenschließendenTeildesSlider-Umschlags.
Hyperlink ce_hyperlink ErzeugteinenVerweisaufeineandereWebseite.
Top-Link ce_toplink ErzeugteinenLinkzumSeitenanfang.
Bild ce_image ErzeugteineinzelnesBild.
Galerie ce_gallery ErzeugteinelightboxBildergalerie.
Video/Audio ce_player ErzeugteinenVideo-bzw.Audio-Player.
YouTube ce_youtube FügteinYouTube-Videoein.
Download ce_download ErzeugteinenLinkzumDownloadeinerDatei.
Downloads ce_downloads ErzeugtmehrereLinkszumDownloadvonDateien.
Artikel - FügteinenanderenArtikelein.
Inhaltselement (parentclass) FügteinanderesInhaltselementein.
Formular ce_form FügteinFormularein.
Modul (parentclass) FügteinFrontend-Modulein.
Artikel
44
Page 45
Artikelteaser ce_teaser ZeigtdenTeasertexteinesArtikelsan.
Kommentare ce_comments FügteinKommentar-Formularein.
Zugriffsschutz
JedesInhaltselementkanngeschütztwerden,sodassesnurGästeoderBenutzereinerbestimmtenMitgliedergruppesehenkönnen.
Flash-Inhalte
Flash-InhaltesindspezielleInhalte,dienichtalsArtikelaufderWebseiteausgegeben,sondernmittelsloadVars()ineinendynamischenFlash-Filmgeladenwerden.FügenSiefolgendesSkriptinIhrenFlash-Filmein,umdieKommunikationmitContaozuermöglichen:
TextField.prototype._loadArticle=function(flashID){
tf=this;
//HTML-Modeaktivieren
tf.html=true;
tf.htmlText="";
//LoadVars-Objektinstantiieren
lv=newLoadVars();
lv["flashID"]=flashID;
lv.sendAndLoad(URL+"flash.php",lv,"POST");
lv.onLoad=function(success){
if(success){
tf.htmlText=lv["content"];
}
}
}
//DenFlash-Inhalt"myArticle"indasTextfeld"myTextBox"laden
myTextBox._loadArticle("myArticle");
EinStylesheetimportieren
DasfolgendeActionScripterlaubtdasImportiereneinesStylesheetszurFormatierungdesTextfeldes:
Artikel
45
Page 46
TextField.prototype._addCSS=function(style_sheet){
tf=this;
tf.styleSheet=null;
//StyleSheet-Objektinstantiieren
st=newTextField.StyleSheet();
st.load(URL+style_sheet);
st.onLoad=function(success){
if(success){
tf.styleSheet=st;
}
}
}
//DasStylesheet"basic.css"zumTextfeld"myTextBox"hinzufügen
myTextBox._addCSS("basic.css");
BeachtenSie,dassFlashnureinenkleinenTeilderHTML-TagsunterstütztundmancheFormatierungendahernichtangezeigtwerdenkönnen.
Artikel
46
Page 47
Nachrichten
DieNews/Blog-ErweiterungermöglichtdieVerwaltungvonNachrichtenbzw.Blog-EinträgenundderenDarstellungimFrontend.ImGegensatzzuArtikeln,diemiteinerbestimmtenSeiteassoziiertsind,werdenNachrichteninArchivenorganisiertundkönnensoeinfachgruppiert,kategorisiertoderalsRSS-bzw.Atom-Feedexportiertwerden.
Nachrichtenarchive
ArchivewerdenzurGruppierungund/oderKategorisierungvonNachrichtenverwendet.JedesArchivkannsichaufeinebestimmteSpracheodereinbestimmtesThemabeziehen.
Frontend-Module
MitdenFrontend-ModulenderNews/Blog-ErweiterungkönnenNachrichtenaufderWebseitedargestelltwerden.ModulekönnenimBackendunter"Layout"->"Module"konfiguriertwerdenundmüssenanschließendineinemArtikeloderSeitenlayouteingebundenwerden.
Modul CSS-Klasse Beschreibung
Nachrichtenliste mod_newslist FügtderSeiteeineNachrichtenlistehinzu.
Nachrichtenleser mod_newsreader StellteineneinzelnenNachrichtenbeitragdar.
Nachrichtenarchiv mod_newsarchive FügtderSeiteeinNachrichtenarchivhinzu.
Nachrichtenarchiv-Menü mod_newsmenu ErzeugteinMenüzurNavigationdesNachrichtenarchivs.
Permalinks
JedeNachrichthateineeindeutigeURL(Permalink),diezurReferenzierungdesBeitragsverwendetwerdenkann:
http://www.example.com/news/items/james-wilson-returns.html
DieobengenannteURLfordertdenBeitrag"james-wilson-returns"aufderSeite"news"an.Denkensiedaran,dassContaoeinSeiten-basiertesCMSist;gäbeesdieSeite"news"nichtoderenthieltesienichtdasModulNachrichtenleser,würdederBeitragauchnichtangezeigt.
Nachrichten
47
Page 48
Termine
DieKalender-ErweiterungermöglichtdieVerwaltungvonTerminenundderenDarstellungalsKalenderoderEventlisteimFrontend.ImGegensatzzuArtikeln,diemiteinerbestimmtenSeiteassoziiertsind,werdenTermineinKalendernorganisiertundkönnensoeinfachgruppiert,kategorisiertoderalsRSS-bzw.Atom-Feedexportiertwerden.
Kalender
KalenderwerdenzurGruppierungund/oderKategorisierungvonTerminenverwendet.JederKalenderkannsichaufeinebestimmteSpracheodereinbestimmtesThemabeziehen.
Frontend-Module
MitdenFrontend-ModulenderKalender-ErweiterungkönnenTerminebzw.EventsaufderWebseitedargestelltwerden.ModulekönnenimBackendunter"Layout"->"Module"konfiguriertwerdenundmüssenanschließendineinemArtikeloderSeitenlayouteingebundenwerden.
Modul CSS-Klasse Beschreibung
Kalender mod_calendar FügtderSeiteeinenKalenderhinzu.
Eventleser mod_eventreader StellteineneinzelnenEventdar.
Eventliste mod_eventlist ListetalleEventseinesbestimmtenZeitraumsauf.
Eventliste-Menü mod_eventmenu ErzeugteinMenüzurNavigationderEventliste.
Permalinks
JederTerminhateineeindeutigeURL(Permalink),diezurReferenzierungdesEventsverwendetwerdenkann:
http://www.example.com/event-reader/events/final-exams.html
DieobengenannteURLfordertdenEvent"final-exams"aufderSeite"events"an.Denkensiedaran,dassContaoeinSeiten-basiertesCMSist;gäbeesdieSeite"events"nichtoderenthieltesienichtdasModulEventleser,würdederBeitragauchnichtangezeigt.
Termine
48
Page 49
RSS-/Atom-Feed
DieseFunktionistfürNewsArchiveundKalenderverfügbar.HiereinBeispielderKalender-Liste.
Einstellungen
EinodermehrereKalenderkönnengruppiertundalsRSS-bzw.Atom-Feedausgegebenwerden.GenaugleichfunktioniertesbeiNewsArchiven.Hierkannauchgewähltwerden,obnurderTeaseroderderkompletteArtikeldesEventsbzw.derNewsausgegebenwerdensoll.
RSS-/Atom-Feed
49
Page 50
XMLDateien
DieXMLDateienwerdenautomatischgeneriertundimshareVerzeichnisIhrerContaoInstallationabgelegt.IndiesemBeispiel:share/events.xml.
RSS-/Atom-Feed
50
Page 51
Newsletter
DieNewsletter-ErweiterungermöglichtdasVersendenvonNewslettern,dieVerwaltungvonAbonnementssowiedieoptionaleAusgabeversendeterNachrichtenimFrontend.ImGegensatzzuArtikeln,diemiteinerbestimmtenSeiteassoziiertsind,werdenNewsletterinVerteilernorganisiertundkönnensoeinfachgruppiertoderkategorisiertwerden.
Abonnenten
Newsletter-AbonnementswerdennormalerweiseautomatischüberdieentsprechendenFrontend-Moduleverwaltet,ohnedassSieindenProzesseingreifenmüssten.AusdatenschutzrechtlichenGründenmussdasAbonniereneinesVerteilersmittelsDoubleOpt-InerfolgenundeswirdnurdieE-Mail-AdressedesAbonnementsgespeichert.
FallsSiebereitseinenVerteilerhaben,könnenSiedieAbonnentenauseinerCSV-DateiinContaoimportieren.
Newsletterpersonalisieren
InsofernSieNewsletteranregistrierteMitgliederverschicken,könnenSiediesemitHilfedersogenannten"SimpleTokens"personalisieren.SimpleTokensfunktionierenähnlichwieInsert-TagsundkönnensowohlimHTML-alsauchimText-InhalteinesNewslettersverwendetwerden.
Sehrgeehrte(r)##firstname####lastname##,
bitteprüfenundaktualisierenSieIhreDaten:
Anschrift:##street##
PLZ/Ort:##postal####city##
Telefon:##phone##
E-Mail:##email##
IhrAdministrator
ImGegensatzzuInsert-TagskönnenSiemitSimpleTokensabernichtnuraufdieDatenderMitgliedertabelletl_memberzugreifen,sondernaucheinfacheIf-Else-AbfragenrealisierenundsobeispielsweisedieAnredepräzisieren.
{ifgender=="male"}
SehrgeehrterHerr##lastname##,
Newsletter
51
Page 52
{elseifgender=="female"}
SehrgeehrteFrau##lastname##,
{else}
SehrgeehrteDamenundHerren,
{endif}
[InhaltdesNewsletters]
{ifphone==""}
BitteaktualisierenSieIhreDatenundgebenSieIhreTelefonnummeran.
{endif}
IhrAdministrator
Newsletterversenden
SpeziellaufShared-Hosting-ServerngibtesnormalerweiseLimitsfürdiemaximaleSkriptlaufzeitund/oderdieAnzahlderE-Mails,dieproMinuteversendetwerdendürfen.Contaoversucht,diesebeidenProblemezuumgehen,indemderVersendungsprozessinmehrerenTeilschrittenmiteinerbestimmtenWartezeitdazwischenerfolgtundsodieAnzahlderE-MailsproMinutekontrolliertwerdenkann.
Frontend-Module
MitdenFrontend-ModulenderNewsletter-ErweiterungkönnenAbonnementsverwaltetundoptionalNewsletterangezeigtwerden.ModulekönnenimBackendunter"Layout"->"Module"konfiguriertwerdenundmüssenanschließendineinemArtikeloderSeitenlayouteingebundenwerden.
Modul CSS-Klasse Beschreibung
Newsletter
52
Page 53
Abonnieren mod_subscribe ErzeugteinFormularzumAbonnierenvonVerteilern.
Kündigen mod_unsubscribe ErzeugteinFormularzumKündigenvonAbonnements.
Newsletterliste mod_nl_list FügtderSeiteeineNewsletterlistehinzu.
Newsletterleser mod_nl_reader StellteineneinzelnenNewsletterdar.
Permalinks
JederNewsletterhateineeindeutigeURL(Permalink),diezurReferenzierungderNachrichtverwendetwerdenkann:
http://www.example.com/newsletters/items/james-wilson-returns.html
DieobigeURLfordertdenNewsletter"james-wilson-returns"aufderSeite"newsletters"an.Denkensiedaran,dassContaoeinSeiten-basiertesCMSist;gäbeesdieSeite"newsletters"nichtoderenthieltesienichtdasModulNewsletterleser,würdederBeitragauchnichtangezeigt.
Newsletter
53
Page 54
Formulare
MitdemFormulargeneratorlassensichinteraktiveFormulareerstellen,dieperE-MailverschicktoderinderDatenbankgespeichertwerdenkönnen.HochgeladeneDateienwerdenalsAnhangversendetoderaufdemServergespeichert.FolgendeDatenformatewerdenunterstützt:
Format Beschreibung
Rohdaten DieFormulardatenwerdenalseinfacheTextnachrichtmiteinerZeileproFeldversendet.
XMLfile DieFormulardatenwerdenderE-MailalsXML-Dateiangefügt.
CSVfile DieFormulardatenwerdenderE-MailalsCSV-Dateiangefügt.
E-mail IgnoriertalleFelderaußer"email","subject","message"und"cc"(CarbonCopy)undverschicktdieDatenalswärensiemiteinemE-Mail-Programmversendetworden.Datei-Uploadssinderlaubt.
Formularfelder
ÄhnlichwiebeiInhaltselementen,enthältContaoeineigenesElementfürjedesFormularfeld,wiez.B.Textfelder,Auswahlmenüs,Dateiuploads,versteckteFelderoderSchaltflächen.FolgendeFormularfeldersindimContao-Coreenthalten:
Feld CSS-Klasse Beschreibung
Überschrift headline EinindividuellesFeldzumEinfügeneinerBereichsüberschrift.
Erklärung explanation EinindividuellesFeldzumEinfügeneinesErklärungstexts.
HTML - EinindividuellesFeldzumEinfügenvonHTML-Code.
Fieldset - EinContainerfürFormularfeldermiteineroptionalenLegende.
Textfeld text EineinzeiligesEingabefeldfüreinenkurzenodermittellangenText.
Passwortfeld password EineinzeiligesEingabefeldfüreinPasswort.ContaofügtautomatischeinBestätigungsfeldhinzu.
Textarea textarea EinmehrzeiligesEingabefeldfüreinenmittellangenoderlangenText.
Select-Menü select/multiselect Einein-odermehrzeiligesDrop-Down-Menü.
Radio-Button-Menü radio EineListemehrererOptionen,vondeneneineausgewähltwerdenkann.
Checkbox-Menü checkbox EineListemehrererOptionen,vondenenbeliebigvieleausgewähltwerden
können.
Datei-Upload upload EineinzeiligesEingabefeldzurÜbertragunglokalerDateienaufdenServer.
VerstecktesFeld - EineinzeiligesEingabefeld,dasimFormularnichtsichtbarist.
Sicherheitsfrage captcha EineeinfacheRechenaufgabezurPrüfungobdasFormularvoneinemMenschenabgesendetwurde(CAPTCHA).
Absendefeld submit EineAbsende-SchaltflächezurVersendungdesFormulars.
Frontend-Modul
MitdemFrontend-ModuledesFormulargeneratorskönnenFormulareangezeigtwerden.ModulekönnenimBackendunter"Layout"->"Module"konfiguriertwerdenundmüssenanschließendineinemArtikeloderSeitenlayouteingebundenwerden.
Formulare
54
Page 55
Modul CSS-Klasse Beschreibung
Formular mod_form FügteinFormularaufderSeiteein.
Inhaltselement
DasInhaltselementbietetdieselbenFunktionenwiedasModul,lässtsichaberdirektimArtikeleinbindenundkonfigurieren.DerFormulargeneratorstellteinInhaltselementzurVerfügung:
Inhaltselement CSS-Klasse Beschreibung
Formular ce_form FügteinFormularein.
Formulare
55
Page 56
Kommentare
KommentaresindeineweitereFormvonInhalt,welcherüberdasBackendverwaltetwerdenkann.KommentarekönneninKalendernundNews-Archivenaktiviertwerden.
Frontend-Modul
MitdemFrontend-ModulederKommentar-ErweiterungkönnenKommentareein-undausgegebenwerden.ModulekönnenimBackendunter"Layout"->"Module"konfiguriertwerdenundmüssenanschließendineinemArtikeloderSeitenlayouteingebundenwerden.
Modul CSS-Klasse Beschreibung
Kommentare mod_comments BietetKommentareodereineGästebuch-Funktion.
Inhaltselement
DasInhaltselementbietetdieselbenFunktionenwiedasModul,lässtsichaberdirektimArtikeleinbindenundkonfigurieren.DieKommentar-ErweiterungstellteinInhaltselementzurVerfügung:
Inhaltselement CSS-Klasse Beschreibung
Kommentare ce_comments FügtdasKommentar-FormularaufderSeiteein.
BBCode
DerBesucherkannausserdemdieBBCodeSpracheverwenden.ContaoverstehtfolgendeTags:
BBCode Beschreibung
[b][/b] DerenthalteneTextwirdfettdargestellt.
[i][/i] DerenthalteneTextwirdkursivdargestellt.
[u][/u] DerenthalteneTextwirdunterstrichen.
[img][/img] ErsetzendasTagdurcheinBild(Bild-PfadzwischendenTags).
[code][/code] DerenthalteneTextwirdineinerSchriftmitfesterLaufweitedargestellt.
[color=#ff0000][/color] DerenthalteneTextwirdinderentsprechendenFarbedargestellt.
[quote][/quote] StelltdenentsprechendenTextalsZitatdar.
[quote=John]Hallo[/quote] StelltdenentsprechendenTextalsZitateinesAutorsdar.
[url][/url] DieenthalteneURLwirdalsLinkdargestellt.
[url=http://][/url] DerenthalteneTextwirdmitderentsprechendenURLverlinkt.
[email][/email] DieenthalteneE-Mail-AdressewirdalsLinkdargestellt.
[[email protected] ][/email] DerenthalteneTextwirdmitderE-Mail-Adresseverknüpft.
Kommentare
56
Page 58
Templates
EinTemplateenthältmeistHTMLundPHPcode.EswirdzurAusgabevonInhalteneinesModulsoderInhaltelementsetc.verwendet.BeispielsweisegibtdasTemplatenews_full.html5einevollständigeNachrichtaus,währenddasTemplatenews_short.html5nureinenTeildavonanzeigt.
TemplatesbefindensichdirektindendazugehörenModulen.Dasnews_full.html5Templatebefindetsichbeispielsweiseinsystem/modules/news/templates/news.
FallsdieseDateidirektindiesemOrdnerbearbeitetwird,gehendieÄnderungenbeieinemnächstenUpdatevonContaoverloren.Umdieszuvermeiden,TemplateskönnenimBackendbearbeitetwerden.DabeiwirddieDateikopiertumÄnderungenwährendeinemUpdatenichtzuverlieren.
UnterdemMenüpunktTemplateskönnendieDateienbearbeitetundinOrdnernabgelegtwerden.OrdnermüssenwieunterTheme-BestandteilebeschriebeneinemThemezugewiesensein.
EinTemplategehörtzueinemModul,einemInhaltselement,einemFormularoderanderenKomponenten.SiewerdenzureinfacherenErkennungdeshalbmeistmiteinemPräfixversehen.Beispielsweisedeutetj_aufjQueryodernl_aufeinNewsletter-Template.
Template-Vererbung
Template-Vererbungerlaubt,einTemplatebasierendaufeinemanderenTemplateaufzubauen.Diesbedeutet,einTemplate(Kind)fügtInhaltineinzweitesTemplate(Eltern)ein.
DamitInhalteineinemEltern-Templateangepasstwerdenkönnen,musssichderInhaltinnerhalbeinesblock-Elementsbefinden.
EinBlockistwiefolgtaufgebaut:
<?php$this->block('name_des_blocks');?>
//Block-Inhalt
<?php$this->endblock();?>
DasfolgendeBeispielzeigteinTemplatebeiwelchemderhead-TagalseigenerBlockdefiniertwurde.
Templatefe_page.html5:
<!DOCTYPEhtml>
<html>
<head>
<?php$this->block('head');?>
<title><?phpecho$this->title;?></title>
<linkrel="stylesheet"href="style.css">
<?php$this->endblock();?>
</head>
<body>
...
</body>
Templates
58
Page 59
</html>
ImKindtemplatefe_custom.htmlwirdzusätzlichzumbisherigenInhaltnocheinCSSstylesheetindasübergeordneteTemplateeingefügt.
Templatefe_custom.html5:
<?php$this->extend('fe_page');?>
<?php$this->block('head');?>
<?php$this->parent();?>
<linkrel="stylesheet"href="style_2.css">
<?php$this->endblock();?>
DieFunktionextend()definiertdasübergeordneteTemplate.DieFunktionparent()übernimmtdenInhaltdesübergeordnetenTemplate.
DieAusgabedesfe_custom.html5Templatesiehtdanachsoaus:
<!DOCTYPEhtml>
<html>
<head>
<title>Atitle</title>
<linkrel="stylesheet"href="style.css">
<linkrel="stylesheet"href="style_2.css">
</head>
<body>
...
</body>
</html>
Templatesmischen
MitHilfederinsert()-FunktionkanneinTemplateineinanderesTemplateeinfügtwerden.
<?php$this->insert('template_name');?>
Dieinsert()-FunktionakzeptiertausserdemauchdieÜbergabevonzusätzlichenVariablenalszweitenParameter.
<?php$this->insert('template_name',array('key'=>'value'));?>
//ÜbergibtalleVariablenausdemaktuellenTemplate
<?php$this->insert('template_name',$this->getData());?>
ImfolgendenBeispielfügenwirdenInhaltdesTemplatesimage-copyright.html5indasTemplateimage.html5ein.
DasTemplateimage.html5enthältlediglicheinenimg-Tagunddieinsert()-Funktion.
Templateimage.html5:
<imgsrc="<?phpecho$this->src;?>"alt="<?phpecho$this->alt;?>"/>
<?php$this->insert('image-copyright',array('name'=>'DonnaEvans','license'=>'CreativeCommons'));?>
Dasimage-copyright.html5Templateenthälteinensmall-Tagwelchernachdemimg-Tagimimage.html5Templateeingefügtwerdensoll.DieVariabelnnameundlicensewerdendurchdieParameterderinsert()-Funktionersetzt.
Templateimage-copyright.html5:
Templates
59
Page 60
<small>Fotografiertvon<?phpecho$this->name;?>,lizenziertals<?phpecho$this->license;?></small>
DieAusgabedesimage.html5siehtdanachfolgendermassenaus:
<imgsrc="files/images/house.jpg"alt="EinkleinesHausinEngland"/>
<small>FotografiertvonDonnaEvans,lizenziertalsCreativeCommons</small>
Templates
60
Page 61
Markdown
MarkdownisteineeinfacheAuszeichnungssprache,dieeserlaubt,TextmittelseinfachemSyntaxzuformatieren.MarkdownhatdenVorteil,einfachlesbarzuseinundautomatischinHTMLkonvertiertwerdenzukönnen.
NachfolgendeinigeBeispielefürdieMarkdown-Syntax:
Syntax
Paragrafen
AbsätzewerdendurcheineLeerzeileerstellt:
ErsterAbsatz
ZweiterAbsatz
Überschriften
EssindsechsEbenenfürÜberschriftenmöglich:
#Überschrift1
##Überschrift2
###Überschrift3
####Überschrift4
#####Überschrift5
######Überschrift6
Wichtig
UmwichtigenTextzumarkieren:
**strong**
__strong__
WirdzufolgendemHTML-Codekonvertiert:<strong>strong</strong>
Hervorhebung
UmTexthervorzuheben:
*emphasize*
_emphasize_
WirdzufolgendemHTML-Codekonvertiert:<em>emphasize</em>
Code
UmeinenTextalsComputercodezumarkieren:
`monospacedfont`
Markdown
61
Page 62
WirdzufolgendemHTML-Codekonvertiert:<code>monospacedfont</code>
Code-Blöcke
UmeinenganzenAbsatzinCodezukonvertieren,denTextmitvierLeerzeicheneinrücken.
SchriftmitfesterLaufweite...
...übermehrereZeilen
Zitat-Block
ZitatblöckekönnendurcheinerechtespitzeKlammeramBeginnderZeileerstelltwerden.
>DiesisteinZitat.
Zeilenumbruch
DurchzweiodermehrLeerzeichenamEndeeinerZeilewirdeinUmbrucherzeugt:
ContaoisteinbarrierefreiesOpenSource
contentmanagementsystem.
Links
EsgibtzweiMöglichkeitenfürLinks:inlineundalsReferenz.
EinInline-Linksiehtwiefolgtaus:
[Contao](https://contao.org/de)
oderoptionalauchmiteinemTitel:
[Contao](https://contao.org/de"OffizielleContao-Webseite")
EinReferenz-Linksiehtwiefolgtaus:
[OffizielleContao-Webseite][1]
[1]:https://contao.org/de
DieReferenzkannanbeliebigerStelleimDokumentplatziertwerden.
Bilder
WiefürLinksgibtesauchfürBilderzweiSyntax-Möglichkeiten.
EinInline-Bildsiehtwiefolgtaus:
![Alttext](/pfad/zum/bild.jpg"OptionalerTitel")
EinBildimReferenz-StilwirddurchfolgendeSyntaxerreicht:
![AlternativerText][id]
Markdown
62
Page 63
[id]:/pfad/zum/bild.jpg"OptionalerTitel"
DieReferenzkannanbeliebigerStelleimDokumentplatziertwerden.
Aufzählungslisten
UnsortierteListen
UnsortierteListenverwendenSternzeichenoderTrennstriche:
*Listeneintrag
*Listeneintrag
*VerschachtelterListeneintrag
*VerschachtelterListeneintrag
*Listeneintrag
-Listeneintrag
-Listeneintrag
-Listeneintrag
SortierteListen
SortierteListenverwendenZahlen:
1.Listeneintrag
2.Listeneintrag
3.Listeneintrag
ErweiterterSyntax
NichtalleHTML-ElementwiebeispielsweiseTabellenoderFußnotenkönnenmitnormalemMarkdownbeschriebenwerden.AusdiesemGrundgibteseinProjektfür"MarkdownExtra"umdieSyntaxzuerweitern.
NachfolgendeinigeBeispielefürdieerweiterteSyntax:
Tabellen
EineTabellekannwiefolgterstelltwerden:
ErsteKopfzeile|ZweiteKopfzeile|DritteKopfzeile
---------------|----------------|----------------
Zelleninhalt|Zelleninhalt|Zelleninhalt
Zelleninhalt|Zelleninhalt|Zelleninhalt
DieTextausrichtungkanndurchDoppelpunktegesteuertwerden:
ErsteKopfzeile|ZweiteKopfzeile|DritteKopfzeile
:--------------|:--------------:|---------------:
Linksbündig|Zentriert|Rechtsbündig
Linksbündig|Zentriert|Rechtsbündig
Fußnoten
Fußnotenwerdenwiefolgterstellt:
DiesisteinTextmitFußnote.[^1]
Markdown
63
Page 64
[^1]:UnddiesistdieFußnote.
DieFußnoten-DefinitionkannanbeliebigerStelleimDokumentplatziertwerden.
WeitereInformationen
FüreinekompletteDokumentationzuMarkdown,besuchenSiedieoffizielleWebseiteunterfolgendemLink.
FüreinekompletteDokumentationzuMarkdownExtra,besuchenSiedieoffizielleWebseiteunterfolgendemLink.
Markdown
64
Page 65
Insert-Tags
Insert-TagssindPlatzhalter,diebeiderAusgabeeinerSeitedurchbestimmteInhalteersetztwerden.SokannbeispielsweisedasaktuelleDatumangezeigtodereinBenutzermitseinemNamenangesprochenwerden.Insert-TagskönnenfastüberallinContaoverwendetwerden.
Link-Elemente
MitdenfolgendenInsert-TagskönnenSeitenundArtikelanhandihrerIDoderihresAliasverlinktwerden.
Insert-Tag Beschreibung
{{link::*}}DiesesTagwirdmiteinemLinkzueinerinternenSeiteersetzt(ersetzenSie*mitderIDoderdemAlias).
{{link::back}}
DiesesTagwirdmiteinemLinkzurderzuletztbesuchteSeiteersetzt.Kannauchals{{link_open::back}},{{link_url::back}}und{{link_title::back}}verwendetwerden.
{{link::login}}DiesesTagwirdmiteinemLinkzurAnmeldeseitedesaktuellenFrontend-Benutzers(fallsvorhanden)ersetzt.
{{link_open::*}}WirdmitdemöffnendenTageinesLinkszueinerinternenSeiteersetzt:{{link_open::12}}Hierklicken{{link_close}}.
{{link_url::*}}DiesesTagwirdmitderURLeinerinternenSeiteersetzt:<ahref="{{link_url::12}}">Hierklicken</a>.
{{link_title::*}}DiesesTagwirdmitdemTiteleinerinternenSeiteersetzt:<atitle="{{link_title::12}}">Hierklicken</a>.
{{link_name::*}} DiesesTagwirdmitdemNameneinerinternenSeiteersetzt:<a>{{link_name::12}}</a>.
{{link_close}}WirdmitdemschließendenTageinesLinkszueinerinternenSeiteersetzt:{{link_open::12}}Hierklicken{{link_close}}.
{{article::*}}DiesesTagwirdmiteinemLinkzueinemArtikelersetzt(ersetzenSie*mitderIDoderdemAlias).
{{article_open::*}}WirdmitdemöffnendenTageinesLinkszueinemArtikelersetzt:{{article_open::12}}Hierklicken{{link_close}}.
{{article_url::*}}DiesesTagwirdmitderURLeinesArtikelsersetzt:<ahref="{{article_url::12}}">Hierklicken</a>.
{{article_title::*}}DiesesTagwirdmitdemTiteleinesArtikelsersetzt:<atitle="{{article_title::12}}">Hierklicken</a>.
{{news::*}}DiesesTagwirdmiteinemLinkzueinerNachrichtersetzt(ersetzenSie*mitderIDoderdemAlias).
{{news_open::*}}WirdmitdemöffnendenTageinesLinkszueinerNachrichtersetzt:{{news_open::12}}Hierklicken{{link_close}}.
{{news_url::*}}DiesesTagwirdmitderURLeinerNachrichtersetzt:<ahref="{{news_url::12}}">Hierklicken</a>.
{{news_title::*}}
DiesesTagwirdmitdemTiteleinerNachrichtersetzt:<atitle="{{news_title::12}}">Hierklicken</a>.
{{news_feed::*}} DieserTagwirdmitderURLzueinemNews-Feedersetzen(ersetzenSie*mitderID).
{{event::*}}DiesesTagwirdmiteinemLinkzueinemEventersetzt(ersetzenSie*mitderIDoderdemAlias).
Insert-Tags
65
Page 66
{{event_open::*}} WirdmitdemöffnendenTageinesLinkszueinemEventersetzt:{{event_open::12}}Hierklicken{{link_close}}.
{{event_url::*}}DiesesTagwirdmitderURLeinesEventsersetzt:<ahref="{{event_url::12}}">Hierklicken</a>.
{{event_title::*}}DiesesTagwirdmitdemTiteleinesEventsersetzt:<atitle="{{event_title::12}}">Hierklicken</a>.
{{calendar_feed::*}} DieserTagwirdmitderURLzueinemKalender-Feedersetzen(ersetzenSie*mitderID).
{{faq::*}}DiesesTagwirdmiteinemLinkzueinerhäufiggestelltenFrageersetzt(ersetzenSie*mitderIDoderdemAlias).
{{faq_open::*}}WirdmitdemöffnendenTageinesLinkszueinerFrageersetzt:{{faq_open::12}}Hierklicken{{link_close}}.
{{faq_url::*}}DiesesTagwirdmitderURLeinerFrageersetzt:<ahref="{{faq_url::12}}">Hierklicken</a>.
{{faq_title::*}}DiesesTagwirdmitdemTiteleinerFrageersetzt:<atitle="{{faq_title::12}}">Hierklicken</a>.
Mitgliedereigenschaften
MitdenfolgendenInsert-TagskönnenEigenschaftendesangemeldetenMitglieds(Frontend-Benutzer)ausgebebenwerden.
Insert-Tag Beschreibung
{{user::*}}DiesesTagwirdmitdemInhalteinesFeldesvon`tl_member`desangemeldetenMitgliedsersetzt(ersetzenSie*mitdemFeldnamen).
{{user::firstname}} DiesesTagwirdmitdemVornamendesangemeldetenMitgliedsersetzt.
{{user::lastname}} DiesesTagwirdmitdemNachnamendesangemeldetenMitgliedsersetzt.
{{user::company}} DiesesTagwirdmitdemFirmennamendesangemeldetenMitgliedsersetzt.
{{user::phone}} DiesesTagwirdmitderTelefonnummerdesangemeldetenMitgliedsersetzt.
{{user::mobile}} DiesesTagwirdmitderHandynummerdesangemeldetenMitgliedsersetzt.
{{user::fax}} DiesesTagwirdmitderFaxnummerdesangemeldetenMitgliedsersetzt.
{{user::email}} DiesesTagwirdmitderE-Mail-AdressedesangemeldetenMitgliedsersetzt.
{{user::website}} DiesesTagwirdmitderInternetadressedesangemeldetenMitgliedsersetzt.
{{user::street}} DiesesTagwirdmitdemStaßennamendesangemeldetenMitgliedsersetzt.
{{user::postal}} DiesesTagwirdmitderPostleitzahldesangemeldetenMitgliedsersetzt.
{{user::city}} DiesesTagwirdmitderStadtdesangemeldetenMitgliedsersetzt.
{{user::country}} DiesesTagwirdmitdemLanddesangemeldetenMitgliedsersetzt.
{{user::username}} DiesesTagwirdmitdemBenutzernamendesangemeldetenMitgliedsersetzt.
Seiteneigenschaften
MitdenfolgendenInsert-TagskönnenSeiteneigenschaftenwiez.B.derSeitennameausgegebenwerden.
Insert-Tag Beschreibung
{{page::*}}DiesesTagwirdmitdemInhalteinesFeldesvon`tl_page`deraktuellenSeiteersetzt(ersetzenSie*mitdemFeldnamen).
Insert-Tags
66
Page 67
{{page::id}} DiesesTagwirdmitderIDderaktuellenSeiteersetzt.
{{page::alias}} DiesesTagwirdmitdemAliasderaktuellenSeiteersetzt.
{{page::title}} DiesesTagwirdmitdemNamenderaktuellenSeiteersetzt.
{{page::pageTitle}} DiesesTagwirdmitdemTitelderaktuellenSeiteersetzt.
{{page::language}} DiesesTagwirdmitderSprachederaktuellenSeiteersetzt.
{{page::parentAlias}} DiesesTagwirdmitdemAliasderübergeordnetenSeiteersetzt.
{{page::parentTitle}} DiesesTagwirdmitdemNamenderübergeordnetenSeiteersetzt.
{{page::parentPageTitle}} DiesesTagwirdmitdemTitelderübergeordnetenSeiteersetzt.
{{page::mainAlias}} DiesesTagwirdmitdemAliasderübergeordnetenHauptseiteersetzt.
{{page::mainTitle}} DiesesTagwirdmitdemNamenderübergeordnetenHauptseiteersetzt.
{{page::mainPageTitle}} DiesesTagwirdmitdemTitelderübergeordnetenHauptseiteersetzt.
{{page::rootTitle}} DiesesTagwirdmitdemNamenderWebseiteersetzt.
{{page::rootPageTitle}} DiesesTagwirdmitdemTitelderWebseiteersetzt.
Umgebungsvariablen
MitdenfolgendenInsert-TagskönnenUmgebungsvariablenwiez.B.derSeitennameoderderRequest-Stringausgegebenwerden.
Insert-Tag Beschreibung
{{env::host}} DiesesTagwirdmitdemaktuellenHostnamenersetzt.
{{env::url}} DiesesTagwirdmitdemHostnamenunddemProtokollersetzt.
{{env::path}} DiesesTagwirdmitderaktuellenBasis-URLsamtPfadzumContao-Verzeichnisersetzt.
{{env::request}} DiesesTagwirdmitdemaktuellenRequest-Stringersetzt.
{{env::ip}} DiesesTagwirdmitderIP-AdressedesaktuellenBesuchersersetzt.
{{env::referer}} DiesesTagwirdmitderURLderzuletztbesuchtenSeiteersetzt.
{{env::files_url}} DiesesTagwirdmitderstatischenURLdesUploadverzeichnisersetzt.
{{env::assets_url}} DiesesTagwirdmitderstatischenURLdesAssets-Verzeichnisersetzt.
Include-Elemente
MitdenfolgendenInsert-TagskönnenRessourcenwiez.B.Artikel,ModuleoderDateienausdem"templates"-Verzeichniseingebundenwerden.
Insert-Tag Beschreibung
{{insert_article::*}}DiesesTagwirdmitdemreferenziertenArtikelersetzt(ersetzenSie*mitderIDoderdemAlias).
{{insert_content::*}}DiesesTagwirdmitdemreferenziertenInhaltselementersetzt(ersetzenSie*mitderIDdesElements).
{{insert_module::*}}DiesesTagwirdmitdemreferenziertenModulersetzt(ersetzenSie*mitderIDdesModuls).
{{insert_form::*}}DiesesTagwirdmitdemreferenziertenFormularersetzt(ersetzenSie*mitderIDdesFormulars).
Insert-Tags
67
Page 68
{{article_teaser::*}}DiesesTagwirdmitdemTeasereinesArtikelsersetzt(ersetzenSie*mitderIDdesArtikels).
{{news_teaser::*}}DiesesTagwirdmitdemTeasereinerNachrichtersetzt(ersetzenSie*mitderIDderNachricht).
{{event_teaser::*}} DiesesTagwirdmitdemTeasereinesEventsersetzt(ersetzenSie*mitderIDdesEvents).
{{file::*}}
DiesesTagwirdmitdemInhalteiner.php-,.tpl-,.xhtml-oder.html5-Dateiausdem"templates"-Verzeichnisersetzt(ersetzenSie*mitdemNamen).BeiBedarfkönnenSieArgumenteübergeben:{{file::file.php?arg1=val}}.MittelsUUIDkannaußerdemderPfadeinerDateiausderDatenbankabgefragtwerden:{{file::6939a448-9b30-11e4-bcba-079af1e9baea}}.
Verschiedenes
MitdenfolgendenInsert-TagskönnenSieverschiedeneAufgabenerledigenundz.B.dasaktuelleDatumodereinLightbox-Bildeinfügen.
Insert-Tag Beschreibung
{{date}} DiesesTagwirdmitdemaktuellenDatumgemäßdesglobalenDatumsformatsersetzt.
{{date::*}} DiesesTagwirdmitdemaktuellenDatumgemäßeinesindividuellenDatumsformatsersetzt.
{{last_update}}DiesesTagwirdmitdemDatumderletztenAktualisierunggemäßdesglobalenDatumsformatsersetzt.
{{last_update::*}}DiesesTagwirdmitDatumderletztenAktualisierunggemäßeinesindividuellenDatumsformatsersetzt.
{{email::*}} DiesesTagwirdmiteinemverschlüsseltenLinkzueinerE-Mail-Adresseersetzt.
{{email_open::*}}DiesesTagwirdmiteinemverschlüsseltenLinkzueinerE-Mail-Adresseersetzt.Allerdingswirddasschließende</a>nichtangefügt.
{{email_url::*}} DiesesTagwirdnurdurchdieverschlüsselteE-Mail-Adresseersetzt.
{{post::*}}MitdiesemTagkanneineangegebenePost-Variableausgelesenundangezeigtwerden.Kannz.B.genutztwerden,umaufeinzelneFeldereinesgesendetenFormularszuzugreifen.
{{lang::*}}
MitdiesemTagkönnenfremdsprachigeWörterineinemTextmarkiertwerden:{{lang::fr}}Aurevoir{{lang}}.Dieswirdersetztmit<spanlang="fr">Aurevoir</span>undfügtxml:lang="fr"hinzufallsdasSeitenformatXHTMList.
{{abbr::*}}AbkürzungenineinemTextmarkieren:{{abbr::WorldWideWeb}}WWW{{abbr}}.Dieswirdersetztmit<abbrtitle="WorldWideWeb">WWW</abbr>.
{{acronym::*}}
AkronymeineinemTextmarkieren:{{acronym::MultipurposeInternetMailExtensions}}MIME{{acronym}}.Dieswirdersetztmit<acronymtitle="MultipurposeInternetMailExtensions">MIME</acronym>.
{{ua::*}}EigenschaftendesBrowsers(UserAgent)ausgeben:{{ua::browser}}.Dieswirdbeispielsweiseersetztmit"chrome".
{{iflng::*}}
DiesesTagwirdkomplettentfernt,wenndieSprachederSeitenichtmitderTag-Spracheübereinstimmt.SiekönnensosprachspezifischeBezeichnungenerstellen:{{iflng::en}}Yourname{{iflng::de}}IhrName{{iflng}}
{{ifnlng::*}}
DiesesTagwirdkomplettentfernt,wenndieSprachederSeitemitderTag-Spracheübereinstimmt.SiekönnensosprachspezifischeBezeichnungenerstellen:{{ifnlng::de}}Yourname{{ifnlng}}{{iflng::de}}IhrName{{iflng}}
{{image::*}}
DiesesTagwirdmitderVorschauansichteinesBildesersetzt(wobei*eineDatenbankID,eineUUIDodereinPfadausdemDateisystemseinkann):{{image::58ca4a90-2d30-11e4-8c21-0800200c9a66?width=200&height=150}}.width:BreitedesVorschaubildes,height:HöhedesVorschaubildes,
Insert-Tags
68
Page 69
alt:AlternativerText,class:CSS-Klasse,rel:rel-Attribut(z.B."lightbox"),mode:Modus("proportional","crop"oder"box").
{{picture::*}}
DiesesTagwirdmiteinem<picture>-ElementundverschiedenenBildgrössenersetzt,abhängigvonderverwendetenBildgrößen-Konfiguration(wobei*eineDatenbankID,eineUUIDodereinPfadausdemDateisystemseinkann):{{picture::58ca4a90-2d30-11e4-8c21-0800200c9a66?size=1&template=picture_default}}.width:BreitedesVorschaubildes,height:HöhedesVorschaubildes,alt:AlternativerText,class:CSS-Klasse,rel:rel-Attribut(z.B."lightbox"),mode:Modus("proportional","crop"oder"box"),size:IDeinerBildgrösse(sieheThemes->Bildgrößen),template:ZuverwendendesTemplate(picture_default).
{{label::*}}
DiesesTagwirdmiteinerÜbersetzungersetzt.DerersteParameteristderNameeinerSprachdateiodereinemAkronym(z.B.CNTfürLänderoderLNGfürSprachen).Beispiele:{{label::CNT:au}}wirdzu"Australien"und{{label::tl_article:title:0}}wirdzu"Titel".BeachtenSie,dassinnerhalbdesPfadszurBezeichnungnureinfacheDoppelpunkteverwendetwerden.
{{version}} DiesesTagwirdmitderverwendetenContao-Version(z.B.3.2.7)ersetzt.
{{request_token}} DiesesTagwirdmitdemzuraktuellenSessiongehörendenRequest-Tokenersetzt.
{{toggle_view}}DiesesTagwirdmiteinemLinkersetzt,welcherzwischenMobile-undDesktop-Layoutwechselt.
{{br}} DiesesTagwirdmiteinemHTML<br>Element(Zeilenumbruch)ersetzt.
Insert-Tag-Flags
MittelsFlagskönnenSieInsert-Tagsweiterverarbeiten.DerWertkanndamitz.B.einerPHP-Funktionübergebenwerden.BeliebigvieleFlagskönnenmiteinanderkombiniertwerden:
{{ua::browser|uncached}}
{{page::title|decodeEntities|strtoupper}}
VerfügbareFlags:
Flag Beschreibung WeitereInformationen
uncached ErhältdasTagbeimSchreibenderCache-Datei.
refresh ErstelltdieAusgabebeijederAnfrageneu.
addslashes StelltbestimmtenZeicheneinesStringsein"\"voran. PHP-Funktion
stripslashes Entferntdas"\"vorbestimmtenZeicheneinesStrings. PHP-Funktion
standardizeStandardisiertdieAusgabe(z.B.dasAliasbeiderSeitenstruktur).
ampersand WandeltUnd-ZeicheninEntitiesum.
specialchars WandeltSonderzeicheninEntitiesum.
nl2brFügtvorallenZeilenumbrücheneinesStringsHTML-Zeilenumbrücheein. PHP-Funktion
nl2br_pre ErhältdieZeilenumbrücheinnerhalbvon<pre>-Tags.
strtolower WandeltdieAusgabeinKleinbuchstabenum. PHP-Funktion
Insert-Tags
69
Page 70
utf8_strtolower Unicode-bewussteUmwandlunginKleinbuchstaben
strtoupper WandeltdieAusgabeinGroßbuchstabenum. PHP-Funktion
utf8_strtoupper Unicode-bewussteUmwandlunginGroßbuchstaben
ucfirst WandeltdasersteZeichenineinenGroßbuchstabenum. PHP-Funktion
lcfirst WandeltdasersteZeichenineinenKleinbuchstabenum. PHP-Funktion
ucwordsWandeltdasersteZeichenjedesWortesineinenGroßbuchstabenum. PHP-Funktion
trim EntferntLeerzeichenvomAnfangundEndederAusgabe. PHP-Funktion
rtrim EntferntLeerzeichenvomAnfangderAusgabe. PHP-Funktion
ltrim EntferntLeerzeichenvomEndederAusgabe. PHP-Funktion
utf8_romanize RomanisiertdieAusgabe.
strrev DrehtdieAusgabeum. PHP-Funktion
encodeEmail KodiertE-Mail-AdresseninderAusgabe. sieheString::encodeEmail
decodeEntities DekodiertEntitiesinderAusgabe. sieheString::decodeEntities()
number_format FormatierteineZahl(keineDezimalstellen). sieheSystem::getFormattedNumber()
currency_format FormatierteineWährung(zweiDezimalstellen). sieheSystem::getFormattedNumber()
readable_size WandeltdieAusgabeineinmenschenlesbaresFormatum. sieheSystem::getReadableSize()
urlencode URL-kodierteinenString. PHP-Funktion
rawurlencode URL-KodierungnachRFC3986. PHP-Funktion
Insert-Tags
70
Page 71
SystemadministrationDiefolgendenKapitelerklären,wiemanContaoadministriert.NebenderInstallationundAktualisierungdesSystemsistderAdministratorauchfürdasAnlegenvonBenutzernundGruppen,dieErweiterungsverwaltungunddieWartungderApplikationzuständig.
Systemadministration
71
Page 72
BenutzerundGruppen
ContaounterscheidetzwischenBackend-Benutzern("Benutzer"),diesichamAdministrationsbereichanmeldenkönnen,undFrontend-Benutzern("Mitglieder"),diesichaufderWebseiteanmeldenkönnen.ImGegensatzzuAdministratoren,diestandardmäßigalleSeitenundElementebearbeitendürfen("allowall"),könnenreguläreBenutzernuraufdieRessourcenzugreifen,dieexplizitinihremProfiloderdemProfileinerderGruppen,denensieangehören,freigeschaltetwurden("denyall").
Benutzer
JederBenutzerkannmehrerenGruppenangehörenunderbtautomatischderenRechte.Zugriffsrechtesindadditiv,dasheißteinBenutzererbtdieSummederRechteallerseinerGruppen.WirdeinbestimmtesRechtinGruppeAvergeben,kannesnichtinGruppeBwiderrufenwerden.
Pagemounts
Pagemountslegenfest,welcheSeiteneinBenutzerinderSeitenstruktursehenkann.DernachfolgendeScreenshotzeigtdieSeitenstrukturausSichtvonHelenLewis.ObwohldieWebseitewesentlichmehrSeitenenthält,kannsienurdreidavonsehen,dennnurdie"Courses"-Seitewurdeininder"Editors"-Gruppegemountet.BeachtenSieaußerdem,dassHelenLewisnureinederdreiSeitenbearbeitenkann!
EineSeitesehenzukönnen,beinhaltetnochnichtdasRecht,siezubearbeiten.ErinnernSiesich,dassZugriffsrechteinderSeitenstrukturvergebenwerden,dahermusseineSeitesowohlimBenutzerprofilgemountet,alsauchinderSeitenstrukturfreigeschaltetwerden.
Filemounts
Filemountslegenfest,welcheVerzeichnisseeinBenutzerinderDateiverwaltungsehenkann.DernachfolgendeScreenshotzeigtdenDateimanagerausSichtvonHelenLewis,dieimGegensatzzumAdministratornuraufdencampus-Ordnerzugreifendarf.
BenutzerundGruppen
72
Page 73
ErlaubteFelder
Wieobenerwähnt,habenreguläreBenutzerstandardmäßigüberhauptkeineRechte("denyall"),dürfenalsoauchnichtaufFormularfelderzugreifen.SelbstwennsiealsobeispielsweisedasNachrichten-Modulaufrufenkönnten,wäredasFormularzumAnlegeneinesBeitragssolangeleer,bisderAdministratorindenGruppenrechteneinesodermehrereFelderderTabelletl_newsfreigeschaltethat.
Mitglieder
BenutzerundGruppen
73
Page 74
DieVerwaltungvonMitgliedern(Frontend-Benutzern)istvielsimpleralsdievonBackend-Benutzern,weileskeinePagemountsodererlaubteFeldergibt.DieMitgliederverwaltungwirdhauptsächlichbenötigt,umdenaufGruppenebeneimplementiertenZugriffsschutzfürSeitenzukontrollieren.JenachKonfigurationkönnenregistrierteMitgliedergeschützteSeitenoderDownloadsaufrufen,diefürGästenichterreichbarsind.
Frontend-Vorschau
AlsAdministratorkönnenSiesichalsjedesMitgliedanmeldenunddieWebseitemitdenentsprechendenBerechtigungenprüfen.DieseOptionistinderMitgliederlisteverfügbar.
DasFrontenderscheintmitderVorschau-Toolbar,inwelcherzwischendenMitgliederngewechseltwerdenkann.AusserdemkönnendurchdieentsprechendeOptionalleunveröffentlichtenElementederangezeigtwerden.
BenutzerundGruppen
74
Page 75
Erweiterungen
ErweiterungensindeinwichtigerBestandteilvonContao,weilsiedasHinzufügenweitererFunktionalitätermöglichen.Momentanbefindensich1.400ErweiterungenimExtensionRepository,dieSiedirektimBackendaufrufenkönnen.BeachtenSiedabei,dassdasExtensionRepository2.0nurnochsolcheErweiterungenanzeigt,diezuIhrerContao-Versionkompatibelsind.DieAnzahlderErweiterungeninIhremErweiterungskatalogwirddaherjenachVersionwahrscheinlichdeutlichunter1.400liegen.DieKommunikationmitdemRepository-ServererfolgtmittelsSOAP,daherbenötigenSiediePHPSOAP-Erweiterungen,umdenServicezunutzen.
Erweiterungskatalog
Mitdem"Erweiterungskatalog"-ModulkönnenSiedieErweiterungslistedurchsuchenundErweiterungenaufKnopfdruckinstallieren.NutzenSiedieFilter-undSortieroptionenzumAuffindeneinesModulsundklickenSieaufdessenNamen,umdieBeschreibungzulesenodereszuinstallieren.
DieDetailseiteenthältdieBeschreibungderErweiterungsowiewichtigeInformationenzuSystemvoraussetzungen,VersionenundAbhängigkeitenvonanderenModulen.KlickenSieaufdie"Installieren"-Schaltfläche,umdieErweiterungherunterzuladenundzuinstallieren.
Erweiterungen
75
Page 76
ContaolädtdieErweiterungautomatischherunter,kopiertdieDateienundaktualisiertwennnötigdieDatenbank.
Erweiterungen
76
Page 77
Erweiterungsverwaltung
MitdemModul"Erweiterungsverwaltung"könnenErweiterungenaktualisiertoderdeinstalliertwerden.EswirdautomatischaufUpdatesgeprüftundaufneueVersionenhingewiesen.VieleErweiterungenenthaltenaußerdemeinenSupport-LinkzurDokumentationund/oderzumForum.
UmeineErweiterungzudeinstallieren,klickenSieaufdasentsprechendeIconundfolgenSiedenAnweisungen.EswerdenalleDateienentferntundfallsnötigdieDatenbankaktualisiert.BeachtenSie,dassdieseAktionnichtrückgängiggemachtwerdenkann!
Erweiterungen
77
Page 78
ManuelleInstallation
FallsdiePHPSOAP-ErweiterungaufIhremServernichtverfügbarist,könnenSieExtensionsauchmanuellinstallieren.FindenSiedasentsprechendeModulinderErweiterungslisteundladenSiedas.zip-ArchivdesaktuellenReleaseherunter.EntpackenSiedieDateienundkopierenSiesieinIhrlokalesoderentferntesContao-Verzeichnis.AbschließendprüfenSiedieDatenbankmitdemContao-Installtool.
Erweiterungen
78
Page 79
Systemwartung
DiemeistenWartungsaufgabeninContaosindautomatisiert,sodassSiesichaufIhreeigentlicheArbeitkonzentrierenkönnen.Manchmalkannesjedochnotwendigsein,diesonstautomatischausgeführtenAufgabenderSystemwartungmanuellzustarten.
Datenbereinigen
NebendenBenutzer-generiertenInhaltenspeichertContaoverschiedeneSystemdaten,diefürdieSucheoderdasWiederherstellengelöschterDatensätzeoderfrühererVersionenverwendetwerden.SiekönnendieseDatenmanuellbereinigen,umz.B.alteVorschaubilderzuentfernenoderdieXML-SitemapsnacheinerÄnderunganderSeitenstrukturzuaktualisieren.
Suchindexneuaufbauen
SeitenwerdenautomatischbeimAufrufimFrontendindiziert(esseidennSiesindparallelimBackendangemeldet),dahermüssenSiesichumdenSuchindexnormalerweisekeineGedankenmachen.WennSieallerdingsvieleSeitenaufeinmalaktualisierthaben,istesbequemer,denSuchindexmanuellneuaufzubauen,alsallegeändertenSeiteneinzelnimBrowseraufzurufen.
Systemwartung
79