Handbuch für Contao 3 › books › contao-handbuch-3.5.pdf · 2017-07-19 · Handbuch für Contao...

Post on 30-Jun-2020

14 views 1 download

Transcript of Handbuch für Contao 3 › books › contao-handbuch-3.5.pdf · 2017-07-19 · Handbuch für Contao...

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

2

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

InstallationDiefolgendenAbschnitteerklärendieInstallationundAktualisierungvonContao.SielernenwiemandasContao-Installtoolverwendet,wiemaneineInstallationperFTPsynchronisiert,wiemandenSafeModeHackeinrichtetundwiemaneinenWebserverfürContaokonfiguriert.

Installation

4

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

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

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

system/tmp

DieSchreibrechte(CHMOD777)werdenvomInstalltoolautomatischgesetztundmüsseninderRegelnichtmanuellnachgearbeitetwerden.Fallsdiesdocheinmalnotwendigseinsollte,passenSiebittenurdiesedreiVerzeichnissean–auchwennSieineinemTutorialoderdemContao-Forumetwasanderesgelesenhabensollten!

DenSafeModeHackverwenden

8

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

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

ZumSchlussmussnochderinterneCache(DCA-undSprachdateien)geleertundneuangelegtwerden.GehenSieimBackendzur"Systemwartung"undwählenunter"Datenbereinigen"denPunkt"InternenCacheleeren"aus.BestätigenSiedieAktionmit"Datenbereinigen".

NunerscheintinderKopfzeilevomBackendeinHinweis,dassderinterneCachenochnichtaufgebautwurde.ErstellenSiedeninternenCacheindemSieinderKopfzeile"DenCacheaufbauen"anklicken.

ManuellesUpdate

11

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

Fehlersuche

99%allerLiveUpdate-ProblemesindaufunzureichendeDatei-Zugriffsrechtezurückzuführen.ContaobenötigtSchreibrechte,umDateienundOrdnerzuverwalten,dahersolltenSiealserstesIhreServerkonfigurationprüfenundsicherstellen,dassderSafeModeHacksowieindiesemHandbuchbeschriebenkonfiguriertist!

Hinweis

WennSieProblemebeiderAktivierungIhrerLiveUpdateIDhaben,wendenSiesichbitteandeniNetRobots-Support.BeiProblemenmitdemSafeModeHackoderderBenutzungvonContao,wählenSiebitteeinepassendeSupport-OptionaufderSupport-Seite.

LiveUpdateService

13

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

Ö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

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

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

AdministrationsbereichUmdenAdministrationsbereich(Backend)aufzurufen,hängenSieeinfach/contaoandieURLIhrerContao-Webseitean.

Hinweis

DieKontensindgegenBruteForce-Attackengeschütztundwerdenfür5Minutengesperrt,wenndreimalhintereinandereinfalschesPassworteingegebenwurde.BeachtenSiedassdieGroß-/KleinschreibungbeiBenutzernameundPasswortberücksichtigtwird.

Administrationsbereich

18

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

TreeView

Der"TreeView"listetDatensätzeauf,dieineinerhierarchischenStrukturorganisiertsind.ContaounterstütztsowohlhierarchischeBeziehungeninnerhalbeinerTabelle(z.B.Seitenstruktur)alsauchKindtabellen,diesichaufhierarchischeElterntabellenbeziehen(z.B.ArtikelundSeiten).

Datensätzeauflisten

20

Datensortierenundfiltern

ContaobietetmehrereMöglichkeiten,Auflistungenzusortierenundzufiltern,damitSieauchbeimehrerentausendDatensätzendenÜberblickbehalten.VieleListenkönnenanhandeinesodermehrererFeldereingeschränktwerden.DiemeistenbietenzusätzlicheineVolltext-Suchean,diesogarreguläreAusdrückeunterstützt.UmdieLadezeitzuoptimieren,zeigtContaoimmernur30Datensätzeaufeinmalan.

Datensätzeauflisten

21

Datensätzeauflisten

22

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

IconsimTreeView

Im"TreeView"werdenweitereIconsbenötigt,umdiehierarchischeStrukturabbildenzukönnen.NebendemKopiereneineseinzelnenDatensatzeskönnenauchganzeTeilbäumedupliziertundentwederineinenodernacheinemanderenDatensatzeingefügtwerden.

Datensätzebearbeiten

24

FrühereVersionenwiederherstellen

ContaoerstelltbeijedemSpeichervorgangautomatischeineneueVersioneinesDatensatzes.SobaldesmehralseineVersiongibt,erscheintoberhalbdesFormularseinDrop-Down-Menü,mitdemSiezueinerfrüherenVersionenzurückgehenkönnen.

DurchKlickaufdasIconrechtsdesDrop-Down-MenüswerdendieUnterschiedezwischenderaktuellenunddergewähltenVersionangezeigt.

Datensätzebearbeiten

25

MehrereDatensätzebearbeiten

DieMöglichkeit,mehrereDatensätzeaufeinmalzubearbeiten,hebtContaoklarvondenMitbewerbernab.WechselnSiedenBearbeitungsmodusdurchAnklickender"Mehrerebearbeiten"-SchaltflächeundwählenSiedanndiezubearbeitendenDatensätzeundFelderaus.

Datensätzebearbeiten

26

Datensätzebearbeiten

27

Datensätzebearbeiten

28

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

[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

SeitenverwaltenDiefolgendenKapitelerklären,wiemanSeiteninContaoverwaltet.DaContaoeinSeiten-basiertesCMSist,sindSeitenunddieSeitenstrukturdiezentralenElementeIhrerWebseiteundjederInhalt,dernichtmiteinerSeiteassoziiertist,erscheintauchniemalsimFrontend.

Seitenverwalten

31

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

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

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

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

WäredieReihenfolgeumgekehrt,würdederallgemeineAbstanddenIE-spezifischenWertüberschreiben.

Stylesheets

36

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

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

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

Seitenlayouts

40

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

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

InhalteverwaltenDiefolgendenKapitelerklären,wiemanInhalteinContaoverwaltet.DerContao-CorebeinhaltetbereitsdiegrundlegendenInhaltstypenwiez.B.Artikel,Nachrichten,Events,NewsletteroderFormatdefinitionen.WeitereInhaltstypenwieBanner,Tickets,ProdukteoderEmpfehlungensindüberdasExtensionRepositoryverfügbar.InhaltekönnenimBackendmitdenentsprechendenModulenangelegtwerden.

Inhalteverwalten

43

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

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

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

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

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

RSS-/Atom-Feed

DieseFunktionistfürNewsArchiveundKalenderverfügbar.HiereinBeispielderKalender-Liste.

Einstellungen

EinodermehrereKalenderkönnengruppiertundalsRSS-bzw.Atom-Feedausgegebenwerden.GenaugleichfunktioniertesbeiNewsArchiven.Hierkannauchgewähltwerden,obnurderTeaseroderderkompletteArtikeldesEventsbzw.derNewsausgegebenwerdensoll.

RSS-/Atom-Feed

49

XMLDateien

DieXMLDateienwerdenautomatischgeneriertundimshareVerzeichnisIhrerContaoInstallationabgelegt.IndiesemBeispiel:share/events.xml.

RSS-/Atom-Feed

50

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

{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

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

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

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

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=name@example.com][/email] DerenthalteneTextwirdmitderE-Mail-Adresseverknüpft.

Kommentare

56

Kommentare

57

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

</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

<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

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

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

[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

[^1]:UnddiesistdieFußnote.

DieFußnoten-DefinitionkannanbeliebigerStelleimDokumentplatziertwerden.

WeitereInformationen

FüreinekompletteDokumentationzuMarkdown,besuchenSiedieoffizielleWebseiteunterfolgendemLink.

FüreinekompletteDokumentationzuMarkdownExtra,besuchenSiedieoffizielleWebseiteunterfolgendemLink.

Markdown

64

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

{{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::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

{{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

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

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

SystemadministrationDiefolgendenKapitelerklären,wiemanContaoadministriert.NebenderInstallationundAktualisierungdesSystemsistderAdministratorauchfürdasAnlegenvonBenutzernundGruppen,dieErweiterungsverwaltungunddieWartungderApplikationzuständig.

Systemadministration

71

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

ErlaubteFelder

Wieobenerwähnt,habenreguläreBenutzerstandardmäßigüberhauptkeineRechte("denyall"),dürfenalsoauchnichtaufFormularfelderzugreifen.SelbstwennsiealsobeispielsweisedasNachrichten-Modulaufrufenkönnten,wäredasFormularzumAnlegeneinesBeitragssolangeleer,bisderAdministratorindenGruppenrechteneinesodermehrereFelderderTabelletl_newsfreigeschaltethat.

Mitglieder

BenutzerundGruppen

73

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

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

ContaolädtdieErweiterungautomatischherunter,kopiertdieDateienundaktualisiertwennnötigdieDatenbank.

Erweiterungen

76

Erweiterungsverwaltung

MitdemModul"Erweiterungsverwaltung"könnenErweiterungenaktualisiertoderdeinstalliertwerden.EswirdautomatischaufUpdatesgeprüftundaufneueVersionenhingewiesen.VieleErweiterungenenthaltenaußerdemeinenSupport-LinkzurDokumentationund/oderzumForum.

UmeineErweiterungzudeinstallieren,klickenSieaufdasentsprechendeIconundfolgenSiedenAnweisungen.EswerdenalleDateienentferntundfallsnötigdieDatenbankaktualisiert.BeachtenSie,dassdieseAktionnichtrückgängiggemachtwerdenkann!

Erweiterungen

77

ManuelleInstallation

FallsdiePHPSOAP-ErweiterungaufIhremServernichtverfügbarist,könnenSieExtensionsauchmanuellinstallieren.FindenSiedasentsprechendeModulinderErweiterungslisteundladenSiedas.zip-ArchivdesaktuellenReleaseherunter.EntpackenSiedieDateienundkopierenSiesieinIhrlokalesoderentferntesContao-Verzeichnis.AbschließendprüfenSiedieDatenbankmitdemContao-Installtool.

Erweiterungen

78

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

Systemwartung

80