<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://de.contaowiki.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
		<id>https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MacKP</id>
		<title>Contao Community Documentation - Benutzerbeiträge [de]</title>
		<link rel="self" type="application/atom+xml" href="https://de.contaowiki.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MacKP"/>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Spezial:Beitr%C3%A4ge/MacKP"/>
		<updated>2026-04-30T12:27:21Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>https://de.contaowiki.org/Composer/Hosting</id>
		<title>Composer/Hosting</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Composer/Hosting"/>
				<updated>2014-08-28T09:06:14Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Tipps und Tricks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
[[Category:Composer]]&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:Installation und Updates]]&lt;br /&gt;
&lt;br /&gt;
=Kompatibilitätsliste=&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Webhoster gelistet, auf denen Contao mit Composer läuft, mit Einschränkungen läuft oder nicht läuft.&lt;br /&gt;
&lt;br /&gt;
==Kompatible Webhostingpakete==&lt;br /&gt;
&lt;br /&gt;
* [https://www.df.eu/ domainfactory] ManagedServer L4  ([[User:Hellschu|Hellschu]])/ ab ManagedHosting Pro lauffähig ([[User:MacKP|MacKP]])&lt;br /&gt;
* [http://hosteurope.de/ Hosteurope] Virtual Server Managed, phar whitellisten ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://inetrobots.de/ Inetrobots.de] Getestet mit Webhosting &amp;quot;Professional&amp;quot; ([https://community.contao.org/de/member.php?4042-ciaobello ciaobello]).&lt;br /&gt;
* [https://www.fc-hosting.de/ fc-hosting.de] Paket: Expert 3.2 ohne Extras ([https://community.contao.org/de/member.php?6680-dackelchen dackelchen])&lt;br /&gt;
* [http://www.metanet.ch Metanet.ch] Wichtig ist zu beachten dass mindestens Plesk 11.5 installiert ist (darauf beharren). Dann kann die notwendige Funktion im Kontrollpanel pro Domain eingeschaltet werden. Getestet mit METAHost ([https://community.contao.org/de/member.php?4042-ciaobello ciaobello]).&lt;br /&gt;
* [http://w4w.net/ w4w.net] Standardhosting ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://www.webhostone.de/ WebhostOne] Webhosting MultiApp ([[User:Lucina|Lucina]])&lt;br /&gt;
&lt;br /&gt;
==Inkompatible Webhostingpakete==&lt;br /&gt;
&lt;br /&gt;
* [http://df.eu/ Domain Factory] MyHomePlus (zu geringe Ressourcen, u.a. nur 50 MB Ram ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://www.webhostone.de/ WebhostOne] Webhosting Single App (RAM nicht ausreichend) ([[User:Lucina|Lucina]])&lt;br /&gt;
&lt;br /&gt;
==Tipps und Tricks ==&lt;br /&gt;
* Bei df.eu kann die php.ini so bearbeitet werden, das auch die Optionalen Bedingungen erfüllt werden (per php.ini Editor im Backend von df.eu)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Composer/Hosting</id>
		<title>Composer/Hosting</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Composer/Hosting"/>
				<updated>2014-08-28T09:04:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
[[Category:Composer]]&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:Installation und Updates]]&lt;br /&gt;
&lt;br /&gt;
=Kompatibilitätsliste=&lt;br /&gt;
&lt;br /&gt;
Auf dieser Seite werden Webhoster gelistet, auf denen Contao mit Composer läuft, mit Einschränkungen läuft oder nicht läuft.&lt;br /&gt;
&lt;br /&gt;
==Kompatible Webhostingpakete==&lt;br /&gt;
&lt;br /&gt;
* [https://www.df.eu/ domainfactory] ManagedServer L4  ([[User:Hellschu|Hellschu]])/ ab ManagedHosting Pro lauffähig ([[User:MacKP|MacKP]])&lt;br /&gt;
* [http://hosteurope.de/ Hosteurope] Virtual Server Managed, phar whitellisten ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://inetrobots.de/ Inetrobots.de] Getestet mit Webhosting &amp;quot;Professional&amp;quot; ([https://community.contao.org/de/member.php?4042-ciaobello ciaobello]).&lt;br /&gt;
* [https://www.fc-hosting.de/ fc-hosting.de] Paket: Expert 3.2 ohne Extras ([https://community.contao.org/de/member.php?6680-dackelchen dackelchen])&lt;br /&gt;
* [http://www.metanet.ch Metanet.ch] Wichtig ist zu beachten dass mindestens Plesk 11.5 installiert ist (darauf beharren). Dann kann die notwendige Funktion im Kontrollpanel pro Domain eingeschaltet werden. Getestet mit METAHost ([https://community.contao.org/de/member.php?4042-ciaobello ciaobello]).&lt;br /&gt;
* [http://w4w.net/ w4w.net] Standardhosting ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://www.webhostone.de/ WebhostOne] Webhosting MultiApp ([[User:Lucina|Lucina]])&lt;br /&gt;
&lt;br /&gt;
==Inkompatible Webhostingpakete==&lt;br /&gt;
&lt;br /&gt;
* [http://df.eu/ Domain Factory] MyHomePlus (zu geringe Ressourcen, u.a. nur 50 MB Ram ([[User:Lucina|Lucina]])&lt;br /&gt;
* [https://www.webhostone.de/ WebhostOne] Webhosting Single App (RAM nicht ausreichend) ([[User:Lucina|Lucina]])&lt;br /&gt;
&lt;br /&gt;
==Tipps und Tricks ==&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel_1</id>
		<title>MetaModels Beispiel 1</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel_1"/>
				<updated>2013-06-06T09:55:46Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* MM-Funktion: Zugriffsrechte definieren */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels]]&lt;br /&gt;
=Aufgabenstellung: Backend einrichten=&lt;br /&gt;
Als Beispielprojekt soll eine einfache &amp;quot;Musikbox&amp;quot; gebaut werden, in der Musikstücke mit gewissen Attributen (&amp;quot;Eigenschaften&amp;quot;) erfasst werden. Zu diesem Zweck wird zuerst das Backend aufgebaut. Hierzu braucht man eine Übersichtsliste und ein Erfassungsformular.&lt;br /&gt;
&lt;br /&gt;
===Vorgehensschritte===&lt;br /&gt;
# [[MetaModels|Start: Installation]] - Download und Installation von MetaModels&lt;br /&gt;
# [[MetaModels_Beispiel_1|Beispiel 1: Backend einrichten]] - MetaModel erstellen, Daten erfassen&lt;br /&gt;
# [[MetaModels_Beispiel_2|Beispiel 2: Frontend einrichten]] - Die Inhalte im Frontend anzeigen (Liste und Detail)&lt;br /&gt;
# [[MetaModels_Beispiel_3|Beispiel 3: Weitere Filter einrichten]] – Inhalte auf Published setzen, einfache Select-Filter&lt;br /&gt;
# [[MetaModels_Beispiel_4|Beispiel 4: Weiteres MetaModels einrichten]] - komplexe Select-Filter einsetzen&lt;br /&gt;
# [[MetaModels_Beispiel:_Übersetzter_select|Weiteres Beispiel: Übersetzter select]] - Mehrsprachiges Select-Attribut einrichten&lt;br /&gt;
&lt;br /&gt;
=Eine leere Datenbank erstellen=&lt;br /&gt;
&lt;br /&gt;
[[File:mm_startscreen.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst wird ein neues MetaModel erstellt. Technischen gesehen wird dabei in der Contao-Datenbank eine leere Tabelle angelegt. &lt;br /&gt;
&lt;br /&gt;
* Klick auf '''Neues MetaModel'''&lt;br /&gt;
* Name: '''Musicbox'''&lt;br /&gt;
* TabellenName: '''mm_musicbox'''&lt;br /&gt;
&lt;br /&gt;
===Anmerkungen===&lt;br /&gt;
&lt;br /&gt;
* Obwohl es so aussieht, als sei '''Übersetzung''' eine frei wählbare Option, ist &amp;quot;diese Option&amp;quot; ein MUSS, denn ohne Sprachenzuweisung funktioniert das ganze MetaModel nicht!&lt;br /&gt;
* '''Varianten unterstützen''' wird vorläufig nicht benötigt.... und gegebenenfalls zu einem späteren Zeitpunkt erläutert.&lt;br /&gt;
&lt;br /&gt;
===Auszuführen===&lt;br /&gt;
&lt;br /&gt;
* '''Übersetzung''' anhaken&lt;br /&gt;
* mindestens eine unterstützte Sprache auswählen&lt;br /&gt;
* eine Sprache (z.B. '''Deutsch''') zum Fallback machen&lt;br /&gt;
* '''Varianten aktivieren''' vorerst nicht anhaken&lt;br /&gt;
&lt;br /&gt;
Man sieht nun ein MetaModel &amp;quot;Musicbox&amp;quot; mit 0 (null) Datensätzen und einer Reihe von Icons, die nun zur Weiterbearbeitung genutzt werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MetaModels Backend-Funktionen==&lt;br /&gt;
Kurze Erklärung, was sich hinter den nun dargestellten Symbolen verbirgt (in Klammern ist angegegeben, was als Tooltip ausgegeben wird):&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_funktionen_icons.png|link=|border]]&lt;br /&gt;
&lt;br /&gt;
[[File:icons_bearbeiten.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Hier gelangt man wieder zurück zum gleichen Screen, wie bie der Erstellung eines neuen MetaModels. Hier kann man jederzeit sowohl den '''Namen''' als auch den '''Tabellennamen''' des MetaModels ändern.&lt;br /&gt;
&lt;br /&gt;
# [[MetaModels_Backend:_Attribute|'''Attribute''']] (Attribute für MetaModel ID x definieren)&lt;br /&gt;
# [[MetaModels_Backend:_Ausgabevorgaben|'''Ausgabevorgaben''']] (Render-Einstellungen für MetaModel ID x definieren)&lt;br /&gt;
# [[MetaModels_Backend:_Eingabemaske|'''Eingabemaske''']] (Eingabemaske für das MetaModel ID x definieren)&lt;br /&gt;
# [[MetaModels_Backend:_Filter|'''Filter''']] (Filter für MetaModel ID x definieren)&lt;br /&gt;
# [[MetaModels_Backend:_Ansichtseinstellungen|'''Paletten- und Ansichtseinstellungen''']] (Definieren Sie die Eingabe- / Ausgabe-Optionen für MetaModel ID x)&lt;br /&gt;
&lt;br /&gt;
=Das Backend konfigurieren=&lt;br /&gt;
&lt;br /&gt;
Um das Backend für die Erfassung der Daten vorzubereiten benötigt man a) eine Übersichtsliste und b) ein Erfassungsformular. Hierzu braucht man 4 der 5 Backend-Funktionen von MetaModels.&lt;br /&gt;
&lt;br /&gt;
* Datenbank erstellen, benennen, Sprachvariable zuweisen&lt;br /&gt;
* Felder definieren, Attribute festlegen, Erfassungsformular gestalten&lt;br /&gt;
* Übersichtsliste definieren&lt;br /&gt;
* Erfassung (z.B. für Redakteure) freigeben&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: Attribute==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_attribute.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Hier erfasst man die benötigen Felder für die Eingabe.&lt;br /&gt;
s. [[MetaModels_Backend:_Attribute|allgemeine Infos]] zu den Attributen&lt;br /&gt;
&lt;br /&gt;
[[File:mm_attribute_erfassen.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Hierzu gibt man folgende Felder ein (im nebenstehenden Screen ist das beispielhaft für das Attribut &amp;quot;Titel&amp;quot; dargestellt):&lt;br /&gt;
{|&lt;br /&gt;
|- &lt;br /&gt;
| '''Titel'''&lt;br /&gt;
|&lt;br /&gt;
* Attribute Type= Text&lt;br /&gt;
* Column name= title&lt;br /&gt;
* Name (deutsch)= Titel&lt;br /&gt;
* Description (deutsch)= Name des Stücks&lt;br /&gt;
|- &lt;br /&gt;
| '''Interpret'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Text&lt;br /&gt;
* Column name= composer&lt;br /&gt;
* Name (deutsch)= Interpret&lt;br /&gt;
* Description (deutsch)= Name der Band, SängerIn oder InterpretIn&lt;br /&gt;
|- &lt;br /&gt;
| '''Land'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Text&lt;br /&gt;
* Column name= country&lt;br /&gt;
* Name (deutsch)= Land&lt;br /&gt;
* Description (deutsch)=&lt;br /&gt;
|- &lt;br /&gt;
| '''Jahr'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Dezimal&lt;br /&gt;
* Column name= year&lt;br /&gt;
* Name (deutsch)= Jahr&lt;br /&gt;
* Description (deutsch)= Erscheinungsjahr&lt;br /&gt;
|- &lt;br /&gt;
| '''Beschreibung'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Langtext&lt;br /&gt;
* Column name= description&lt;br /&gt;
* Name (deutsch)= Beschreibung&lt;br /&gt;
* Description (deutsch)= Wikipedia, Kurzbeschreibung, etc.&lt;br /&gt;
|- &lt;br /&gt;
| '''Cover'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Datei&lt;br /&gt;
* Column name= images&lt;br /&gt;
* Name (deutsch)= Cover&lt;br /&gt;
* Description (deutsch)= Cover, Bilder&lt;br /&gt;
|- &lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|Bis jetzt wurde bei keinem der Attribute die Option '''Unique values''' aktiviert.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Um die Einträge eindeutig identifizieren zu können, wird zusätzlich ein Alias-Attribut erzeugt:&lt;br /&gt;
|- &lt;br /&gt;
| '''Alias'''&lt;br /&gt;
| &lt;br /&gt;
* Attribute Type= Alias&lt;br /&gt;
* Column name= alias&lt;br /&gt;
* Name (deutsch)= Alias&lt;br /&gt;
* Description (deutsch)=&lt;br /&gt;
* Unique values= aktiviert&lt;br /&gt;
* Alias Neuerstellung erzwingen = aktiviert&amp;lt;br&amp;gt;(dann muss kein Alias eingegeben werden, wird neu berechnet bei Änderung des Titels)&lt;br /&gt;
* Aliasfelder = Titel&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: Ausgabevorgaben==&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|32px]]&lt;br /&gt;
Hier wird die Ansicht erfasst: Eine Listendarstellung für das Backend.&lt;br /&gt;
&lt;br /&gt;
[[File:mm_ausgabe_definieren.png|right|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
* Klick auf '''neu'''&lt;br /&gt;
* '''BE Listenansicht''' eingeben&lt;br /&gt;
* Der Rest kann so stehen bleiben, denn für die BE Listenansicht braucht man weder eine '''Zielseite''' noch '''Filter settings'''.&lt;br /&gt;
&lt;br /&gt;
(s. [[MetaModels_Backend:_Ausgabevorgaben|allgemeine Ausgabe-Vorgaben]])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mm_ausgabe_attribute_definieren.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Um auszuwählen, welche Felder in der BE Listenansicht angezeigt werden sollen, klickt man einfach auf das entsprechende Icon rechts:&lt;br /&gt;
&lt;br /&gt;
* '''Add all''' fügt alle Felder auf einen Rutsch hinzu. Man kann auch '''Neu''' wählen und die Felder einzeln hinzufügen, aber mit '''Add all''' gehts am schnellsten.&lt;br /&gt;
* Die Frage, ob alle Attribute hinzugefügt werden sollen(&amp;quot;''Add all attributes to render setting''&amp;quot;), wird mit '''Weiter''' bestätigt.&lt;br /&gt;
* Nun werden alle Attribute aufgelistet, die im vorangegangenen Schritt erfasst worden sind.&lt;br /&gt;
&lt;br /&gt;
Über das übliche 'Auge' werden nur die Attribute sichtbar gemacht, die in der Backend-Liste angezeigt werden sollen.&lt;br /&gt;
Für dieses Tutorial wählen wir : '''Titel''', '''Interpret''', '''Land''' und '''Jahr'''.&lt;br /&gt;
&lt;br /&gt;
(( alter Screen, wird ersetzt ))&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: Eingabemaske (fka Paletteneinstellungen)==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_paletteneinstellungen.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Hier legt man fest, wo und wie im BE die Daten zur Musicbox erfasst werden sollen.&lt;br /&gt;
&lt;br /&gt;
===BE-Liste===&lt;br /&gt;
[[File:mm_paletten_BE_liste.png|thumb|400px]]&lt;br /&gt;
Nach Klick auf '''Neue Eingabemaske''' öffnet sich ein [[MetaModels_Backend:_Eingabemaske|Erfassungsformular]]. Hier die Werte eingeben, wie nebenan abgebildet:&lt;br /&gt;
* Name: '''BE Erfassung'''&lt;br /&gt;
* Option '''Als Standard benutzen'''&lt;br /&gt;
* Panel-Layout: Es stehen 4 Werte ('''filter''', '''sort''', '''search''' und '''limit''') zur Verfügung. Diese können auch über das Icon rechts abgerufen werden.&lt;br /&gt;
**Werden hier mehrere Werte eingegeben, so sind diese entweder durch Komma (,) oder durch Semikolon (;) voneinander zu trennen - nur mit Leerzeichen getrennte Werte werden ignoriert.&lt;br /&gt;
**Komma =&amp;gt; Ausgabe in der gleichen Zeile wie der vorhergehende Wert&lt;br /&gt;
**Semikolon =&amp;gt; Ausgabe in neuer Zeile.&lt;br /&gt;
* Integration: '''Als Einzeltabelle'''&lt;br /&gt;
* Sortiermodus: '''2 Datensätze nach wählbarem Feld sortiert darstellen''' (Wichtig: Sowohl dieser Wert als auch '''sort''' im '''Panel-Layout''' müssen definiert sein, ansonsten erscheint die Sortier-Funktion nicht.&lt;br /&gt;
* Sortierung: Auf- oder Absteigend... wie es dir gefällt&lt;br /&gt;
* Backend-Bereich: '''Inhalte''' (oder wo soll es in der Backend-Navigation eingesetzt werden)&lt;br /&gt;
* Backend-Icon: Auf Wunsch kann hier ein eigenes Icon gesetzt werden&lt;br /&gt;
* Backend-Beschreibung: wie abgebildet&lt;br /&gt;
&lt;br /&gt;
===Anmerkung===&lt;br /&gt;
Die Option '''Sortierung''' ist beim erstmaligen Bearbeiten der Seite noch nicht sichtbar. Es empfiehlt sich daher, nach Auswahl des '''Backend-Bereich'''s (hier: Inhalte) die Seite zu speichern. Jetzt kann die Sortierung festgelegt werden.&lt;br /&gt;
&lt;br /&gt;
Nun wurde eine Palette namens '''BE Erfassung''' erstellt. Im Folgenden wird nun das Erfassungs-Formular ein wenig gestaltet.&lt;br /&gt;
&lt;br /&gt;
Im letzten Kapitel auf dieser Seite ('''Die Daten erfassen''') sieht man, wie die Liste/das Formular zwecks Erfassung der Musikstücke aussieht.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===BE-Formular===&lt;br /&gt;
[[File:mm_paletten_BE_formular.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Man fügt nun alle Attribute zur Palette hinzu, indem man auf das Icon rechts (''Die Einstellungen der Palette ID xx bearbeiten'') klickt.&lt;br /&gt;
* '''Alle hinzufügen''' wählen und alle nun folgenden Screens bestätigen.&lt;br /&gt;
* Man erhält so eine Liste aller Attribute, die man einzeln bearbeiten kann.&lt;br /&gt;
* Auf Wunsch kan man hier auch die Reihenfolge umstellen und so bestimmen, wie die Daten erfasst werden sollen.&lt;br /&gt;
* Angefangen wird mit dem ersten Eintrag '''Titel [text]'''&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mm_paletten_BE_formular2.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Folgendes Beispiel zeigt, was man bei der Erfassung des Attributs '''Titel''' alles einstellen kann.&amp;lt;br&amp;gt;&lt;br /&gt;
Ein Klick auf das Editier-Icon zeigt die wichtigsten Einstellungen:&lt;br /&gt;
* Backend-Class: Damit kann man das Formular bzw. die Erfassungfelder etwas gestalten. 5 Werte stehen zur Verfügung: '''w50''', '''clr''', '''long''', '''wizard''' und '''m12'''&lt;br /&gt;
* Pflichtfeld: Durch Anklicken legt man fest, ob auf diesem Feld eine Inhaltsprüfung stattfinden soll. Die Felder werden mit einem roten Asterisk gekennzeichnet.&lt;br /&gt;
* Filterbar, Durchsuchbar, Sortierbar: Mit diesen Optionen kann man die BE-Liste etwas organisieren. Praktisch wenn man mehrere Dutzend/Hunderte von Datensätze erfasst hat.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: Zugriffsrechte definieren==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_ansichtseinstellungen.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Hier legt man fest, wer im Backend auf die Daten von MetaModel zugreifen und diese editieren darf.&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_ansichtseinstellungen.png|730px]]&lt;br /&gt;
&lt;br /&gt;
Damit die Benutzer den MM auch sehen können, muß in den Gruppen-/Benutzerrechten auch noch dieser MM freigeschaltet werden. Den MM findet man unter 'Erlaubte Module' &amp;gt; 'Backend Module'. Je nachdem ob man den MM einzeln oder Untergeordnet anzeigen lässt dann an der jeweiligen Stelle.&lt;br /&gt;
&lt;br /&gt;
=Die Daten erfassen=&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_erfassen.png|thumb|600px]]&lt;br /&gt;
&lt;br /&gt;
Und so sieht's aus:&amp;lt;br&amp;gt;Nun wird in der linken Navigationsübersicht &amp;quot;Backend-Module&amp;quot; ein neuer Eintrag angezeigt und man kann mit der Erfassung der Musikstücke beginnen.&lt;br /&gt;
&lt;br /&gt;
* Mit Klick auf '''MyMusik''' gelangt man auf die BE Listenansicht. Diese ist noch leer&lt;br /&gt;
* Mit Klick auf '''Neuer Datensatz'''. öffnet sich ein Formular, mit dem sich nun der erste Datensatz erfassen lässt&lt;br /&gt;
* Die gewünschten Werte eingeben und mit '''Speichern und Schliessen''' bestätigen&lt;br /&gt;
* Nun erscheint der erste Eintrag in der BE Listenansicht&lt;br /&gt;
* Diesen Vorgang wiederholen, bis alle Datensätze erfasst wurden&lt;br /&gt;
* Über der BE Listenansicht stehen nun die Panel-Layout Funktionen '''Suchen''', '''Sortieren''', '''Filtern''' und '''Anzeigen''' zur Verfügung&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[MetaModels_Beispielprojekt|Zurück zur Beispiel-Übersicht]] | [[MetaModels_Beispiel_2|Weiter zum Beispiel 2: Erstellung der Frontend-Ansicht]]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Installation_in_Unterverzeichnis</id>
		<title>Installation in Unterverzeichnis</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Installation_in_Unterverzeichnis"/>
				<updated>2013-04-15T11:06:33Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Aufruf Backend-Seiten */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|Version=ab Version 2.9&lt;br /&gt;
|Ext1=FolderURL}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Installation und Updates]]&lt;br /&gt;
&lt;br /&gt;
=Ausgangssituation=&lt;br /&gt;
Contao soll auf einem Server in einem eigenen Unterverzeichnis installiert werden. Dies kann aus verschiedenen Gründen erforderlich sein, beispielsweise:&lt;br /&gt;
# um das Rootverzeichnis sauber und übersichtlich zu halten&lt;br /&gt;
# weil mehrere Sites aus einem Rootverzeichnis zu hosten sind&lt;br /&gt;
# weil parallel zu Contao auch andere Applikationen gespeichert werden sollen&lt;br /&gt;
# weil neben den dynamischen Seiten von Contao auch statische Seiten gehostet werden&lt;br /&gt;
# usw.&lt;br /&gt;
&lt;br /&gt;
=Das Ziel=&lt;br /&gt;
Unter den unten beschriebenen Umgebungsbedingungen soll folgendes umgesetzt werden (alle Pfade sind nur Beispiele)&lt;br /&gt;
# Durch Aufruf von &amp;quot;http://www.meinedomain.de/&amp;quot; oder bei lokaler Installation &amp;quot;http://localhost/&amp;quot; soll die index.php in &amp;quot;www/cms/&amp;quot; aufgerufen werden&lt;br /&gt;
# Der Aufruf der Contao Seiten soll durch z.B. &amp;quot;http://www.meinedomain.de/index.html&amp;quot; oder &amp;quot;http://www.meinedomain.de/unterseiten/meine_unterseite.html&amp;quot; mit leicht lesbaren und suchmaschinenfreundlichen URLs erfolgen. Zu diesem Zweck ist auch FolderURL installiert.&lt;br /&gt;
# Die Navigation innerhalb der mit Contao realisierten Webiste soll ohne den Pfadteil .../cms/.. erfolgen. Also NICHT: &amp;quot;http://www.meinedomain.de/cms/unterseite/meine_unterseite.html&amp;quot;&lt;br /&gt;
# Wird eine statische Website im www-Rooverzeichnis z.B. &amp;quot;http://www.meinedomain.de/gibts_in_echt.html&amp;quot; aufgerufen, so soll diese auch angezeigt werden.&lt;br /&gt;
# Wird eine andere Seite oder Anwendung in einem außerhalb von Contao real existierenden Unterverzeichnis aufgerufen z.B. &amp;quot;http://www.meinedomain.de/onlinegame/&amp;quot; soll auf dieses geroutet werden.&lt;br /&gt;
&lt;br /&gt;
=Die technischen Umgebungsbedingungen=&lt;br /&gt;
Diese Anleitung bezieht sich auf die folgenden beispielhaften Umgebungsbedingungen:&lt;br /&gt;
# Der Server (oder die lokale Installation) hat ein Wurzelverzeichnis, z.B. &amp;quot;www&amp;quot;. Dieses wird nach Eingabe der domain &amp;quot;http://www.meinedomain.de/&amp;quot; oder bei lokaler Installation &amp;quot;http://localhost/&amp;quot; aufgerufen.&lt;br /&gt;
# Contao ist in ein Unterverzeichnis dieses &amp;quot;www&amp;quot; Wurzelverzeichnisses kopiert, z.B: &amp;quot;cms&amp;quot;. Der Pfad zu Contao lautet nun www/cms/. In diesem liegen nun die Ordner contao, plugins, system, templates, tl_files, typolight sowie u.a. die Datei .htaccess.default und die index.php&lt;br /&gt;
# Die Erweiterung &amp;quot;FolderURL&amp;quot; ist in Contao installiert&lt;br /&gt;
# Im Wurzelverzeichnis &amp;quot;www&amp;quot; befinden sich weitere Unterordner und/oder html/php files, die andere Anwendungen bzw. statische Webseiten beinhalten, die bei Bedarf erreichbar sein müssen.&lt;br /&gt;
Die Domainnamen, Pfade und Seiten sind natürlich nur Beispiele und müssen an die jeweilige Installation angepasst werden!&lt;br /&gt;
&lt;br /&gt;
=Die Umsetzung=&lt;br /&gt;
Grundsätzlich gibt es mehrere Lösungsvarianten. Die hier beschriebene Variante erfolgt unter Nutzung der Apache .htaccess Dateien. Diese können entweder offline mit einem beliebigen Editor erstellt/bearbeitet und dann per FTP auf den Server hochgeladen werden oder per FTP-fähigem Editor direkt online editiert werden (z.B. mit Notepad++ http://notepad-plus-plus.org/ - gibt es auch als portable Version unter http://portableapps.com/ bzw. http://portableapps.com/de )&lt;br /&gt;
&lt;br /&gt;
==Schritt 1 - Installation im Unterverzeichnis==&lt;br /&gt;
Contao wurde in ein Unterverzeichnis des Wurzelverzeichnisses am Server kopiert.&lt;br /&gt;
Beispiel:&lt;br /&gt;
Wurzelverzeichnis Server lautet &amp;quot;www&amp;quot;&lt;br /&gt;
Installationsverzeichnis Contao lautet &amp;quot;cms&amp;quot;. Der Pfad zu Contao lautet nun www/cms/. &lt;br /&gt;
(siehe Pkt 2. technische Umgebungsbedingungen)&lt;br /&gt;
&lt;br /&gt;
==Schritt 2 - Anpassen der .htaccess im WURZELVERZEICHNIS==&lt;br /&gt;
Als erstes ist die .htaccess im Wurzelverzeichnis anzupassen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 RewriteEngine On&lt;br /&gt;
 RewriteBase /&lt;br /&gt;
&lt;br /&gt;
 # in der folgenden Zeile den Text &amp;quot;cms&amp;quot;entsprechend dem gewählten Unterverzeichnis für Contao ggf. ändern&lt;br /&gt;
 RewriteCond %{REQUEST_URI} !^cms/.*&lt;br /&gt;
 &lt;br /&gt;
 # alternativ zur letzten Zeile oberhalb geht auch:&lt;br /&gt;
 # RewriteCond %{REQUEST_URI} !^(cms|verzeichnis1|verzeichnis2)/.*&lt;br /&gt;
 # wenn einige Verzeichnisse real existieren und NICHT von contao behandelt werden sollen!&lt;br /&gt;
 # mehrere Verzeichnisse sind einfach getrennt durch &amp;quot;|&amp;quot; nacheinander aufzulisten&lt;br /&gt;
&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
 RewriteCond %{REQUEST_FILENAME} !-d [OR]&lt;br /&gt;
 RewriteCond %{REQUEST_URI} ^/$&lt;br /&gt;
&lt;br /&gt;
 # in der folgenden Zeile ebenfalls den Text &amp;quot;cms&amp;quot; entsprechend dem gewählten Unterverzeichnis für Contao ändern&lt;br /&gt;
 RewriteRule ^(.*) /cms/$1 [L]&lt;br /&gt;
&lt;br /&gt;
 # die folgende Zeile ist nur erforderlich, wenn ALLE Seitenaufrufe mit .html-Endung an Contao gehen sollen&lt;br /&gt;
 # RewriteRule .*\.html$ index.php [L]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Erklärung:&lt;br /&gt;
Zuerst wird das Umschreiben von URLs aktiviert, wobei als Basis das aktuelle Verzeichnis festgesetzt wird (&amp;quot; RewriteEngine On &amp;quot;&lt;br /&gt;
und &amp;quot; RewriteBase / &amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Anschließend werden URLs die direkt auf das Unterverzeichnis &amp;quot;cms&amp;quot; verweisen vom Umschreiben ausgenommen (&amp;quot; RewriteCond %{REQUEST_URI} !^cms/.* &amp;quot;). Das ist auch für mehrere Verzeichnisse möglich, wenn man Inhalte außerhalb von Contao auf der Website hat.&lt;br /&gt;
&lt;br /&gt;
Sofern die in der URL aufgerufenen Verzeichnisse oder Files tatsächlich existieren, findet ebenfalls kein Umschreiben statt (&amp;quot; RewriteCond %{REQUEST_FILENAME} !-f &amp;quot; und &amp;quot; RewriteCond %{REQUEST_FILENAME} !-d [OR] &amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Alle anderen Aufrufe werden um das Unterverzeichnis ergänzt (&amp;quot; RewriteRule ^(.*) /cms/$1 [L] &amp;quot;).&lt;br /&gt;
&lt;br /&gt;
So wird aus http://www.meinedomain.de/index.html die URL http://www.meinedomain.de/cms/index.html - was weder Nutzer noch Suchmaschine zu sehen bekommen!&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist, dass sich im Wurzelverzeichnis keine index.php oder index.html Datei befinden darf. (Achtung auf Reste voheriger Installationen ;-)&lt;br /&gt;
&lt;br /&gt;
==Schritt 3 - Anpassen der .htaccess im INSTALLATIONSVERZEICHNIS==&lt;br /&gt;
Im Installationsverzeichnis von Contao kann nun praktisch unverändert die mitgelieferte .htaccess.default verwendet werden (natürlich muss die auf .htaccess umbenannt werden. Also das &amp;quot;.default&amp;quot; raus aus dem Dateinamen!&lt;br /&gt;
Hier die Beispielversion:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# Contao Open Source CMS&lt;br /&gt;
# Copyright (C) 2005-2011 Leo Feyer&lt;br /&gt;
#&lt;br /&gt;
# Formerly known as TYPOlight Open Source CMS.&lt;br /&gt;
#&lt;br /&gt;
# This program is free software: you can redistribute it and/or&lt;br /&gt;
# modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
# License as published by the Free Software Foundation, either&lt;br /&gt;
# version 3 of the License, or (at your option) any later version.&lt;br /&gt;
# &lt;br /&gt;
# This program is distributed in the hope that it will be useful,&lt;br /&gt;
# but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU&lt;br /&gt;
# Lesser General Public License for more details.&lt;br /&gt;
# &lt;br /&gt;
# You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
# License along with this program. If not, please visit the Free&lt;br /&gt;
# Software Foundation website at &amp;lt;http://www.gnu.org/licenses/&amp;gt;.&lt;br /&gt;
#&lt;br /&gt;
# PHP version 5&lt;br /&gt;
# @copyright  Leo Feyer 2005-2011&lt;br /&gt;
# @author     Leo Feyer &amp;lt;http://www.contao.org&amp;gt;&lt;br /&gt;
# @license    LGPL&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
# Disable ETags&lt;br /&gt;
# @see http://developer.yahoo.com/performance/rules.html#etags&lt;br /&gt;
##&lt;br /&gt;
FileETag None&lt;br /&gt;
&lt;br /&gt;
##&lt;br /&gt;
# Prevent access to the Contao template files&lt;br /&gt;
##&lt;br /&gt;
&amp;lt;FilesMatch &amp;quot;\.(tpl|html5|xhtml)$&amp;quot;&amp;gt;&lt;br /&gt;
  Order allow,deny&lt;br /&gt;
  Deny from all&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_mime.c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Serve the correct content type for .htc files (CSS3 PIE)&lt;br /&gt;
  # @see http://css3pie.com/documentation/known-issues/#content-type&lt;br /&gt;
  ##&lt;br /&gt;
  AddType text/x-component .htc&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_deflate.c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Use mod_deflate to compress JavaScript, CSS, XML, HTML and PHP files.&lt;br /&gt;
  # @see http://developer.yahoo.com/performance/rules.html#gzip&lt;br /&gt;
  ##&lt;br /&gt;
  &amp;lt;FilesMatch &amp;quot;\.(css|js|xml|html?|php)$&amp;quot;&amp;gt;&lt;br /&gt;
    SetOutputFilter DEFLATE&lt;br /&gt;
  &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_headers.c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Disable ETags&lt;br /&gt;
  # @see http://developer.yahoo.com/performance/rules.html#etags&lt;br /&gt;
  ##&lt;br /&gt;
  Header unset ETag&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Add a Vary Accept-Encoding header for the compressed resources. If you&lt;br /&gt;
  # modify the file types above, make sure to change them here accordingly.&lt;br /&gt;
  # @see http://developer.yahoo.com/performance/rules.html#gzip&lt;br /&gt;
  ##&lt;br /&gt;
  &amp;lt;FilesMatch &amp;quot;\.(js|css|xml|gz)$&amp;quot;&amp;gt;&lt;br /&gt;
    Header append Vary Accept-Encoding&lt;br /&gt;
  &amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_expires.c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Activate the module&lt;br /&gt;
  ##&lt;br /&gt;
  ExpiresActive On&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Specify an expiration 30 days in the future for images, JavaScripts and&lt;br /&gt;
  # CSS files. Edit or remove the lines to set up your own expiration logic.&lt;br /&gt;
  # @see http://developer.yahoo.com/performance/rules.html#expires&lt;br /&gt;
  ##&lt;br /&gt;
  ExpiresByType image/png A2592000&lt;br /&gt;
  ExpiresByType image/gif A2592000&lt;br /&gt;
  ExpiresByType image/jpg A2592000&lt;br /&gt;
  ExpiresByType image/jpeg A2592000&lt;br /&gt;
  ExpiresByType text/javascript A2592000&lt;br /&gt;
  ExpiresByType application/x-javascript A2592000&lt;br /&gt;
  ExpiresByType application/javascript A2592000&lt;br /&gt;
  ExpiresByType text/css A2592000&lt;br /&gt;
  ExpiresByType image/x-icon A2592000&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;IfModule mod_rewrite.c&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Activate the module&lt;br /&gt;
  ##&lt;br /&gt;
  RewriteEngine On&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Set the RewriteBase if your Contao installation is in a subdirectoy and&lt;br /&gt;
  # the rewrite rules are not working properly. Usage examples:&lt;br /&gt;
  #&lt;br /&gt;
  #   RewriteBase /contao-2.9.0&lt;br /&gt;
  #   RewriteBase /path/to/contao&lt;br /&gt;
  #&lt;br /&gt;
  # Uncomment the following line to set the RewriteBase.&lt;br /&gt;
  ##&lt;br /&gt;
  RewriteBase /&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Contao usually does not pass absolute URLs via GET, therefore the&lt;br /&gt;
  # following rules block all requests that try to pass a URL or the /etc/&lt;br /&gt;
  # directory as parameter (malicious requests).&lt;br /&gt;
  ##&lt;br /&gt;
  RewriteCond %{REQUEST_URI} (ftp|https?):|/etc/ [NC,OR]&lt;br /&gt;
  RewriteCond %{QUERY_STRING} (ftp|https?):|/etc/ [NC]&lt;br /&gt;
  RewriteRule .* - [F,L]&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Uncomment the following lines and replace &amp;quot;domain.com&amp;quot; with your domain&lt;br /&gt;
  # name to redirect requests without &amp;quot;www&amp;quot; to the correct domain. &lt;br /&gt;
  ##&lt;br /&gt;
  #RewriteCond %{HTTP_HOST} ^domain\.com [NC]&lt;br /&gt;
  #RewriteRule (.*) http://www.domain.com/$1 [R=301,L]&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # If you cannot use mod_deflate, uncomment the following lines to load a&lt;br /&gt;
  # compressed .gz version of the bigger Contao JavaScript and CSS files.&lt;br /&gt;
  ##&lt;br /&gt;
  #AddEncoding gzip .gz&lt;br /&gt;
  #&amp;lt;FilesMatch &amp;quot;\.js\.gz$&amp;quot;&amp;gt;&lt;br /&gt;
  #  AddType &amp;quot;text/javascript&amp;quot; .gz&lt;br /&gt;
  #&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
  #&amp;lt;FilesMatch &amp;quot;\.css\.gz$&amp;quot;&amp;gt;&lt;br /&gt;
  #  AddType &amp;quot;text/css&amp;quot; .gz&lt;br /&gt;
  #&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
  #RewriteCond %{HTTP:Accept-encoding} gzip&lt;br /&gt;
  #RewriteCond %{REQUEST_FILENAME} \.(js|css)$&lt;br /&gt;
  #RewriteCond %{REQUEST_FILENAME}.gz -f&lt;br /&gt;
  #RewriteRule ^(.*)$ $1.gz [QSA,L]&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # Do not rewrite requests for static files or folders such as style sheets,&lt;br /&gt;
  # images, movies or text documents.&lt;br /&gt;
  ##&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-f&lt;br /&gt;
  RewriteCond %{REQUEST_FILENAME} !-d&lt;br /&gt;
&lt;br /&gt;
  ##&lt;br /&gt;
  # By default, Contao adds &amp;quot;.html&amp;quot; to the generated URLs to simulate static&lt;br /&gt;
  # HTML documents. If you change the URL suffix in the back end settings, make&lt;br /&gt;
  # sure to change it here accordingly!&lt;br /&gt;
  #&lt;br /&gt;
  #   RewriteRule .*\.html$ index.php [L]   # URL suffix .html&lt;br /&gt;
  #   RewriteRule .* index.php [L]          # No URL suffix&lt;br /&gt;
  #   RewriteRule .*\.txt$ index.php [L]    # URL suffix .txt&lt;br /&gt;
  #&lt;br /&gt;
  # If you are using mod_cache, it is recommended to use the RewriteRule below,&lt;br /&gt;
  # which adds the query string to the internal URL:&lt;br /&gt;
  # &lt;br /&gt;
  #   RewriteRule (.*\.html)$ index.php/$1 [L]&lt;br /&gt;
  #&lt;br /&gt;
  # Note that not all environments support mod_rewrite and mod_cache.&lt;br /&gt;
  ##&lt;br /&gt;
  # RewriteRule .*\.html$ index.php [L]&lt;br /&gt;
  # Rewrite TYPOlight URLs&lt;br /&gt;
&lt;br /&gt;
  # mit den folgenden zwei Zeilen sollte es immer klappen, notwendig ist im Prinzip&lt;br /&gt;
  # nur jeweils eine davon, siehe Erklärung weiter oben&lt;br /&gt;
  RewriteRule .*$ index.php [L]&lt;br /&gt;
  RewriteRule (.*\.html)$ index.php/$1 [L]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu beachten ist:&lt;br /&gt;
- die RewriteBase der .htaccess im Installationsverzeichnis darf KEIN Unterverzeichnis beinhalten, sondern lautet: &amp;quot;RewriteBase /&amp;quot; . Die Umleitung auf den Unterordner &amp;quot;cms&amp;quot; wurde ja schon von der .htaccess im Wurzelverzeichnis übernommen!&lt;br /&gt;
- die RewriteRule am Ende der .htaccess ist auf zwei Regeln gestellt &lt;br /&gt;
# &amp;quot;RewriteRule .*$ index.php [L]&amp;quot; - dadurch werden auch Dateinamen gültig aufgerufen, wenn der User das abschließende .html vergisst oder den Dateinamen irrtümlich als Pfad eingibt,&lt;br /&gt;
#  &amp;quot; RewriteRule (.*\.html)$ index.php/$1 [L]&amp;quot; - falls mod_cache verwendet wird, sonst kann es zu merkwürdigem Verhalten kommen.&lt;br /&gt;
&lt;br /&gt;
(Anm.: eine Umschreibung, dass bei Eingabe der Endung .htm (statt .html) auch richtig umgeschrieben wird, wird noch gesucht)&lt;br /&gt;
&lt;br /&gt;
==Schritt 4 - Anpassen im Contao Backend==&lt;br /&gt;
Im Contao Backend ist der Installationspfad unter Einstellungen &amp;gt; Globale Einstellungen &amp;gt; Relativer Pfad zum Contao-Verzeichnis LEER zu lassen (weil diese Aufgabe von der .htaccess im Wurzelverzeichnis übernommen wird).&lt;br /&gt;
&lt;br /&gt;
Alternativ kann man das auch in der localconfig.php im Unterverzeichnis system von Contao manuell einstellen.&lt;br /&gt;
Pfad/Datei gemäß Beispiel also: www/cms/system/localconfig.php&lt;br /&gt;
Wobei die Zeile zur Einstellung des Websitepfades leer sein muss&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$GLOBALS['TL_CONFIG']['websitePath'] = '';&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine manuelle Änderung kann nach einem Update oder dem Verschieben der Installation erforderlich sein, wenn sich das Contao-BE nicht aufrufen lässt. Zudem stellt Contao bei Neuinstallation den Pfad automatisch auf das Unterverzeichnis ein, was in diesem Fall aber nicht erforderlich ist, sondern zu einem Fehler führt.&lt;br /&gt;
&lt;br /&gt;
==Schritt 5 - Anpassen von Verzeichnissen außerhalb Contao==&lt;br /&gt;
Sollen Dokumente in Verzeichnissen außerhalb von Contao ohne Einschränkungen aufgerufen werden können, so muss man im jeweiligen Unterverzeichnis (unterhalb des Wurzelverzeichnisses) eine eigene .htaccess Datei anlegen. Diese muss nur die Zeile&lt;br /&gt;
&amp;lt;source lang=&amp;quot;apache&amp;quot;&amp;gt;&lt;br /&gt;
 RewriteEngine Off&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
beinhalten. Dadurch kann auf alle *.htm, *.html und *.php-Seiten in diesem Unterverzeichnis zugegriffen werden. Alternativ kann diese .htaccess auch eigene Regeln beinhalten.&lt;br /&gt;
&lt;br /&gt;
Sofern diese Verzeichnisse aber in der .htaccess im Wurzelverzeichnis wie beschrieben angegeben worden sind, ist dies nicht zwingend erforderlich.&lt;br /&gt;
&lt;br /&gt;
=Ergebnis: Aufruf der Seiten=&lt;br /&gt;
==Aufruf Frontend-Seiten==&lt;br /&gt;
Folgendes sollte nun funktionieren (an Hand der Beispielvorgaben):&lt;br /&gt;
&lt;br /&gt;
Anmerkungen&lt;br /&gt;
Die Datei &amp;quot;gibt_es.html&amp;quot; (bzw. *.htm oder *.php) bezeichnet eine physikalisch(?) existente Datei.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Folder &amp;quot;ausserhalb_von_contao&amp;quot;  bezeichnet einen physikalisch(?) existenten Ordner, der sich NICHT im Contao Installationsverzeichnis befindet und auch nicht durch Contao bzw. FolderURL erzeugt wird.&amp;lt;br /&amp;gt;&lt;br /&gt;
Die Datei &amp;quot;sonst_eine_cmsseite&amp;quot; bezeichnet eine Seite, die durch Contao bereitgestellt wird.&amp;lt;br /&amp;gt;&lt;br /&gt;
Der Folder &amp;quot;cmsunterordner&amp;quot;  bezeichnet einen &amp;quot;virtuellen&amp;quot; Ordner, der durch Contao bzw. FolderURL erzeugt wird.&lt;br /&gt;
&lt;br /&gt;
'''Aufrufe an Contao'''&lt;br /&gt;
*Aufruf per &amp;quot;http://www.meinedomain.de/index.html&amp;quot; =&amp;gt; geht ok an contao&lt;br /&gt;
*Aufruf per &amp;quot;http://www.meinedomain.de/sonst_eine_cmsseite.html&amp;quot; =&amp;gt; geht ok an contao&lt;br /&gt;
*Aufruf per &amp;quot;http://www.meinedomain.de/sonst_eine_cmsseite&amp;quot; =&amp;gt; geht ok an contao wie &amp;quot;http://meinedomain.de/sonst_eine_seite.html&lt;br /&gt;
*Aufruf per &amp;quot;http://www.meinedomain.de/sonst_eine_cmsseite/&amp;quot; =&amp;gt; geht ok an contao wie &amp;quot;http://meinedomain.de/sonst_eine_seite.html&lt;br /&gt;
*Aufruf per &amp;quot;http://www.meinedomain.de/cmsunterordner/sonst_eine_cmsseite.html&amp;quot; =&amp;gt; geht ok an contao&lt;br /&gt;
*Contao verlinkt die Seiten beim Rendern richtig ohne das .../cms/.. (Installationsverzeichnis) dazwischen&lt;br /&gt;
&lt;br /&gt;
'''Aufrufe außerhalb von Contao'''&lt;br /&gt;
*Aufruf von &amp;quot;http://www.meinedomain.de/gibt_es.htm&amp;quot; funktioniert, ruft die real bestehende *.htm Seite im Wurzelverzeichnis auf&lt;br /&gt;
*Aufruf von &amp;quot;http://www.meinedomain.de/gibt_es.html&amp;quot; funktioniert, ruft die real bestehende *.html Seite im Wurzelverzeichnis auf&lt;br /&gt;
*Aufruf von &amp;quot;http://www.meinedomain.de/ausserhalb_von_contao/gibt_es.php&amp;quot; funktioniert, ruft die real bestehende *.php Seite im Wurzelverzeichnis auf&lt;br /&gt;
*Aufruf von &amp;quot;http://www.meinedomain.de/ausserhalb_von_contao/&amp;quot; funktioniert und öffnet die default html od. php-Seite (index.html, index.htm, index.php) in diesem Unterordner (parallel zu Contao)&lt;br /&gt;
*Aufruf von &amp;quot;http://www.meinedomain.de/ausserhalb_von_contao/gibt_es.htm&amp;quot; oder &amp;quot;http://meinedomain.de/ausserhalb_von_contao/gibt_es.html&amp;quot; oder &amp;quot;http://meinedomain.de/ausserhalb_von_contao/gibt_es.php&amp;quot; funktionieren und öffnen die jeweiligen Seiten &lt;br /&gt;
* für von anderen Applikationen bereitgestellten Seiten in eigenen Unterverzeichnissen unter dem Wurzelverzeichnis und parallell zu Contao sind im jeweiligen Verzeichnis zumeist eigene .htaccess Dateien erforderlich&lt;br /&gt;
&lt;br /&gt;
Sofern die aufgerufenen Seiten ausserhalb von Contao nicht bestehen, bzw. keine eigene Applikation dahintersteht&lt;br /&gt;
* erscheint die in Contao für nichtexistente Seiten eingestellte Fehlermeldung/-seite (404)&lt;br /&gt;
* ausgenommen die .htaccess im Ordner der aufgerufenen Seite bestimmt ein anderes Verhalten (z.B. mit RewriteEngine Off)&lt;br /&gt;
&lt;br /&gt;
==Aufruf Backend-Seiten==&lt;br /&gt;
Das Contao Backend kann nun entweder über&lt;br /&gt;
 http://www.meinedomain.de/contao/ &lt;br /&gt;
oder über&lt;br /&gt;
 http://www.meinedomain.de/cms/contao&lt;br /&gt;
erfolgen.&lt;br /&gt;
&lt;br /&gt;
Cave:&lt;br /&gt;
Wenn man schon mal im Backend angemeldet war, dann kann es sein, das man immer einen Umleitungsfehler bekommt. Einmal die Cookies von dieser Domain löschen und das Problem ist beseitigt.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Bearbeiten von Catalog und Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2012-07-20T09:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_%26_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Catalog &amp; Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_%26_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2012-07-20T09:16:21Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Catalog und Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2012-07-20T09:16:06Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: Die Seite wurde neu angelegt: „{{AppliesTo |Version=ab 2.11 |Ext1=Catalog ab 2.0beta1 }} Category:Extensions Category:Catalog  == '''Mitgliedergruppen  Vergabe per Formular und Katalog'…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|Version=ab 2.11&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Bearbeiten von Catalog und Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Bearbeiten_von_Catalog_und_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2012-07-20T09:14:41Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: Die Seite wurde neu angelegt: „{{AppliesTo |Version=ab 2.11 |Ext1=Catalog ab 2.0beta1 }} Category:Extensions Category:Catalog  == '''Mitgliedergruppen  Vergabe per Formular und Katalog'…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|Version=ab 2.11&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_%26_Formular_vergibt_Mitglieder-Gruppenzuweisung</id>
		<title>Catalog &amp; Formular vergibt Mitglieder-Gruppenzuweisung</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_%26_Formular_vergibt_Mitglieder-Gruppenzuweisung"/>
				<updated>2012-07-20T09:08:49Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|Version=ab 2.11.2&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
== '''Mitgliedergruppen  Vergabe per Formular und Katalog''' ==&lt;br /&gt;
&lt;br /&gt;
{{Anmerkung|Die Mitgliedergruppen Funktion in Contao ist wirklich ein feine Sache. Wenn man sie noch flexibler gestalten könnte,&lt;br /&gt;
würden man noch mehr nette Features umsetzen können.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
''Ein neuer User bekommt die Gruppe &amp;quot;Neuling&amp;quot; und &amp;quot;Mitglied&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
Alle Neulinge sehen speziell für sie eingerichtete Werbeinfos/Funktion/Anmelde-infos.&amp;lt;br&amp;gt;&lt;br /&gt;
Zudem haben Neulinge nicht gleich vollen Zugang.&lt;br /&gt;
&lt;br /&gt;
Meldet er sich für einen Newsletter oder bewirbt sich über ein Formular, oder erstellen sein eigenes Karteprofil über den Katalog, so kann er die Gruppe &amp;quot;vip&amp;quot; erlangen und verliert den Status &amp;quot;neuling&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Dadurch verändert sich für ihn die Website und die Zugangsberechtigung.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein anderer User registriert sich als &amp;quot;Partner&amp;quot; und bekommt erweiterte Berechtigungen,&amp;lt;br&amp;gt;&lt;br /&gt;
soll aber auch seinen Account umwandeln können zu ein Normales Mitglied.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ein Käufer soll nach Teilnahme an einem Gewinnspiel besondere Produkte sehen können......''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Um diese Vielfalt nutzen zu können gibt es hier ein kleines Script das über einen Hook gestartet wird.}}&lt;br /&gt;
&lt;br /&gt;
{{msgInfo|Bitte keine Experimente auf produktiven Plattformen. Immer brav im Sandkasten testen. Niemand übernimmt die Garantie für etwaige Schäden}}&lt;br /&gt;
{{msgInfo|Dieses Script wurde getestet mit Contao 2.11.2 ## efg 1.16.0 stable und catalog 2.0.0 beta2 61}}&lt;br /&gt;
&lt;br /&gt;
== Funktion erstellen ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''FORMULAR(GENERATOR) GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Für die Werteübermittlung wird ein verstecktes Feld angelegt mit Namen &amp;quot;'''dex'''&amp;quot; zum hinzufügen einer Gruppe&amp;lt;br&amp;gt;&lt;br /&gt;
und(oder) ein Feld  mit namen &amp;quot;'''kil'''&amp;quot; zum entfernen einer Gruppe.&amp;lt;br&amp;gt;&lt;br /&gt;
Dem versteckten Feld gibt ihr einen echten Wert und einen eigenen Sicherheitscode(Kontrollwert) ein.&amp;lt;br&amp;gt;&lt;br /&gt;
Das Script überprüft anhand einer Formel ob der Sicherheitscode gleich dem echten Wert ist.&amp;lt;br&amp;gt;&lt;br /&gt;
Der Ausdruck sieht so aus &amp;quot;'''id*cz#####'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
In das Sternchen kommt die echte ID der Mitgliedergruppe und die Raute bekommt den Sicherheitscode.&amp;lt;br&amp;gt;&lt;br /&gt;
Den Code errechnet ihr euch selbst indem ihr die Formel benutzt:&amp;lt;br&amp;gt;&lt;br /&gt;
FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Beispiel für Gruppe ID 8:'''   8*15=120 +344=464 *23=10672&amp;lt;br&amp;gt;&lt;br /&gt;
Unser Wert für HIDDEN Feld ist also &amp;quot;'''id8cz10672'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Bei manipulationsversuche wird das Script also nicht ausgeführt.&amp;lt;br&amp;gt;&lt;br /&gt;
{{msgWarning|Die Formel MÜSST ihr natürlich noch ändern, sonst ist die Sicherheit für die Katz.}}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Würde ich ein Anmeldeformular nun um das HIDDEN Feld &amp;quot;'''dex'''&amp;quot; mit Wert &amp;quot;id8cz10672&amp;quot; erweitern,&amp;lt;br&amp;gt;&lt;br /&gt;
so wird der User nach abschicken des Formulars die Gruppenzuweisung mit id 8 bekommen.&amp;lt;br&amp;gt;&lt;br /&gt;
Gebe ich dem HIDDEN Feld &amp;quot;'''kil'''&amp;quot; den Wert &amp;quot;id8cz10672&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
so wird dem User nach abschicken die Gruppenzuweisung ID 8 entzogen&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CATALOG GRUPPENZUWEISUNG'''&lt;br /&gt;
&lt;br /&gt;
Hier ebenfalls ein HIDDEN Feld anlegen. Bis dato ist im Catalog keine vorhanden, daher folgendes:&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unter '''modules/catalog/templates/'''&amp;lt;br&amp;gt;&lt;br /&gt;
befindet sich das catalog_edit.xyz  Template das ihr modifiziert oder euch ''erstmal eine Kopie davon anlegt.''&amp;lt;br&amp;gt;&lt;br /&gt;
Im Template setzt ihr unter dem hidden REQUEST_TOKEN ein neues Hidden Feld&amp;lt;br&amp;gt;&lt;br /&gt;
'''&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; value=&amp;quot;id8cz10672&amp;quot; name=&amp;quot;dex&amp;quot;/&amp;gt;'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das neue Template dann auch im CatalogEdit Modul auswählen. &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Jetzt zum Eigentlichen...'''&amp;lt;br&amp;gt;&lt;br /&gt;
unter '''modules/''' legt ihr einen neuen Ordner an zb. &amp;quot;'''eigenefunktionen'''&amp;quot;&amp;lt;br&amp;gt;&lt;br /&gt;
Jetzt erstellt darin eine &amp;quot;'''Extrafunktionen.php'''&amp;quot; mit folgedem Inhalt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!defined('TL_ROOT')) die('You can not access this file directly!');&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * TYPOlight webCMS&lt;br /&gt;
 *&lt;br /&gt;
 * The TYPOlight webCMS is an accessible web content management system that&lt;br /&gt;
 * specializes in accessibility and generates W3C-compliant HTML code. It&lt;br /&gt;
 * provides a wide range of functionality to develop professional websites&lt;br /&gt;
 * including a built-in search engine, form generator, file and user manager,&lt;br /&gt;
 * CSS engine, multi-language support and many more. For more information and&lt;br /&gt;
 * additional TYPOlight applications like the TYPOlight MVC Framework please&lt;br /&gt;
 * visit the project website http://www.typolight.org.&lt;br /&gt;
 *&lt;br /&gt;
 * This is not a complete extension. Its only a little Script for group assignment over form submitted and catalog edited&lt;br /&gt;
 * Script powered by www.mediadistrict.de &lt;br /&gt;
 * PHP version 5&lt;br /&gt;
 * @copyright  MediaDistrict e.K.&lt;br /&gt;
 * @author     Marco Groß&lt;br /&gt;
 * @package    &lt;br /&gt;
 * @license    free for all :) &lt;br /&gt;
 * @filesource this file only&lt;br /&gt;
 */ &lt;br /&gt;
class Extrafunktionen extends Frontend&lt;br /&gt;
{&lt;br /&gt;
	public function gruppenzuweisung($arrPost, $arrForm, $arrFiles){&lt;br /&gt;
&lt;br /&gt;
		/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($arrPost[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $arrPost[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
	public function gruppenzuweisungcat(){&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
				/////////////////////////////////////////// Automatische Gruppenzuweisung BEGINN	&lt;br /&gt;
		$this-&amp;gt;import('FrontendUser','user');&lt;br /&gt;
		$user_id = $this-&amp;gt;user-&amp;gt;id;  &lt;br /&gt;
		$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
		$ok = 0;$okkill = 0;&lt;br /&gt;
		$addgroup_id = array();$killgroup_id = array();&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd8602   = ID 2 ok&lt;br /&gt;
		// Beispiel Code id2&amp;amp;cd7489   = ID 2 fail&lt;br /&gt;
		// FORMEL zum manuellen codieren ((x * 15) + 344) * 23;&lt;br /&gt;
		// FORMEL zum auto decodieren ((x / 23) - 344) / 15;&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;dex&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;dex&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						} &lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$ok = 1;&lt;br /&gt;
						$addgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					} &lt;br /&gt;
				}&lt;br /&gt;
				//print_r($codenumber[$next]);&lt;br /&gt;
				&lt;br /&gt;
			&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($_REQUEST[&amp;quot;kil&amp;quot;]){// muss Hiddenfeld haben&lt;br /&gt;
				$inhalt = $_REQUEST[&amp;quot;kil&amp;quot;];&lt;br /&gt;
				$alle = explode(&amp;quot;&amp;amp;&amp;quot;, $inhalt);&lt;br /&gt;
				$idnumber = array();&lt;br /&gt;
				$codenumber = array();&lt;br /&gt;
				for ($next = 0; $next &amp;lt;= count($alle)-1; $next++){&lt;br /&gt;
					$zeichen = preg_split('/[id.cz]/', $alle[$next], -1);&lt;br /&gt;
					$newarray = array();&lt;br /&gt;
					for ($x = 0; $x &amp;lt;= count($zeichen)-1; $x++){//neuen Index&lt;br /&gt;
						if($zeichen[$x]!=''){&lt;br /&gt;
						array_push($newarray, $zeichen[$x]);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
					&lt;br /&gt;
					$idnumber[$next] = $newarray[0];&lt;br /&gt;
					$codenumber[$next] = $newarray[1];&lt;br /&gt;
					$codenumber[$next] = (($codenumber[$next] / 23) - 344) / 15;// Sicherheitscode dekodieren&lt;br /&gt;
					if ($codenumber[$next] == floor($codenumber[$next]) &amp;amp;&amp;amp; $codenumber[$next] == $idnumber[$next]){// muss ganze Zahl sein und mit ID übereinstimmen&lt;br /&gt;
						$okkill = 1;&lt;br /&gt;
						$killgroup_id[$next] = $idnumber[$next];&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
		$memberGroups = $this-&amp;gt;Member-&amp;gt;groups;&lt;br /&gt;
		for ($addit = 0; $addit &amp;lt;= count($addgroup_id)-1; $addit++){//neuen Index&lt;br /&gt;
				// ---------------- neuer Gruppe zuweisen ---------------------------------&lt;br /&gt;
				 if ($ok == 1 &amp;amp;&amp;amp; !in_array($addgroup_id[$addit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn nicht schon vorhanden&lt;br /&gt;
				  $memberGroups[] = $addgroup_id[$addit];//array push&lt;br /&gt;
&lt;br /&gt;
				 }&lt;br /&gt;
		}&lt;br /&gt;
		for ($killit = 0; $killit &amp;lt;= count($killgroup_id)-1; $killit++){//neuen Index&lt;br /&gt;
				// ---------------- Gruppe entfernen ---------------------------------&lt;br /&gt;
				$this-&amp;gt;import('FrontendUser', 'Member');&lt;br /&gt;
				if ($okkill == 1 &amp;amp;&amp;amp; in_array($killgroup_id[$killit], $this-&amp;gt;Member-&amp;gt;groups)){//wenn vorhanden&lt;br /&gt;
					$key = array_search($killgroup_id[$killit], $memberGroups);// gesuchte Element killen&lt;br /&gt;
					unset($memberGroups[$key]);// Entfernt das gekillte Arrayelement um Index neu aufzubauen&lt;br /&gt;
					$memberGroups = array_values($memberGroups);// Array mit fortlaufendem Index erzeugen um Lücken zu entfernen&lt;br /&gt;
				}&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		if ($ok == 1 || $okkill == 1){// Tabelle beschreiben&lt;br /&gt;
		    $group_ids = serialize($memberGroups); &lt;br /&gt;
		    $this-&amp;gt;Database-&amp;gt;prepare(&amp;quot;UPDATE tl_member SET groups = ? WHERE id = ?&amp;quot;)-&amp;gt;execute($group_ids, $user_id); &lt;br /&gt;
		}&lt;br /&gt;
		///////////////////////////////////////// Automatische Gruppenzuweisung ENDE&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
HINWEIS: Bei der eigenen Funktion darf es in der PHP kein Close Tag geben. Das &amp;quot;?&amp;gt;&amp;quot; darf hier am Ende nicht stehen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kurz zur Erläuterung'''&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisung&amp;quot; Funktion ist für das abschicken von Formulardaten&amp;lt;br&amp;gt;&lt;br /&gt;
Die &amp;quot;gruppenzuweisungcat&amp;quot; Funktion ist eine seperate für das abschicken von Katalog(item)daten, da es von der &amp;lt;br&amp;gt;ContaoCore Routine nicht erfasst wird.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Funktion starten ==&lt;br /&gt;
&lt;br /&gt;
Zum Schluß müssen wir nur noch festlegen wann und wo wir diese Funktion abfrufen möchten.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Im Ordner '''system/config/'''&amp;lt;br&amp;gt;&lt;br /&gt;
die Datei '''dcaconfig.php''' bearbeiten und folgendes einsetzen:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_HOOKS']['processFormData'][] = array('Extrafunktionen', 'gruppenzuweisung');&lt;br /&gt;
//$GLOBALS['TL_HOOKS']['catalogFrontendUpdate'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
$GLOBALS['TL_HOOKS']['catalogFrontendInsert'][] = array('Extrafunktionen', 'gruppenzuweisungcat');&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel wird unsere Funktion nach dem Abschicken eines Formulars ausgeführt und nachdem der User (im FE) &amp;lt;br&amp;gt;einen neuen KatalogItem erstellt hat. Je nach dem was man erreichen möchte setzt man es hier fest.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen</id>
		<title>Catalog mit Frontend-Editing und Workflow erstellen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen"/>
				<updated>2011-12-01T17:19:37Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Benötigte Erweiterungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Kurzbeschreibung=&lt;br /&gt;
Hier geht es darum, wie man Items im Frontend erstellen und bearbeiten kann. Anhand eines Immobilienkataloges wird auch noch die Einrichtung eines Workflows vorgestellt. Zum Schluss soll es dem Besucher der Seite noch möglich sein Kontakt zu dem Seitenbetreiber aufzunehmen (mithilfe eines Formulars bei dem Item).&lt;br /&gt;
Hier bei dem Beispiel werden exemplarisch zwei Arten von Immobilien angelegt (Haus zum Kaufen und Hotelzimmer).&lt;br /&gt;
Bei diesem Beispiel ist die Backend-Ansicht von den Items nicht wirklich wichtig und wurde auch vernachlässigt, da alle Items über das Frontend verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
=Benötigte Erweiterungen=&lt;br /&gt;
* catalog&lt;br /&gt;
** backend_filterwiz&lt;br /&gt;
** backend_tabletree&lt;br /&gt;
** DC_DynamicTable&lt;br /&gt;
** taxonomy&lt;br /&gt;
* catalogitemuseridfield (für den Workflow wichtig, da damit die Items dem User zugewiesen werden)&lt;br /&gt;
* catalog_mailer&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein und man sollte die Beschreibung der einzelnen Felder gelesen haben.&lt;br /&gt;
* Erstellung von Taxonomie&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
** Seitenstruktur bearbeiten&lt;br /&gt;
** Module anlegen&lt;br /&gt;
** Templates bearbeiten&lt;br /&gt;
** Mitgliederbereich einrichten (für 2 Gruppen:Makler und Makler-Admins) &lt;br /&gt;
&lt;br /&gt;
=Erstellen der Grundlagen im Backend=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Erstellung von neuen Seiten in der Seitenstruktur==&lt;br /&gt;
&lt;br /&gt;
* Startseite (Hier wird catalogfeatured eingesetzt)&lt;br /&gt;
** Immobilien Liste (Filter und Liste der Immobilien)&lt;br /&gt;
*** Immobilien Details (die Detailseite von einem Item)&lt;br /&gt;
* Geschützer Bereich&lt;br /&gt;
** Immobilien Anlegen (Für normale Makler)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
** Immobilien Anlegen Administration (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-sitestructure.png|Cat Sitestructure]]&lt;br /&gt;
&lt;br /&gt;
==Taxonomie (Bedingung)==&lt;br /&gt;
&lt;br /&gt;
Die Taxonomien sind für die Kategorien und für die Gebiete der Items&lt;br /&gt;
&lt;br /&gt;
Man erstellt sich zuerst die Kategorien und die Optionen. Wobei man hier wie bei einem Baum Verschachtelungen vornimmt:&lt;br /&gt;
&lt;br /&gt;
* Immobilien&lt;br /&gt;
** Immo Art&lt;br /&gt;
*** Haus&lt;br /&gt;
**** Miethaus&lt;br /&gt;
**** Ferienhaus&lt;br /&gt;
**** Haus zum kaufen&lt;br /&gt;
*** Hotel&lt;br /&gt;
**** Hotelzimmer&lt;br /&gt;
** Immo Gebiete&lt;br /&gt;
*** Bizerte&lt;br /&gt;
*** Jendouba&lt;br /&gt;
*** Beja&lt;br /&gt;
*** etc.&lt;br /&gt;
&lt;br /&gt;
Das Ergebniss sollte ungefähr so aussehen wie auf diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-taxonomy.png|Cat Taxonomy]]&lt;br /&gt;
&lt;br /&gt;
==Erstellen von einem Katalog mit Feldtypen==&lt;br /&gt;
&lt;br /&gt;
===Neuer Katalog===&lt;br /&gt;
&lt;br /&gt;
Zuerst erstellt man mit einem Klick auf Neuer Katalog einen neuen Katalog und stellt den wie folgt ein:&lt;br /&gt;
* Name von dem Katalog angeben&lt;br /&gt;
* einen Tabellennamen angeben (die Tabelle wird automatisch erzeugt). Bitte '''keine Tabellen mit tl_* anlgegen''', da diese dann von Contao immer als zu löschen vorgemerkt werden beim aktualisieren der Datenbank.&lt;br /&gt;
* Alias und Felder veröffentlichen kann erst später angegeben werden, wenn diese Felder vorhanden sind.&lt;br /&gt;
* Sprung zur Seite: Angabe der Detailansicht&lt;br /&gt;
* Suche - Suchbar -&amp;gt; aktivieren (keine Bedingung angeben)&lt;br /&gt;
* Alle weiteren Einstellungen werden erst später vorgenommen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat1.png|Cat erstellen Bild1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat2.png|Cat erstellen Bild2]]&lt;br /&gt;
&lt;br /&gt;
===Felder definieren für den Katalog Merkzettel===&lt;br /&gt;
Es werden folgende Felder angelegt (Einstellungen die nicht vorgenommen werden, sind nicht aufgelistet):&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields1.png|Cat Felder erstellen]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields2.png|Cat Neues Feld]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; style=&amp;quot;color:#e76700;&amp;quot; |''Feldtypen für die Items''&lt;br /&gt;
|-&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Spaltenname&lt;br /&gt;
!Typ&lt;br /&gt;
!Einstellungen&lt;br /&gt;
|-&lt;br /&gt;
|Titel&lt;br /&gt;
|immo_titel&lt;br /&gt;
|text&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Sortierungs-Dropdown aktivieren&lt;br /&gt;
** Sortier-Modus -&amp;gt; Gruppieren anhand der ersten zwei Buschstaben und absteigend&lt;br /&gt;
** Backend-Suche aktivieren&lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Alias&lt;br /&gt;
|immo_alias_auto&lt;br /&gt;
|alias&lt;br /&gt;
| * Alias-Titel-Feld -&amp;gt; '''Titel'''&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Benutzer ID&lt;br /&gt;
|userid&lt;br /&gt;
|Frontend-Benutzer&lt;br /&gt;
|-&lt;br /&gt;
|Art&lt;br /&gt;
|immo_art&lt;br /&gt;
|Auswahl&lt;br /&gt;
| &lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* Tabelle für Optionen -&amp;gt; '''tl_taxonomy'''&lt;br /&gt;
* Option Spaltenwert -&amp;gt; '''name'''&lt;br /&gt;
* Option Sortierspalte -&amp;gt; name&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Die Optinsauswahl individualisieren&lt;br /&gt;
** Auswahl der Stamm-Einträge -&amp;gt; Immo Art&lt;br /&gt;
** Modus für Unter-Auswahl -&amp;gt; ''Zeigen Sie die Kindelemente von ausgewählten Einträgen ausgeklappt an.'''&lt;br /&gt;
** Filter des Elternelements -&amp;gt; leer lassen&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Umgebungsbeschreibung&lt;br /&gt;
|immo_umgebung&lt;br /&gt;
|langtext&lt;br /&gt;
| &lt;br /&gt;
* HTML erlauben&lt;br /&gt;
* Rich Text&lt;br /&gt;
* TinyMCE-Editor-Template -&amp;gt; tinyMCE&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bild&lt;br /&gt;
|immo_bild&lt;br /&gt;
|file&lt;br /&gt;
|&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht -&amp;gt; aktivieren&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Produktbild&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bildergalerie&lt;br /&gt;
|immo_bildergalerie&lt;br /&gt;
|file&lt;br /&gt;
| &lt;br /&gt;
* Mehrfach-Auswahl&lt;br /&gt;
* Anordnung nach Dateiname (aufsteigend)&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Veröffentlichen&lt;br /&gt;
|immo_veroeffentlichen&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Online&lt;br /&gt;
|immo_online&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Hervorheben&lt;br /&gt;
|immo_besonders&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Immobilie entfernen&lt;br /&gt;
|immo_delete&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Erklärung====&lt;br /&gt;
* Natürlich sind hier noch viel mehr Felder und Feldtypen angelegt. Diese paar sollten aber reichen um das prinzip zu verdeutlichen.&lt;br /&gt;
** Jede Art hat da ihre eigenen Felder (z.B. ist die Grundstücksfläche für Hotelzimmer nicht wichtig und wird daher dann später nicht mit ausgegeben)&lt;br /&gt;
* Bild und die Galerie sind getrennt, damit später in der Listenansicht ein bestimmtes Bild ausgegeben werden kann.&lt;br /&gt;
* Die Checkboxen '''Veröffentlichen''', '''Online''', '''Hervorheben''' und '''Immobilien entfernen''' sind besonders wichtig für die Verwaltung der Immobilien.&lt;br /&gt;
** Nur Makler-Admins bekommen später die Möglichekeit Immobilien online zu stellen ('''Online''') und diese auf der Startseite anzuzeiben ('''Hervorheben''')&lt;br /&gt;
&lt;br /&gt;
===die Katalog Einstellungen noch einmal überarbeiten===&lt;br /&gt;
Da jetzt die Feldtypen definiert wurden, kann man im Katalog selbst noch weiter Einstellungen vornehmen:&lt;br /&gt;
* Alias-Feld -&amp;gt; Alias&lt;br /&gt;
* Feld veröffentlichen -&amp;gt; NICHTS '''hier nicht angeben, da die Makler im Frontend sonst ihre Items nicht sehen können!'''&lt;br /&gt;
* Meta-Title-Feld -&amp;gt; Titel&lt;br /&gt;
* Meta-Beschreibungs-Feld -&amp;gt; Umgebungsbeschreibung&lt;br /&gt;
* Zeichenkette des Titels formatieren -&amp;gt; &amp;lt;nowiki&amp;gt;{{immo_titel}} - {{immo_gebiet}} - {{immo_art}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{immo_bild::w=100&amp;amp;h=80}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Einstellen von ein paar Items (Produkten)==&lt;br /&gt;
Nun können ein paar Immobilien erstellt werden. Zu beachten ist: diese Immobilien gehören erst einmal '''keinem''' Mitglied. Erst wenn ein Mitglied das Item bearbeitet und speichert ist es ihm Zugeordnet!&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item1.png|Cat new item1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item2.png|Cat new item2]]&lt;br /&gt;
&lt;br /&gt;
==Die nötigen Module==&lt;br /&gt;
&lt;br /&gt;
===Katalog-Filter===&lt;br /&gt;
Damit die Benutzer und die Mitglieder das angezeigt bekommen was sie wollen, sollte man mit einem Filter die Immobilien Einschränkbar machen.&lt;br /&gt;
Damit auch alle die passende Einstellung haben bei der Weiterleitungsseite muss man dieses Modul 3 mal anlegen und jeweils zur passenden Seite mit der Liste weiterleiten (eins anlegen und kopieren erleichtert einem die arbeit enorm *g*)&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Liste (je nachdem für welche Gruppe der Filter gerade erstellt wird)&lt;br /&gt;
* Benützen Sie Filterkonditionen des Listers auf der selben Seite -&amp;gt; aktivieren (dadurch sind nur die Filter aktiv, die auch passende Immobilien beinhalten)&lt;br /&gt;
* Filter pro Abschnitt aktivieren&lt;br /&gt;
** Gebiet -&amp;gt; Auswahlmenü&lt;br /&gt;
** Art -&amp;gt; Auswahlmenü&lt;br /&gt;
* Such-Filter&lt;br /&gt;
** Suchbox aktivieren -&amp;gt; aktivieren&lt;br /&gt;
** Kopfzeile suchen -&amp;gt; Suche (h3)&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** Alle Felder die man durchsuchbar haben möchte ankreuzen (z.B. Titel, Gebiet, Art, Umgebungsbeschreibung)&lt;br /&gt;
* Filter-Layout -&amp;gt; filter_default&lt;br /&gt;
&lt;br /&gt;
===Katalog-Liste===&lt;br /&gt;
Nun muss man mehrere Listenmodule anlegen. Einmal eine Liste für die Besucher. Dort sind alle Immobilien vorhanden, die online sind.&lt;br /&gt;
Für die Makler und Makler-Admins muss man nun für jede Art eine passende Liste erstellen.&lt;br /&gt;
Bei 5 verschiedenen Arten sind das also 5 Listen für Makler, 5 Listen für Makler-Admins.&lt;br /&gt;
Zusammengenommen also 11 Listen. Das ganze kann man sicher auch mittels PHP und MySQL etwas zusammenfassen. Hier geht es jedoch darum, das Prinzip aufzuzeigen und jedem zu ermöglichen so einen Katalog ohne viel Programmierkenntisse anzulegen.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** nach Bedarf anklicken&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung''' Je nach Liste etwas anders:&lt;br /&gt;
** Liste für Besucher der Seite: &amp;lt;nowiki&amp;gt;immo_online=1 and immo_freigeben=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items, die online sind, die freigegeben sind und die nicht Entfernt sind (also als solche Markiert)&lt;br /&gt;
** Liste für Makler &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1' AND (userid={{user::id}} OR userid=0)&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt wo die UserID gleich der eigenen oder keiner ist (alle Items von dem Mitglied und Items die noch keinem zugeordnet sind)&lt;br /&gt;
** Liste für Makler-Admin &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt sind an. Hier wird nicht die UserID abgefangen! Dadurch können Makler-Admins alle Immobilien sehen.&lt;br /&gt;
** Elemente pro Seite -&amp;gt; 6&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_cataloglist&lt;br /&gt;
&lt;br /&gt;
===Katalog-Leser===&lt;br /&gt;
Hiervon gibt es nur ein Modul. Die Makler und Makler-Admins bekommen das Modul Katalog-Edit.&lt;br /&gt;
Die Ausgabe der verschiedenen Arten und deren besonderheit regel ich über das Teplate mit einer extra if-Abfrage (lasse also nur die Felder anzeigen, die überhaupt einen Inhalt haben).&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_full&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogreader&lt;br /&gt;
&lt;br /&gt;
===Katalog-Featured===&lt;br /&gt;
Hiermit werden die hervorgehobenen Items auf der Startseite dargestellt.&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung'''&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;immo_online=1 and immo_besonders and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online, besonders und nicht Entfernt sind.&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogfeatured&lt;br /&gt;
&lt;br /&gt;
===Katalog-Related===&lt;br /&gt;
&lt;br /&gt;
Hiermit werden ähnliche Immobilien auf der Detailseite einer Immobilie angezeigt. Übereinstimmen muss in diesem Beispiel nur das Gebiet. Bei vielen Items sollte die Liste hier weiter eingeschränkt werden (Sinnvoll wäre zum Beispiel die Art der Immobilie)&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Betroffene Felder, die übereinstimmen müssen -&amp;gt; Gebiet&lt;br /&gt;
** Anzahl der Tags die zusammengehöhren müssen -&amp;gt; 0 (macht nur sinn bei mehreren. Dann werden nur Items angezeigt, die zum Beispiel 2 Gleiche Felder haben bei der Angabe von 2)&lt;br /&gt;
** '''Bedingung''' -&amp;gt; &amp;lt;nowiki&amp;gt;immo_online=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online und nicht Entfernt sind.&lt;br /&gt;
** Anzahl der Einträge -&amp;gt; 5&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogrelated&lt;br /&gt;
&lt;br /&gt;
===Katalog-Edit===&lt;br /&gt;
{{Achtung|Hier muss auf das passende Template geachtet werden -&amp;gt; '''catalog_edit.tpl''' sonst kommt eine Fehlermeldung in der Art 'No valid Item ID'}}&lt;br /&gt;
&lt;br /&gt;
Hier sind wieder mehrere Module nötig.&lt;br /&gt;
&lt;br /&gt;
Für Makler in jeder Art eins -&amp;gt; 5 &lt;br /&gt;
&lt;br /&gt;
Für Makler-Admins -&amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
(für jede Art, da die sich ja wie oben genannt in den Feldern unterscheiden)&lt;br /&gt;
&lt;br /&gt;
'''Felder die einen Standardwert bekommen dürfen nicht bearbeitet werden können!'''&lt;br /&gt;
&lt;br /&gt;
Außerdem lasse ich das Alias Feld nicht bearbeiten, damit da keine unschönen Aliase generiert werden.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Benutzer id [userid:useridfield]''' (Nur dadurch wird die ID des Maklers erfasst. Wird aber nicht im Frontend angezeigt)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
** '''Online -&amp;gt; nein'''&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler-Admins:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Online'''&lt;br /&gt;
** '''Hervorheben'''&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
&lt;br /&gt;
Mit diesen unterschiedlich eingestellten Katalog-Edit Modulen erreichen wir den Workflow: &lt;br /&gt;
&lt;br /&gt;
Makler können eine Immobilie bearbeiten und neu anlegen. Die Immobilie können Makler aber nicht online stellen oder hervorheben. Beim Bearbeiten wird durch den Standardwert Online=nein die Immobilie offline gestellt.&lt;br /&gt;
&lt;br /&gt;
Makler-Admins können Immobilien bearbeiten und neu anlegen. Die Immobilien können von Makler-Admins online gestellt werden und hervorgehoben werden (diese können ja die Felder sehen und bearbieten, die dafür zuständig sind).&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-modules.png|Cat Module]]&lt;br /&gt;
&lt;br /&gt;
==Die Module in Artikeln den passenden Seiten zuordnen==&lt;br /&gt;
Nun müssen die Module noch auf die jeweils passende Seite gebracht werden:&lt;br /&gt;
&lt;br /&gt;
* Startseite -&amp;gt; Catalog-Featured &lt;br /&gt;
** Immobilien Liste -&amp;gt; Catalog-Filter und Catalog Liste (für Besucher!)&lt;br /&gt;
*** Immobilien Details -&amp;gt; Catalog-Leser&lt;br /&gt;
* '''Geschützer Bereich'''&lt;br /&gt;
** Immobilien Anlegen -&amp;gt; mit Navigation für die Unterseiten (Für Makler und Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
** Immobilien Anlegen Administration -&amp;gt; mit Navigation für Unterseiten (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
&lt;br /&gt;
Ich kann nur aus eigener Erfahrung sprechen: Spätestens jetzt ist man froh, wenn man eine Eindeutige Benennung der Module vorgenommen hat! Hier muss man mit vielen ähnlichen Modulen arbeiten und da ist es auf dauer sehr mühselig, wenn man nicht auf den 1. Blick erkennen kann was es ist.&lt;br /&gt;
Ich selber benenne die Module daher zum Beispiel so: 'Katalog - Makler - Edit - Haus zum kaufen'&lt;br /&gt;
Dadurch ist die automatische Sortierung im Backend außreichend gut. Man sieht was für ein Modul es ist (Katalog) für welche Gruppe es ist (Makler) was genau es machen soll (Edit) und für welchen Bereich es gedacht und eingestellt ist (Haus zum kaufen).&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Tutorial zum Anpassen der Templates : [[Catalog_Templates_anpassen|Catalog Templates anpassen]]&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen / FAQ ==&lt;br /&gt;
=== tinyFrontend.php TinyMCE konfiguration ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Cannot find rich text editor configuration file &amp;quot;tinyFrontend.php&amp;quot;. You can copy system/config/tinyMCE.php to this name &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einfach die tinyMCE.php in /system/config/ kopieren und in tinyFrontend.php umbenennen. Dann kann diese Datei nach Wunsch angepasst werden und ist Vorlage für den WYSIWIG Editor im Frontend-Editing. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 14:52, 18. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2011-11-29T23:22:49Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder eine Immobilienverwaltung (mit Frontendeingabe und Workflow) oder einer Rezeptdatenbank (zu sehen auf [http://catalogdemo.dasprojekt.org http://catalogdemo.dasprojekt.org] ).&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumentationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Beschreibung=&lt;br /&gt;
Definieren von mehrfachen individuellen Katalogen, individuellen Feldtypen und zahlreichen Frontend-Anzeige-Formatierungs-Möglichkeiten.&lt;br /&gt;
Dieses Modul erlaubt es Benutzern, Kataloge mit Einträgen zu definieren und zu verwalten. Stellen Sie sich vor, Sie möchten einem Besucher Ihrer Seite eine Liste mit Ihren Spielen zeigen. Sie haben viele Spiele, aber alle haben gleiche bestimmte Eigenschaften, wie z.B. Titel, Autor, Genre, Konsolenformat, Veröffentlichungsdatum usw. Sie möchten nun alle diese Informationen speichern und später dann Besuchern zeigen, ihnen dabei nur Spiele zeigen aus dem Motorsport-Bereich oder Spiele mit einem Preis über einer bestimmten Höhe, nur Spiele, die verfügbar sind usw. Dieses Modul erlaubt Ihnen, solche Dinge zu tun. &lt;br /&gt;
&lt;br /&gt;
Quelle: [http://www.contao.org/erweiterungsliste/view/catalog.html Beschreibungstext des Catalog-Moduls in der Extension-Repository]&lt;br /&gt;
&lt;br /&gt;
=Contao2go Catalog Version=&lt;br /&gt;
&lt;br /&gt;
Da die größte Schwierigkeit darin besteht, zu sehen was man einstellen muss um gewisse Ergebnisse zu bekommen wurde ein Catalog erstellt, mit dem man ein wenig rumspielen kann. Die aktuelle Version kann immer über diesen Link bezogen werden: [http://catalog.mediendepot-ruhr.de http://catalog.mediendepot-ruhr.de] &lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
==Catalog aus dem Contao-Repository==&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
==Catalog aus dem Entwicklungs-Repository==&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. &lt;br /&gt;
&lt;br /&gt;
Man sollte darauf achten, welche Ordner wohin in der Installation kommen:&lt;br /&gt;
* der Inhalt von /drivers nach /system/drivers/&lt;br /&gt;
* alle anderen Ordner (bis auf /custumnav) nach /system/modules/&lt;br /&gt;
* /customnav wird nicht benötigt&lt;br /&gt;
&lt;br /&gt;
Danach muss ein Update der Datenbank gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Eventuell fehlende Sprachdateien können aus den Übersetzungen der Version im Contao-Extension-Repository manuell hinzugefügt werden. So kann dafür gesorgt werden, dass der Catalog dann (weitgehend) in einer Übersetzung benutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Bei einem Update muss seit Version r239 einmal unter Katalog (Menü von Contao) ganz oben rechts auf 'Maintenance' geklickt werden um die Tags Felder neu aufbauen lassen.}}&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID.)&lt;br /&gt;
{{Hinweis|Es ist darauf zu achten, dass beim Anlegen der Felder das Feld ''Alias'' '''nach''' dem Feld ''Titel'' plaziert wird, da sonst der Alias nicht korrekt generiert bzw. nur die ID gesetzt wird.}}&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
Möchte man im Feld ''Date'' immer das aktuelle Datum beim Anlegen eines Items verwenden, kann man in den erweiterten Einstellungen des Date-Feldes beim Standartwert den Wert  '''date()''' eintragen.&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermit wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick pro IP und Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
{{Anmerkung|der Feldtyp &amp;quot;Meta Keywords&amp;quot; ist veraltet, da in der Katalog Konfiguration direkt nun ein Textfeld als Quelle der META Keywords gewählt werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;showTemplateVars(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
'''Achtung: Diese Anweisung stellt ein potenzielles Sicherheitsrisiko dar und muss vor dem Produktiveinsatz entfernt werden.'''&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu braucht man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden, sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
Wenn das Aliasfeld nicht angelegt ist wird das Item per ID verlinkt.&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort,search&amp;quot; angegeben werden. Dadurch ignoriert Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht im Feld &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesentlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann man die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Excel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
==Katalogeinträge an den Frontend-Benutzer binden==&lt;br /&gt;
&lt;br /&gt;
Um Katalogeinträge an den Frontend-Benutzer zu binden, kann die Erweiterung [http://www.contao.org/erweiterungsliste/view/catalogitemuseridfield.de.html catalogitemuseridfield] installiert werden.&lt;br /&gt;
&lt;br /&gt;
Nach der Installation besteht die Möglichkeit ein Feld mit dem Feldtyp Frontend-Benutzer im Catalog zu definieren.&lt;br /&gt;
In diesem Feld wird die User ID des Frontend-Benutzers gespeichert und kann so z.B. in den Bedingungen verknüpft werden.&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_Templates_anpassen</id>
		<title>Catalog Templates anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_Templates_anpassen"/>
				<updated>2011-11-21T11:01:04Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Wert nur Ausgeben, wenn Mitglied in einer bestimmten Gruppe ist */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Templates für den Catalog bearbeiten und verändern=&lt;br /&gt;
&lt;br /&gt;
Der Catalog bringt eine Menge Templates mit. Für fast jedes Modul gibt es einen eigenen Satz Templates. Zusätzlich werden Standard Templates herangezogen um zum Beispiel die Galerie oder die Filter zu generieren.&lt;br /&gt;
&lt;br /&gt;
Da der Catalog aber nur ein Grundgerüst darstellt wird man nicht umhin kommen sich die Templates nach eigenen Wünschen und Vorstellungen anzupassen.&lt;br /&gt;
Zunächst geht es hier ganz allgemein um das Vorgehen bei der Template Anpassung. Wie man an bestimmte Werte kommt und so an die Ausgaben die man möchte.&lt;br /&gt;
Zusätzlich werden hier noch ein paar Fallbeispiele vorgestellt, welche zum Teil aus den Wünschen/Problemen im Forum entstanden sind (Vielen Dank an alle die daran im Forum gearbeitet haben!!!).&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein. Es sollte also ein Katalog vorhanden sein mit Inhalten.&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
* wie man [[Templates_bearbeiten|Templates bearbeitet]] sollte in Grundzügen bekannt sein.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
&lt;br /&gt;
==Alles ein Array das entries Array==&lt;br /&gt;
&lt;br /&gt;
Um sich die Ausgabe von dem Array anzuschauen braucht man nur diese Zeile in das Template bringen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man sich das Ergebniss nun auf der neu geladenen Seite anschaut ist das nicht gerade schön anzusehen. Alles steht hintereinander und ergibt einen Code Brei. Deswegen sollte man sich das am besten immer direkt in der Quellcode Ansicht anschauen. Da bekommt man alles schön eingerückt und verschachtelt zu sehen! Oder man setzt die Ausgabe in ein &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;-Tag.&lt;br /&gt;
&lt;br /&gt;
Auszug aus einem Immoblilien Katalog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
  [0] =&amp;gt; Array&lt;br /&gt;
    (&lt;br /&gt;
      [id] =&amp;gt; 33&lt;br /&gt;
      [catalog_name] =&amp;gt; Immobilien&lt;br /&gt;
      [parentJumpTo] =&amp;gt; 27&lt;br /&gt;
      [tablename] =&amp;gt; immo_immobilien_alle&lt;br /&gt;
      [showLink] =&amp;gt; 1&lt;br /&gt;
      [class] =&amp;gt;  first last even&lt;br /&gt;
      [data] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
          [immo_titel] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Titel&lt;br /&gt;
              [type] =&amp;gt; text&lt;br /&gt;
              [raw] =&amp;gt; villa in tunesien&lt;br /&gt;
              [value] =&amp;gt; villa in tunesien&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
          [immo_gebiet] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Gebiet&lt;br /&gt;
              [type] =&amp;gt; select&lt;br /&gt;
              [raw] =&amp;gt; 141&lt;br /&gt;
              [value] =&amp;gt; Beja&lt;br /&gt;
              [ref] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [id] =&amp;gt; 141&lt;br /&gt;
                      [pid] =&amp;gt; 130&lt;br /&gt;
                      [tstamp] =&amp;gt; 1273353133&lt;br /&gt;
                      [sorting] =&amp;gt; 112&lt;br /&gt;
                      [type] =&amp;gt; &lt;br /&gt;
                      [alias] =&amp;gt; beja&lt;br /&gt;
                      [name] =&amp;gt; Beja&lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
          [immo_bild] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Bild - nur für das erste Bild &amp;amp;#40;Ein Bild für die Vorschau / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; file&lt;br /&gt;
              [raw] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
              [value] =&amp;gt; &amp;lt;a href=&amp;quot;immobilien-leser/items/miethaus-1.html&amp;quot; title=&amp;quot;Die Details des Eintrags ansehen&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogrelated0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&amp;quot; title=&amp;quot;Bild 01&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/bild_01-0ec9b6d1.jpg&amp;quot; alt=&amp;quot;Bild 01&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
              [files] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
              [meta] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/bild_01-0ec9b6d1.jpg&lt;br /&gt;
                      [alt] =&amp;gt; Bild 01&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogrelated0&lt;br /&gt;
                      [w] =&amp;gt; 200&lt;br /&gt;
                      [h] =&amp;gt; 100&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
          [immo_bildergalerie] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Bildergalerie - alle anderen Bilder &amp;amp;#40;für die Detail Ansicht / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; file&lt;br /&gt;
              [raw] =&amp;gt; a:4:{i:0;s:103:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot;;i:1;s:89:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot;;i:2;s:99:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot;;i:3;s:96:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot;;}&lt;br /&gt;
              [value] =&amp;gt; &amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot; title=&amp;quot;How 2 rubbeldiekatz&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/how 2 rubbeldiekatz-0d26e104.jpg&amp;quot; alt=&amp;quot;How 2 rubbeldiekatz&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot; title=&amp;quot;Image&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/image-6a4159ed.png&amp;quot; alt=&amp;quot;Image&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot; title=&amp;quot;Institut-aussen&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/institut-aussen-538b1b35.jpg&amp;quot; alt=&amp;quot;Institut-aussen&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot; title=&amp;quot;James-wilson&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/james-wilson-379f0b97.jpg&amp;quot; alt=&amp;quot;James-wilson&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
              [files] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&lt;br /&gt;
                  [1] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&lt;br /&gt;
                  [2] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&lt;br /&gt;
                  [3] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
              [meta] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/how 2 rubbeldiekatz-0d26e104.jpg&lt;br /&gt;
                      [alt] =&amp;gt; How 2 rubbeldiekatz&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                  [1] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/image-6a4159ed.png&lt;br /&gt;
                      [alt] =&amp;gt; Image&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                  [2] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/institut-aussen-538b1b35.jpg&lt;br /&gt;
                      [alt] =&amp;gt; Institut-aussen&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
									[3] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/james-wilson-379f0b97.jpg&lt;br /&gt;
                      [alt] =&amp;gt; James-wilson&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
								)&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
          [immo_sterne] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Sterne &amp;amp;#40;Wie viele Sterne hat das Hotel&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; number&lt;br /&gt;
              [raw] =&amp;gt; &lt;br /&gt;
              [value] =&amp;gt; &lt;br /&gt;
            )&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist nur ein kleiner Auszug aus der Ausgabe.&lt;br /&gt;
In dieser Ausgabe stehten verschiedene Dinge.&lt;br /&gt;
&lt;br /&gt;
Am Anfang stehen immer die Grundinformationen (id, catalog_name, parentJumpTo, tablename,showLink, class).&lt;br /&gt;
Die werden in der Regel nicht gebraucht, sind aber gut zu wissen, damit man mal kurz schauen kann ob man überhaupt richtig ist ;)&lt;br /&gt;
&lt;br /&gt;
Alle Variablen die man bekommt stehen immer in dem Array '''data'''&lt;br /&gt;
Um an die einzelnen Werte zu kommen, braucht man nur die Arrays von dem Wert durchzugehen bis nach oben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Den Titel der Immobilie als Überschrift ausgeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;?php echo $entry['data']['immo_titel']['value']; ?&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das value 'villa in tunesien' soll ausgegeben werden, welches sich in dem Array 'immo_titel' befindet und das ist in dem Array 'data'.&lt;br /&gt;
So einfach bekommt man einzelne Werte ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Die Bestandteile der meta-Arrays==&lt;br /&gt;
&lt;br /&gt;
Die Arrays in so einer Ausgabe sind immer gleich aufgebaut. Je nach Feldtyp etwas anders.&lt;br /&gt;
&lt;br /&gt;
Die Standard Informationen&lt;br /&gt;
* class -&amp;gt; die CSS-Klassen des Items (eher wichtig in einer Liste, da man dort zum Beispiel even/odd zur Verfügung hat)&lt;br /&gt;
* link -&amp;gt; Die URL der Leser Seite (auch eher Listen spezifisch)&lt;br /&gt;
* url -&amp;gt; enthält nur die URL von dem Link. Damit kann man seine eigenen Links bauen.&lt;br /&gt;
* data -&amp;gt; Hier sind alle Felder drin.&lt;br /&gt;
&lt;br /&gt;
===Die allgemeinen Parameter===&lt;br /&gt;
Jedes Feld hat immer diese 4 Parameter:&lt;br /&gt;
    * [label] =&amp;gt; Enthält das Label welches im Katalog vergeben wurde&lt;br /&gt;
    * [type] =&amp;gt; Enthält den Feldtyp. Zum Beispiel: text, file, select, tags&lt;br /&gt;
    * [raw] =&amp;gt; Enthält die Original Daten direkt aus der Datenbank. Hiermit kann man immer komplett eigene Ausgaben gestalten.&lt;br /&gt;
    * [value] =&amp;gt; Enthält die vorformatierten Daten: &lt;br /&gt;
                    Datei-Bild Feld =&amp;gt; Bild Lightbox&lt;br /&gt;
                    Datei-download =&amp;gt; den download Link&lt;br /&gt;
                    Text Feld =&amp;gt; der Formatierte String (numeric, date, etc.)&lt;br /&gt;
&lt;br /&gt;
===Die speziellen Parameter===&lt;br /&gt;
&lt;br /&gt;
====Dateien====&lt;br /&gt;
&lt;br /&gt;
* [files] =&amp;gt; Beinhaltet ein Array -&amp;gt; [0] .. [xxx] mit den Dateinamen&lt;br /&gt;
* [meta] =&amp;gt; Beinhaltet die meta-Angaben, wie oben genannt&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um eine Datei handelt (kein Bild) wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [url] =&amp;gt; die relative URL zum herunterladen&lt;br /&gt;
* [alt] =&amp;gt; den alt Text&lt;br /&gt;
* [caption] =&amp;gt; die Beschreibung in der meta.txt Datei&lt;br /&gt;
* [size] =&amp;gt; die größe in Byte&lt;br /&gt;
* [sizetext] =&amp;gt; die größe in lesbarer Form (z.B. 230.0 kB)&lt;br /&gt;
* [icon] =&amp;gt; das Icon (gesetzt wird der Standard vom System selber, basierend auf den Mime-Typen)&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um ein Bild handelt, wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [src] =&amp;gt; den Dateinamen von dem Bild in angepasster größe (wenn das benutzt wird im Katalog selber)&lt;br /&gt;
* [alt] =&amp;gt; Den alt-Text&lt;br /&gt;
* [lb] =&amp;gt; die einzigartige REL=lightbox ID damit die Slimbox angesteuert werden kann&lt;br /&gt;
* [w] =&amp;gt; Bild width&lt;br /&gt;
* [h] =&amp;gt; Bild height&lt;br /&gt;
* [wh] =&amp;gt; Bild width/height in einem String &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer referenzierenden Tabelle können noch folgende Inhalte vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
* [parentJumpTo] =&amp;gt; die ID von dem referenzierenden Katalog (kann in Inserttags genutzt werden)&lt;br /&gt;
* [parentLink] =&amp;gt; Der komplette Link mit einem Standard Text &amp;quot;View item details&amp;quot;&lt;br /&gt;
* [parentUrl] =&amp;gt; Die relative URL zu der Detail (Leser) Seite&lt;br /&gt;
&lt;br /&gt;
=Beispiel Anpassungen=&lt;br /&gt;
&lt;br /&gt;
==Einfache Überprüfung ob Inhalt vorhanden ist==&lt;br /&gt;
Es gibt immer wieder einzelne Felder die nur optional zu befüllen sind.&lt;br /&gt;
Wenn man die Ausgabe von einem Div nur machen möchte wenn auch Inhalte vorhanden sind, kann man das einfach mit einer if-Abfrage erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['immo_bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;immo_galerie&amp;quot;&amp;gt;&amp;lt;?php echo $entry['data']['immo_bildergalerie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel wird die Bildergalerie mit dem umschließenden div nur dann ausgegeben wenn auch mindestens ein Bild vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==Wie man in eigenen Templates beim Katalog Thumbnails generieren kann==&lt;br /&gt;
&lt;br /&gt;
Thumbnails werden in Contao mit der Methode Controller::[[Arbeiten mit Bildern#getImage()|getImage()]] generiert.&lt;br /&gt;
Wichtig dabei ist, dass nicht der ganze Code des Bildes zurückgegeben wird, sondern lediglich die URL zum Thumbnail.&lt;br /&gt;
&lt;br /&gt;
Die Methode sieht wie folgt aus:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
getImage($image, $width, $height, $mode='', $target=null)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Parameter erklären sich wie folgt:&lt;br /&gt;
* $image (String) ''zwingend''&lt;br /&gt;
** erwartet eine relative URL zum Bild, dass verkleinert werden soll (z.B. 'tl_files/meine_bilder/mein_bild.jpg')&lt;br /&gt;
* $width (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $height (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $mode (String) ''optional'' (weitergehende Informationen auf dem [http://www.contao.org/blog-leser/items/die-3-varianten-der-bildanpassung-in-typolight-2.8.html offiziellen Contao-Blog])&lt;br /&gt;
** erwartet einen Angabe darüber, wie das Bild behandelt werden soll. Möglich sind:&lt;br /&gt;
*** &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt; (Exaktes Format) - default&lt;br /&gt;
*** 'proportional' (Proportional)&lt;br /&gt;
*** 'box' (An Rahmen anpassen)&lt;br /&gt;
* $target (String) ''optional''&lt;br /&gt;
** erwartet eine relative URL zu einem Bild, dass ersetzt werden soll (z.B. 'tl_files/meine_bilder/mein_zu_ersetzendes_bild.jpg')&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für ein Template mit einem Thumbnail von 430px Breite und 300px Höhe, das proportional geparst werden soll, könnte also so aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $this-&amp;gt;getImage('tl_files/meine_bilder/mein_bild.jpg',430,300,'proportional'); ?&amp;gt;&amp;quot; alt=&amp;quot;Mein alt-Text für mein Bild&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummerierung der einzelnen Einträge in einer Liste==&lt;br /&gt;
&lt;br /&gt;
Die Paginierung wurde berücksichtigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$perpage=3&lt;br /&gt;
$index=0&lt;br /&gt;
foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
  &amp;lt;$index++&lt;br /&gt;
  if (isset($_GET['page'])):&lt;br /&gt;
    $number = $index + ($perpage * ($_GET['page'] - 1))&lt;br /&gt;
  else:&lt;br /&gt;
    $number = $index&lt;br /&gt;
  endif;&lt;br /&gt;
  ...&lt;br /&gt;
endforeach;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wobei $perpage die Anzahl der Items enhält, die pro Seite ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==Kategorien einmalig ausgeben und die Items darunter==&lt;br /&gt;
Beispiel anhand eines modifizierten catalog_simple.tpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (count($this-&amp;gt;entries)):&lt;br /&gt;
   $lastcat=''; ?&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;layout_simple&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;?php foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
      if ($lastcat!=$entry[data]['Kategorie']['value']):&lt;br /&gt;
         $lastcat=$entry[data]['Kategorie']['value']; ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;cat&amp;quot;&amp;gt;&amp;lt;?php echo $entry[data]['Kategorie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;item&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data):&lt;br /&gt;
         if ($field=='Kategorie') continue;&lt;br /&gt;
         if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
         &amp;lt;?php endif;&lt;br /&gt;
      endforeach;&lt;br /&gt;
      if ($entry['showLink'] &amp;amp;&amp;amp; $entry['link']): ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;link&amp;quot;&amp;gt;&amp;lt;?php echo $entry['link']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif;&lt;br /&gt;
      if ($entry['linkEdit']): ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;linkEdit&amp;quot;&amp;gt;&amp;lt;?php echo $entry['linkEdit']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else:&lt;br /&gt;
   if ($this-&amp;gt;condition): ?&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;condition&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;condition; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
      &amp;lt;p class=&amp;quot;info&amp;quot;&amp;gt;There are no entries matching your search.&amp;lt;/p&amp;gt;&lt;br /&gt;
   &amp;lt;?php endif;&lt;br /&gt;
endif;&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummern für die Zellen im Katalog==&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von einem simpletable.tpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;layout_simpletable&amp;quot; summary=&amp;quot;Catalog Items&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;thead class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;?php list($field, $heading) = each($this-&amp;gt;entries);&lt;br /&gt;
      $i = 0;&lt;br /&gt;
      foreach ($heading['data'] as $field=&amp;gt;$data):&lt;br /&gt;
      $i++;&lt;br /&gt;
        if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
          &amp;lt;th class=&amp;quot;header&amp;lt;?php echo $i; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;?php endif;&lt;br /&gt;
      endforeach; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/thead&amp;gt;&lt;br /&gt;
  &amp;lt;tbody class=&amp;quot;body&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
      $n++ ?&amp;gt;&lt;br /&gt;
      &amp;lt;tr class=&amp;quot;item&amp;lt;?php echo $n; ?&amp;gt;&amp;lt;?php echo $entry['class'] ? '  '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data):&lt;br /&gt;
        $k++;&lt;br /&gt;
          if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;lt;?php echo $k; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;?php if (strlen($data['value'])):&lt;br /&gt;
              if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;?php endif;&lt;br /&gt;
            echo $data['value'];&lt;br /&gt;
              if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
              &amp;lt;?php endif;&lt;br /&gt;
            endif; ?&amp;gt;&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;?php endif;&lt;br /&gt;
        endforeach; ?&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
  &amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eine Bildergalerie erstellen, wo nur das 1. Bild ausgegeben wird und die anderen in der Lightbox vorhanden sind==&lt;br /&gt;
&lt;br /&gt;
{{Achtung|diese beiden Herangehensweisen sind noch ungetestet.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
Die Ausgabe sollte ungefähr so aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image01.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/image01.jpg&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image02.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt da ja im Grunde 2 Herangehensweisen:&lt;br /&gt;
1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)&lt;br /&gt;
2. Man gibt nur eine Bildergalerie an.&lt;br /&gt;
&lt;br /&gt;
Template (Grundüberlegung):&lt;br /&gt;
1. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
      &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit hat man einfach nur die normale Galerie. Das wäre für diesem Fall ja nicht passend; sei an dieser Stelle jedoch noch mal dokumentiert sein.&lt;br /&gt;
&lt;br /&gt;
Um das jetzt zu verbinden, gibt es verschiedene Vorgehensweisen:&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['meta']['0']['src'];?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot; &amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php else;?&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;lightbox[lightbox_1]&amp;quot; href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Katalog referenzieren==&lt;br /&gt;
Hier im Forum ist die Herangehensweise beschrieben, wie man das machen kann ohne mit Referenzen aus catalog 2 zu arbeiten:&lt;br /&gt;
[http://www.contao-community.de/showthread.php?5448-2-Kataloge-referenzieren-GEL%D6ST]&lt;br /&gt;
&lt;br /&gt;
Hier noch ein kurzes Beispiel wie das gehen kann:&lt;br /&gt;
&lt;br /&gt;
In dem Catalog Leser von einem Autoren sollen die Bücher dargestellt werden (diese sind mit dem Feldtyp Tags referenziert). Die Bücher sind in dem Fall innerhalb des Array 'ref':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($data['ref'] as $id=&amp;gt;$ref): ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;div class=&amp;quot;row_&amp;lt;?php echo $id; ?&amp;gt; buch &amp;lt;?php if($ref['bilder_buch']) echo &amp;quot;buch_mitbild&amp;quot;;?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigner Beschreibung) ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug wie bei dem Feld beispiel_bild der gewünschte Code ausgegeben wird und ansonsten die Werte einfach normal vom Catalog ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($field=='beispiel_bild'):?&amp;gt;&lt;br /&gt;
{{image::&amp;lt;?php echo $data['files']['0']; ?&amp;gt;?width=&amp;lt;?php echo $data['meta']['0']['w']; ?&amp;gt;&amp;amp;height=&amp;lt;?php echo $data['meta']['0']['h']; ?&amp;gt;&amp;amp;alt=&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;amp;mode=crop&amp;amp;rel=lightbox}}&lt;br /&gt;
&amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Weitere Beispiele finden sich im engl. Wiki vom Catalog==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial]&lt;br /&gt;
&lt;br /&gt;
==Beispiele im Forum:==&lt;br /&gt;
&lt;br /&gt;
[http://www.contao-community.de/showthread.php?10335-Berufs-und-Ausstellerverzeichnis-kombinieren&amp;amp;p=74438#post74438 Zwei Kataloge im Template verbinden]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 21:44, 21. Mai 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Wert nur Ausgeben, wenn Mitglied in einer bestimmten Gruppe ist ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  $this-&amp;gt;import('FrontendUser', 'User');&lt;br /&gt;
  if (in_array(2, $this-&amp;gt;User-&amp;gt;groups)):&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;Meine Ausgabe&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen die Werte vom Frontenduser importiert werden. Danach kann man abfragen ob die ID (in diesem Fall die 2) in dem Array vorkommt und dann eine Ausgabe machen. So kann man mit einem Template die Ausgabe für mehrere Gruppen individualisieren.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 11:47, 18. Nov. 2011 (CET)&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen anpassen und als Bild ausgeben (Taxonomie mit verlinkten Icons) ==&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie im obigen Beispiel wird hier eine Spalte so angepasst, dass die Taxonomie IDs gegen Icons getauscht werden (auch ideal für Immobilien, Ferienwohnungen). &lt;br /&gt;
&lt;br /&gt;
Zunächst wird abgefragt, welches Katalogfeld seperat behandelt wird &amp;lt;nowiki&amp;gt;&amp;lt;?php if($field=='tags'): ?&amp;gt;&amp;lt;/nowiki&amp;gt;. Zwischen den Kommentaren werden zunächst zum einfacheren Vorgehen die (verlinkten) Icons in eine Variable gespeichert ($icons) und darunter mittels foreach das Puffer-Array angesprochen und ausgegeben. Dadurch lassen sich auch Tageinträge größer eins verarbeiten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($field=='tags'): ?&amp;gt;&lt;br /&gt;
&amp;lt;!------------------ ANFANG ------------------&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$icons=array(&lt;br /&gt;
  // Schema: 'id' =&amp;gt; 'zu generierender html code',&lt;br /&gt;
  '2' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/eins.gif&amp;quot; alt=&amp;quot;eins&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;',&lt;br /&gt;
  '3' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/zwei.gif&amp;quot; alt=&amp;quot;zwei&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;',&lt;br /&gt;
  '4' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/drei.gif&amp;quot; alt=&amp;quot;drei&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;'&lt;br /&gt;
);&lt;br /&gt;
foreach($data['ref'] as $info)&lt;br /&gt;
  echo $icons[$info['id']];&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;!------------------ ENDE ------------------&amp;gt;&lt;br /&gt;
 &amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:carino|carino]] 10:30, 24. Juli 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Zeilenumbrüche in Texten von textarea Feldern als HTML Umbrüche im Template ausgeben==&lt;br /&gt;
Ist ein Feld vom Typ textarea, kann man dort Zeilenumbrüche eingeben und speichern. Diese werden im Frontend aber nicht angezeigt.&lt;br /&gt;
Mit folgendem Befehl werden die Umbrüche in HTML umgewandelt und damit im Frontend sichtbar. Den Code einfach vor der Ausgabe des description Feldes einfügen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// replace new line feed \n (0x0A) in description field by HTML line break &amp;lt;br/&amp;gt;&lt;br /&gt;
$entry['data']['description']['value'] = str_replace(&amp;quot;\xa&amp;quot;, &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;, $entry['data']['description']['value']); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:bubblez|bubblez]] 01:46, 26. Mar 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_Templates_anpassen</id>
		<title>Catalog Templates anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_Templates_anpassen"/>
				<updated>2011-11-18T10:47:27Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Alle Werte ausgeben und nur einen anpassen und als Bild ausgeben (Taxonomie mit verlinkten Icons) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Templates für den Catalog bearbeiten und verändern=&lt;br /&gt;
&lt;br /&gt;
Der Catalog bringt eine Menge Templates mit. Für fast jedes Modul gibt es einen eigenen Satz Templates. Zusätzlich werden Standard Templates herangezogen um zum Beispiel die Galerie oder die Filter zu generieren.&lt;br /&gt;
&lt;br /&gt;
Da der Catalog aber nur ein Grundgerüst darstellt wird man nicht umhin kommen sich die Templates nach eigenen Wünschen und Vorstellungen anzupassen.&lt;br /&gt;
Zunächst geht es hier ganz allgemein um das Vorgehen bei der Template Anpassung. Wie man an bestimmte Werte kommt und so an die Ausgaben die man möchte.&lt;br /&gt;
Zusätzlich werden hier noch ein paar Fallbeispiele vorgestellt, welche zum Teil aus den Wünschen/Problemen im Forum entstanden sind (Vielen Dank an alle die daran im Forum gearbeitet haben!!!).&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein. Es sollte also ein Katalog vorhanden sein mit Inhalten.&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
* wie man [[Templates_bearbeiten|Templates bearbeitet]] sollte in Grundzügen bekannt sein.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
&lt;br /&gt;
==Alles ein Array das entries Array==&lt;br /&gt;
&lt;br /&gt;
Um sich die Ausgabe von dem Array anzuschauen braucht man nur diese Zeile in das Template bringen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man sich das Ergebniss nun auf der neu geladenen Seite anschaut ist das nicht gerade schön anzusehen. Alles steht hintereinander und ergibt einen Code Brei. Deswegen sollte man sich das am besten immer direkt in der Quellcode Ansicht anschauen. Da bekommt man alles schön eingerückt und verschachtelt zu sehen! Oder man setzt die Ausgabe in ein &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;-Tag.&lt;br /&gt;
&lt;br /&gt;
Auszug aus einem Immoblilien Katalog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
  [0] =&amp;gt; Array&lt;br /&gt;
    (&lt;br /&gt;
      [id] =&amp;gt; 33&lt;br /&gt;
      [catalog_name] =&amp;gt; Immobilien&lt;br /&gt;
      [parentJumpTo] =&amp;gt; 27&lt;br /&gt;
      [tablename] =&amp;gt; immo_immobilien_alle&lt;br /&gt;
      [showLink] =&amp;gt; 1&lt;br /&gt;
      [class] =&amp;gt;  first last even&lt;br /&gt;
      [data] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
          [immo_titel] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Titel&lt;br /&gt;
              [type] =&amp;gt; text&lt;br /&gt;
              [raw] =&amp;gt; villa in tunesien&lt;br /&gt;
              [value] =&amp;gt; villa in tunesien&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
          [immo_gebiet] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Gebiet&lt;br /&gt;
              [type] =&amp;gt; select&lt;br /&gt;
              [raw] =&amp;gt; 141&lt;br /&gt;
              [value] =&amp;gt; Beja&lt;br /&gt;
              [ref] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [id] =&amp;gt; 141&lt;br /&gt;
                      [pid] =&amp;gt; 130&lt;br /&gt;
                      [tstamp] =&amp;gt; 1273353133&lt;br /&gt;
                      [sorting] =&amp;gt; 112&lt;br /&gt;
                      [type] =&amp;gt; &lt;br /&gt;
                      [alias] =&amp;gt; beja&lt;br /&gt;
                      [name] =&amp;gt; Beja&lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
          [immo_bild] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Bild - nur für das erste Bild &amp;amp;#40;Ein Bild für die Vorschau / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; file&lt;br /&gt;
              [raw] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
              [value] =&amp;gt; &amp;lt;a href=&amp;quot;immobilien-leser/items/miethaus-1.html&amp;quot; title=&amp;quot;Die Details des Eintrags ansehen&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogrelated0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&amp;quot; title=&amp;quot;Bild 01&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/bild_01-0ec9b6d1.jpg&amp;quot; alt=&amp;quot;Bild 01&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
              [files] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
              [meta] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/bild_01-0ec9b6d1.jpg&lt;br /&gt;
                      [alt] =&amp;gt; Bild 01&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogrelated0&lt;br /&gt;
                      [w] =&amp;gt; 200&lt;br /&gt;
                      [h] =&amp;gt; 100&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
          [immo_bildergalerie] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Bildergalerie - alle anderen Bilder &amp;amp;#40;für die Detail Ansicht / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; file&lt;br /&gt;
              [raw] =&amp;gt; a:4:{i:0;s:103:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot;;i:1;s:89:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot;;i:2;s:99:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot;;i:3;s:96:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot;;}&lt;br /&gt;
              [value] =&amp;gt; &amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot; title=&amp;quot;How 2 rubbeldiekatz&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/how 2 rubbeldiekatz-0d26e104.jpg&amp;quot; alt=&amp;quot;How 2 rubbeldiekatz&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot; title=&amp;quot;Image&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/image-6a4159ed.png&amp;quot; alt=&amp;quot;Image&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot; title=&amp;quot;Institut-aussen&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/institut-aussen-538b1b35.jpg&amp;quot; alt=&amp;quot;Institut-aussen&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot; title=&amp;quot;James-wilson&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/james-wilson-379f0b97.jpg&amp;quot; alt=&amp;quot;James-wilson&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
              [files] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&lt;br /&gt;
                  [1] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&lt;br /&gt;
                  [2] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&lt;br /&gt;
                  [3] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&lt;br /&gt;
                )&lt;br /&gt;
&lt;br /&gt;
              [meta] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                  [0] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/how 2 rubbeldiekatz-0d26e104.jpg&lt;br /&gt;
                      [alt] =&amp;gt; How 2 rubbeldiekatz&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                  [1] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/image-6a4159ed.png&lt;br /&gt;
                      [alt] =&amp;gt; Image&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
                  [2] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/institut-aussen-538b1b35.jpg&lt;br /&gt;
                      [alt] =&amp;gt; Institut-aussen&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
									[3] =&amp;gt; Array&lt;br /&gt;
                    (&lt;br /&gt;
                      [src] =&amp;gt; system/html/james-wilson-379f0b97.jpg&lt;br /&gt;
                      [alt] =&amp;gt; James-wilson&lt;br /&gt;
                      [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                      [w] =&amp;gt; 50&lt;br /&gt;
                      [h] =&amp;gt; 50&lt;br /&gt;
                      [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                      [caption] =&amp;gt; &lt;br /&gt;
                      [metafile] =&amp;gt; &lt;br /&gt;
                    )&lt;br /&gt;
&lt;br /&gt;
								)&lt;br /&gt;
&lt;br /&gt;
            )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
          [immo_sterne] =&amp;gt; Array&lt;br /&gt;
            (&lt;br /&gt;
              [label] =&amp;gt; Sterne &amp;amp;#40;Wie viele Sterne hat das Hotel&amp;amp;#41;&lt;br /&gt;
              [type] =&amp;gt; number&lt;br /&gt;
              [raw] =&amp;gt; &lt;br /&gt;
              [value] =&amp;gt; &lt;br /&gt;
            )&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist nur ein kleiner Auszug aus der Ausgabe.&lt;br /&gt;
In dieser Ausgabe stehten verschiedene Dinge.&lt;br /&gt;
&lt;br /&gt;
Am Anfang stehen immer die Grundinformationen (id, catalog_name, parentJumpTo, tablename,showLink, class).&lt;br /&gt;
Die werden in der Regel nicht gebraucht, sind aber gut zu wissen, damit man mal kurz schauen kann ob man überhaupt richtig ist ;)&lt;br /&gt;
&lt;br /&gt;
Alle Variablen die man bekommt stehen immer in dem Array '''data'''&lt;br /&gt;
Um an die einzelnen Werte zu kommen, braucht man nur die Arrays von dem Wert durchzugehen bis nach oben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Den Titel der Immobilie als Überschrift ausgeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h3&amp;gt;&amp;lt;?php echo $entry['data']['immo_titel']['value']; ?&amp;gt;&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das value 'villa in tunesien' soll ausgegeben werden, welches sich in dem Array 'immo_titel' befindet und das ist in dem Array 'data'.&lt;br /&gt;
So einfach bekommt man einzelne Werte ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Die Bestandteile der meta-Arrays==&lt;br /&gt;
&lt;br /&gt;
Die Arrays in so einer Ausgabe sind immer gleich aufgebaut. Je nach Feldtyp etwas anders.&lt;br /&gt;
&lt;br /&gt;
Die Standard Informationen&lt;br /&gt;
* class -&amp;gt; die CSS-Klassen des Items (eher wichtig in einer Liste, da man dort zum Beispiel even/odd zur Verfügung hat)&lt;br /&gt;
* link -&amp;gt; Die URL der Leser Seite (auch eher Listen spezifisch)&lt;br /&gt;
* url -&amp;gt; enthält nur die URL von dem Link. Damit kann man seine eigenen Links bauen.&lt;br /&gt;
* data -&amp;gt; Hier sind alle Felder drin.&lt;br /&gt;
&lt;br /&gt;
===Die allgemeinen Parameter===&lt;br /&gt;
Jedes Feld hat immer diese 4 Parameter:&lt;br /&gt;
    * [label] =&amp;gt; Enthält das Label welches im Katalog vergeben wurde&lt;br /&gt;
    * [type] =&amp;gt; Enthält den Feldtyp. Zum Beispiel: text, file, select, tags&lt;br /&gt;
    * [raw] =&amp;gt; Enthält die Original Daten direkt aus der Datenbank. Hiermit kann man immer komplett eigene Ausgaben gestalten.&lt;br /&gt;
    * [value] =&amp;gt; Enthält die vorformatierten Daten: &lt;br /&gt;
                    Datei-Bild Feld =&amp;gt; Bild Lightbox&lt;br /&gt;
                    Datei-download =&amp;gt; den download Link&lt;br /&gt;
                    Text Feld =&amp;gt; der Formatierte String (numeric, date, etc.)&lt;br /&gt;
&lt;br /&gt;
===Die speziellen Parameter===&lt;br /&gt;
&lt;br /&gt;
====Dateien====&lt;br /&gt;
&lt;br /&gt;
* [files] =&amp;gt; Beinhaltet ein Array -&amp;gt; [0] .. [xxx] mit den Dateinamen&lt;br /&gt;
* [meta] =&amp;gt; Beinhaltet die meta-Angaben, wie oben genannt&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um eine Datei handelt (kein Bild) wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [url] =&amp;gt; die relative URL zum herunterladen&lt;br /&gt;
* [alt] =&amp;gt; den alt Text&lt;br /&gt;
* [caption] =&amp;gt; die Beschreibung in der meta.txt Datei&lt;br /&gt;
* [size] =&amp;gt; die größe in Byte&lt;br /&gt;
* [sizetext] =&amp;gt; die größe in lesbarer Form (z.B. 230.0 kB)&lt;br /&gt;
* [icon] =&amp;gt; das Icon (gesetzt wird der Standard vom System selber, basierend auf den Mime-Typen)&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um ein Bild handelt, wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [src] =&amp;gt; den Dateinamen von dem Bild in angepasster größe (wenn das benutzt wird im Katalog selber)&lt;br /&gt;
* [alt] =&amp;gt; Den alt-Text&lt;br /&gt;
* [lb] =&amp;gt; die einzigartige REL=lightbox ID damit die Slimbox angesteuert werden kann&lt;br /&gt;
* [w] =&amp;gt; Bild width&lt;br /&gt;
* [h] =&amp;gt; Bild height&lt;br /&gt;
* [wh] =&amp;gt; Bild width/height in einem String &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer referenzierenden Tabelle können noch folgende Inhalte vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
* [parentJumpTo] =&amp;gt; die ID von dem referenzierenden Katalog (kann in Inserttags genutzt werden)&lt;br /&gt;
* [parentLink] =&amp;gt; Der komplette Link mit einem Standard Text &amp;quot;View item details&amp;quot;&lt;br /&gt;
* [parentUrl] =&amp;gt; Die relative URL zu der Detail (Leser) Seite&lt;br /&gt;
&lt;br /&gt;
=Beispiel Anpassungen=&lt;br /&gt;
&lt;br /&gt;
==Einfache Überprüfung ob Inhalt vorhanden ist==&lt;br /&gt;
Es gibt immer wieder einzelne Felder die nur optional zu befüllen sind.&lt;br /&gt;
Wenn man die Ausgabe von einem Div nur machen möchte wenn auch Inhalte vorhanden sind, kann man das einfach mit einer if-Abfrage erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['immo_bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;immo_galerie&amp;quot;&amp;gt;&amp;lt;?php echo $entry['data']['immo_bildergalerie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel wird die Bildergalerie mit dem umschließenden div nur dann ausgegeben wenn auch mindestens ein Bild vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==Wie man in eigenen Templates beim Katalog Thumbnails generieren kann==&lt;br /&gt;
&lt;br /&gt;
Thumbnails werden in Contao mit der Methode Controller::[[Arbeiten mit Bildern#getImage()|getImage()]] generiert.&lt;br /&gt;
Wichtig dabei ist, dass nicht der ganze Code des Bildes zurückgegeben wird, sondern lediglich die URL zum Thumbnail.&lt;br /&gt;
&lt;br /&gt;
Die Methode sieht wie folgt aus:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
getImage($image, $width, $height, $mode='', $target=null)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Parameter erklären sich wie folgt:&lt;br /&gt;
* $image (String) ''zwingend''&lt;br /&gt;
** erwartet eine relative URL zum Bild, dass verkleinert werden soll (z.B. 'tl_files/meine_bilder/mein_bild.jpg')&lt;br /&gt;
* $width (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $height (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $mode (String) ''optional'' (weitergehende Informationen auf dem [http://www.contao.org/blog-leser/items/die-3-varianten-der-bildanpassung-in-typolight-2.8.html offiziellen Contao-Blog])&lt;br /&gt;
** erwartet einen Angabe darüber, wie das Bild behandelt werden soll. Möglich sind:&lt;br /&gt;
*** &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt; (Exaktes Format) - default&lt;br /&gt;
*** 'proportional' (Proportional)&lt;br /&gt;
*** 'box' (An Rahmen anpassen)&lt;br /&gt;
* $target (String) ''optional''&lt;br /&gt;
** erwartet eine relative URL zu einem Bild, dass ersetzt werden soll (z.B. 'tl_files/meine_bilder/mein_zu_ersetzendes_bild.jpg')&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für ein Template mit einem Thumbnail von 430px Breite und 300px Höhe, das proportional geparst werden soll, könnte also so aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $this-&amp;gt;getImage('tl_files/meine_bilder/mein_bild.jpg',430,300,'proportional'); ?&amp;gt;&amp;quot; alt=&amp;quot;Mein alt-Text für mein Bild&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummerierung der einzelnen Einträge in einer Liste==&lt;br /&gt;
&lt;br /&gt;
Die Paginierung wurde berücksichtigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$perpage=3&lt;br /&gt;
$index=0&lt;br /&gt;
foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
  &amp;lt;$index++&lt;br /&gt;
  if (isset($_GET['page'])):&lt;br /&gt;
    $number = $index + ($perpage * ($_GET['page'] - 1))&lt;br /&gt;
  else:&lt;br /&gt;
    $number = $index&lt;br /&gt;
  endif;&lt;br /&gt;
  ...&lt;br /&gt;
endforeach;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Wobei $perpage die Anzahl der Items enhält, die pro Seite ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
==Kategorien einmalig ausgeben und die Items darunter==&lt;br /&gt;
Beispiel anhand eines modifizierten catalog_simple.tpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (count($this-&amp;gt;entries)):&lt;br /&gt;
   $lastcat=''; ?&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;layout_simple&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;?php foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
      if ($lastcat!=$entry[data]['Kategorie']['value']):&lt;br /&gt;
         $lastcat=$entry[data]['Kategorie']['value']; ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;cat&amp;quot;&amp;gt;&amp;lt;?php echo $entry[data]['Kategorie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;item&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data):&lt;br /&gt;
         if ($field=='Kategorie') continue;&lt;br /&gt;
         if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
         &amp;lt;?php endif;&lt;br /&gt;
      endforeach;&lt;br /&gt;
      if ($entry['showLink'] &amp;amp;&amp;amp; $entry['link']): ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;link&amp;quot;&amp;gt;&amp;lt;?php echo $entry['link']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif;&lt;br /&gt;
      if ($entry['linkEdit']): ?&amp;gt;&lt;br /&gt;
         &amp;lt;div class=&amp;quot;linkEdit&amp;quot;&amp;gt;&amp;lt;?php echo $entry['linkEdit']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else:&lt;br /&gt;
   if ($this-&amp;gt;condition): ?&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;condition&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;condition; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
      &amp;lt;p class=&amp;quot;info&amp;quot;&amp;gt;There are no entries matching your search.&amp;lt;/p&amp;gt;&lt;br /&gt;
   &amp;lt;?php endif;&lt;br /&gt;
endif;&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummern für die Zellen im Katalog==&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von einem simpletable.tpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;layout_simpletable&amp;quot; summary=&amp;quot;Catalog Items&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;thead class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;tr&amp;gt;&lt;br /&gt;
      &amp;lt;?php list($field, $heading) = each($this-&amp;gt;entries);&lt;br /&gt;
      $i = 0;&lt;br /&gt;
      foreach ($heading['data'] as $field=&amp;gt;$data):&lt;br /&gt;
      $i++;&lt;br /&gt;
        if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
          &amp;lt;th class=&amp;quot;header&amp;lt;?php echo $i; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;?php endif;&lt;br /&gt;
      endforeach; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;/thead&amp;gt;&lt;br /&gt;
  &amp;lt;tbody class=&amp;quot;body&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach ($this-&amp;gt;entries as $entry):&lt;br /&gt;
      $n++ ?&amp;gt;&lt;br /&gt;
      &amp;lt;tr class=&amp;quot;item&amp;lt;?php echo $n; ?&amp;gt;&amp;lt;?php echo $entry['class'] ? '  '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data):&lt;br /&gt;
        $k++;&lt;br /&gt;
          if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
            &amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;lt;?php echo $k; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;?php if (strlen($data['value'])):&lt;br /&gt;
              if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
              &amp;lt;?php endif;&lt;br /&gt;
            echo $data['value'];&lt;br /&gt;
              if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
              &amp;lt;?php endif;&lt;br /&gt;
            endif; ?&amp;gt;&lt;br /&gt;
            &amp;lt;/td&amp;gt;&lt;br /&gt;
          &amp;lt;?php endif;&lt;br /&gt;
        endforeach; ?&amp;gt;&lt;br /&gt;
      &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
  &amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Eine Bildergalerie erstellen, wo nur das 1. Bild ausgegeben wird und die anderen in der Lightbox vorhanden sind==&lt;br /&gt;
&lt;br /&gt;
{{Achtung|diese beiden Herangehensweisen sind noch ungetestet.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
Die Ausgabe sollte ungefähr so aussehen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image01.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/image01.jpg&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image02.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt da ja im Grunde 2 Herangehensweisen:&lt;br /&gt;
1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)&lt;br /&gt;
2. Man gibt nur eine Bildergalerie an.&lt;br /&gt;
&lt;br /&gt;
Template (Grundüberlegung):&lt;br /&gt;
1. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
      &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit hat man einfach nur die normale Galerie. Das wäre für diesem Fall ja nicht passend; sei an dieser Stelle jedoch noch mal dokumentiert sein.&lt;br /&gt;
&lt;br /&gt;
Um das jetzt zu verbinden, gibt es verschiedene Vorgehensweisen:&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['meta']['0']['src'];?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot; &amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php else;?&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;lightbox[lightbox_1]&amp;quot; href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Katalog referenzieren==&lt;br /&gt;
Hier im Forum ist die Herangehensweise beschrieben, wie man das machen kann ohne mit Referenzen aus catalog 2 zu arbeiten:&lt;br /&gt;
[http://www.contao-community.de/showthread.php?5448-2-Kataloge-referenzieren-GEL%D6ST]&lt;br /&gt;
&lt;br /&gt;
Hier noch ein kurzes Beispiel wie das gehen kann:&lt;br /&gt;
&lt;br /&gt;
In dem Catalog Leser von einem Autoren sollen die Bücher dargestellt werden (diese sind mit dem Feldtyp Tags referenziert). Die Bücher sind in dem Fall innerhalb des Array 'ref':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($data['ref'] as $id=&amp;gt;$ref): ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;div class=&amp;quot;row_&amp;lt;?php echo $id; ?&amp;gt; buch &amp;lt;?php if($ref['bilder_buch']) echo &amp;quot;buch_mitbild&amp;quot;;?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigner Beschreibung) ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug wie bei dem Feld beispiel_bild der gewünschte Code ausgegeben wird und ansonsten die Werte einfach normal vom Catalog ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($field=='beispiel_bild'):?&amp;gt;&lt;br /&gt;
{{image::&amp;lt;?php echo $data['files']['0']; ?&amp;gt;?width=&amp;lt;?php echo $data['meta']['0']['w']; ?&amp;gt;&amp;amp;height=&amp;lt;?php echo $data['meta']['0']['h']; ?&amp;gt;&amp;amp;alt=&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;amp;mode=crop&amp;amp;rel=lightbox}}&lt;br /&gt;
&amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Weitere Beispiele finden sich im engl. Wiki vom Catalog==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial]&lt;br /&gt;
&lt;br /&gt;
==Beispiele im Forum:==&lt;br /&gt;
&lt;br /&gt;
[http://www.contao-community.de/showthread.php?10335-Berufs-und-Ausstellerverzeichnis-kombinieren&amp;amp;p=74438#post74438 Zwei Kataloge im Template verbinden]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 21:44, 21. Mai 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Wert nur Ausgeben, wenn Mitglied in einer bestimmten Gruppe ist ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
 $this-&amp;gt;import('FrontendUser', 'User');&lt;br /&gt;
 $this-&amp;gt;User-&amp;gt;authenticate(); &lt;br /&gt;
if (in_array(2, $this-&amp;gt;User-&amp;gt;groups)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span&amp;gt;Meine Ausgabe&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zunächst müssen die Werte vom Frontenduser Importiert werden. Danach kann man abfragen ob die ID (in dem fall die 2) in dem Array vorkommt und dann eine Ausgabe machen. So kann man mit einem Template die Ausgabe für mehrere Gruppen individualisieren.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 11:47, 18. Nov. 2011 (CET)&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen anpassen und als Bild ausgeben (Taxonomie mit verlinkten Icons) ==&lt;br /&gt;
&lt;br /&gt;
Ähnlich wie im obrigen Beispiel, wird hier eine Spalte so angepasst, dass die Taxonomie IDs gegen Icons getauscht werden (auch ideal für Immobilien, Ferienwohnungen). &lt;br /&gt;
&lt;br /&gt;
Zunächst wird abgefragt, welches Katalogfeld seperat behandelt wird  &amp;lt;nowiki&amp;gt;&amp;lt;?php if($field=='tags'):?&amp;gt; &amp;lt;/nowiki&amp;gt;. Zwischen den Kommentaren wird zunächst zum einfacheren Vorgehen die (verlinkten) Icons in eine Variable gespeichert ($icons) und darunter mittels foreach das Puffer-Array angesprochen und ausgegeben. Dadurch lassen sich auch Tageinträge größer eins verarbeiten:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($field=='tags'):?&amp;gt;&lt;br /&gt;
&amp;lt;!------------------ ANFANG ------------------&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$icons=array(&lt;br /&gt;
  // Schema: 'id' =&amp;gt; 'zu generierender html code',&lt;br /&gt;
  '2' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/eins.gif&amp;quot; alt=&amp;quot;eins&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;',&lt;br /&gt;
  '3' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/zwei.gif&amp;quot; alt=&amp;quot;zwei&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;',&lt;br /&gt;
  '4' =&amp;gt; '&amp;lt;a href=&amp;quot;#&amp;quot; title=&amp;quot;eins&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/drei.gif&amp;quot; alt=&amp;quot;drei&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;'&lt;br /&gt;
);&lt;br /&gt;
foreach($data['ref'] as $info)&lt;br /&gt;
  echo $icons[$info['id']];&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;!------------------ ENDE ------------------&amp;gt;&lt;br /&gt;
 &amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:carino|carino]] 10:30, 24. Juli 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Zeilenumbrüche in Texten von textarea Feldern als HTML Umbrüche im Template ausgeben==&lt;br /&gt;
Ist ein Feld vom Typ textarea, kann man dort Zeilenumbrüche eingeben und speichern. Diese werden im Frontend aber nicht angezeigt.&lt;br /&gt;
Mit folgendem Befehl werden die Umbrüche in HTML umgewandelt und damit im Frontend sichtbar. Den Code einfach vor der Ausgabe des description Feldes einfügen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
// replace new line feed \n (0x0A) in description field by HTML line break &amp;lt;br/&amp;gt;&lt;br /&gt;
$entry['data']['description']['value'] = str_replace(&amp;quot;\xa&amp;quot;, &amp;quot;&amp;lt;br/&amp;gt;&amp;quot;, $entry['data']['description']['value']); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:bubblez|bubblez]] 01:46, 26. Mar 2011 (UTC)&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Templates_bearbeiten</id>
		<title>Templates bearbeiten</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Templates_bearbeiten"/>
				<updated>2011-10-17T12:43:41Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Links zum Thema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
Es gibt 2 Möglichkeiten, um in Contao Templates zu bearbeiten.&lt;br /&gt;
=Direkt in Contao über das Backend=&lt;br /&gt;
Die Template-Sektion ist im Backend unter Layout --&amp;gt; Templates zu finden. Um ein Template zu bearbeiten, klickt man im Main-Bereich auf ''Neues Template''. Im darauffolgend angezeigten Dropdown Feld findet man eine Liste aller z.Z. existierenden Templates (sowohl die des Cores als auch die der Erweiterungen, die man einsetzt). &lt;br /&gt;
&lt;br /&gt;
[[Datei:be_template_1.jpg|Templateauswahl]]&lt;br /&gt;
&lt;br /&gt;
Man sucht sich das Template, das man bearbeiten will, aus dem Dropdown Feld aus und klickt anschliessend auf den Button ''Template erstellen'' (in diesem Fall das Template ''nav_default.tpl'', das für das Menü zuständig ist).&lt;br /&gt;
&lt;br /&gt;
[[Datei:be_template_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
In der Übersicht sieht man nur das gewählte Template. Rechts davon sind 3 Icons zu finden.&lt;br /&gt;
* '''Template umbennenen:''' Man kann (muss aber nicht!) das gewählte Template umbenennen.&lt;br /&gt;
* '''Template bearbeiten:''' Über diesen Button kann man den Quellcode des Templates bearbeiten&lt;br /&gt;
* '''Template löschen:''' Löscht das entsprechende Template&lt;br /&gt;
&lt;br /&gt;
=Mit einem Editor über FTP=&lt;br /&gt;
Wer lieber mit einem Editor arbeitet, kann Templates auch manuell bearbeiten. Dazu eignet sich am besten ein Editor, welcher direkt auf dem FTP-Server arbeitet, die Template-Dateien von dort öffnet und auch wieder speichert. Z.B. [http://www.pspad.com/ PsPad], [http://notepad-plus-plus.org/ Notepad++] u.a.&lt;br /&gt;
{{Achtung| Niemals [[Contao-Core-Dateien|Core-Dateien]] verändern. Templates, welche man bearbeitet liegen immer im Ordner TL_ROOT/templates/}}&lt;br /&gt;
&lt;br /&gt;
=Mehrere Templates verwenden=&lt;br /&gt;
Contao macht nun folgendes: Wenn bei der Modul-Erstellung das Orginal-Template (nav_default.tpl) ausgewählt wurde, schaut das System zuerst nach, ob in /template/ ein modifiziertes nav_default.tpl liegt. Wenn ja, wird dieses verwendet. Wenn nein, wird das Orginal-Template von /system/modules/frontend/templates/ genommen.&lt;br /&gt;
&lt;br /&gt;
Es ist auch möglich, mehrere modifizierte Templates zu erstellen, wenn z.B. mehrere Menü-Module angelegt werden, die unterschiedliche Templates benötigen. Hier ist es wichtig, beim Umbennenen das '''nav_''' zu erhalten. Die Templatenamen könnten z.B. so lauten: nav_custom1.tpl, nav_modify.tpl usw. Wenn man nun das Menü-Modul erstellt, werden bei der Templateauswahl alle Templates aufgelistet, die ein nav_ davor haben.&lt;br /&gt;
&lt;br /&gt;
{{Achtung| Nochmals zur Erinnerung: Alle modifizierten Templates, egal ob im Orginalnamen oder umbenannt, müssen im Ordner /templates/ abgespeichert werden. NIE das Orginaltemplate überschreiben!. Das hat den Vorteil, dass bei Updates die Templates in /templates/ nicht überschrieben werden, die Orginaltemplates (z.B. system/modules/frontend/templates/nav_default.tpl) jedoch schon.}}&lt;br /&gt;
&lt;br /&gt;
=Links zum Thema=&lt;br /&gt;
[[Eigene_Templates_trotz_fehlender_Auswahlmöglichkeit|Eigene Templates trotz fehlender Auswahlmöglichkeit]]&lt;br /&gt;
&lt;br /&gt;
[[Template_Variablen_anzeigen|Template Variablen anzeigen]]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2011-04-27T13:00:41Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Catalog aus dem Entwicklungs-Repository */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder eine Immobilienverwaltung (mit Frontendeingabe und Workflow) oder einer Rezeptdatenbank (zu sehen auf [http://catalogdemo.dasprojekt.org http://catalogdemo.dasprojekt.org] ).&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumantationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
==Catalog aus dem Contao-Repository==&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
==Catalog aus dem Entwicklungs-Repository==&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. &lt;br /&gt;
&lt;br /&gt;
Man sollte darauf achten, welche Ordner wohin in der Installation kommen:&lt;br /&gt;
* der Inhalt von /drivers nach /system/drivers/&lt;br /&gt;
* alle anderen Ordner (bis auf /custumnav) nach /system/modules/&lt;br /&gt;
* /customnav wird nicht benötigt&lt;br /&gt;
&lt;br /&gt;
Danach muss ein Update der Datenbank gemacht werden.&lt;br /&gt;
&lt;br /&gt;
Eventuell fehlende Sprachdateien können aus den Übersetzungen der Version im Contao-Extension-Repository manuell hinzugefügt werden. So kann dafür gesorgt werden, dass der Catalog dann (weitgehend) in einer Übersetzung benutzt werden kann.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Bei einem Update muss seit Version r239 einmal unter Katalog (Menü von Contao) ganz oben rechts auf 'Maintenance' geklickt werden um die Tags Felder neu aufbauen lassen.}}&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
{{Anmerkung|der Feldtyp &amp;quot;Meta Keywords&amp;quot; ist veraltet, da in der Katalog Konfiguration direkt nun ein Textfeld als Quelle der META Keywords gewählt werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;showTemplateVars(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort,search&amp;quot; angegeben werden. Dadurch ignoriert Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht im Feld &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2011-02-27T21:38:30Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder eine Immobilienverwaltung (mit Frontendeingabe und Workflow) oder einer Rezeptdatenbank (zu sehen auf [http://catalogdemo.dasprojekt.org http://catalogdemo.dasprojekt.org] ).&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumantationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
{{Anmerkung|der Feldtyp &amp;quot;Meta Keywords&amp;quot; ist veraltet, da in der Katalog Konfiguration direkt nun ein Textfeld als Quelle der META Keywords gewählt werden kann.}}&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;showTemplateVars(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2011-02-02T07:35:42Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Welche Variablen hat man in einem Template zur Verfügung? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumantationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
oder&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $this-&amp;gt;showTemplateVars(); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Soll_diese_Seite_wirklich_verlassen_werden_/_JavaScript_im_Backend_geht_nicht</id>
		<title>Soll diese Seite wirklich verlassen werden / JavaScript im Backend geht nicht</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Soll_diese_Seite_wirklich_verlassen_werden_/_JavaScript_im_Backend_geht_nicht"/>
				<updated>2011-01-23T18:52:23Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Contao ist in einem Unterordner installiert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Fehlersuche]]&lt;br /&gt;
Es gibt mehrere Gründe, warum diese Fehlermeldung kommen kann oder warum im Backend das JavaScript nicht richtig funktioniert:&lt;br /&gt;
=Contao ist in einem Unterordner installiert=&lt;br /&gt;
Contao ist in einem Unterordner installiert und im übergeordneten Ordner ist eine .htaccess aktiv (die .htaccess der betroffenen Contao-Installation ist nicht aktiv)&lt;br /&gt;
&lt;br /&gt;
'''Lösung:'''&lt;br /&gt;
&amp;quot;URL Umschreiben&amp;quot; im Contao-Backend einschalten (unter Einstellungen) und die eigene .htaccess im Root-Verzeichnis der Contao-Installation aktivieren indem man die Datei &amp;quot;.htaccess.default&amp;quot; in &amp;quot;.htaccess&amp;quot; umbenennt. Zusätzlich muss in der .htaccess noch die RewriteBase angepasst werden. Dazu öffnet man die .htaccess in einem Editor und sucht nach der Zeile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 #RewriteBase /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Diese ändert man dann in:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 RewriteBase /unterordner/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder (falls man eine subdomain direkt auf den Unterordner zeigen lässt):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
 RewriteBase /&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
und speichert die Änderung ab&lt;br /&gt;
&lt;br /&gt;
= Url's umschreiben=&lt;br /&gt;
Man hat die Einstellung &amp;quot;URL Umschreiben&amp;quot; im Contao-Backend eingeschaltet aber die .htaccess noch nicht aktiviert und angepasst.&lt;br /&gt;
&lt;br /&gt;
'''Lösung:''' &lt;br /&gt;
Die .htaccess aktivieren und die Zeile RewriteBase anpassen (siehe obigen Abschnitt)&lt;br /&gt;
=Kompression=&lt;br /&gt;
Die .js und .css Kompression funktioniert auf dem Server nicht (ist im Backend unter Einstellungen eingeschaltet und die .htaccess ist aktiv).&lt;br /&gt;
&lt;br /&gt;
'''Lösung:''' &lt;br /&gt;
In der .htaccess diese Bereiche entfernen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
##&lt;br /&gt;
# Compress .js and .css files&lt;br /&gt;
##&lt;br /&gt;
AddEncoding gzip .gz&lt;br /&gt;
AddType &amp;quot;text/javascript&amp;quot; .gz&lt;br /&gt;
AddType &amp;quot;text/css&amp;quot; .gz&lt;br /&gt;
RewriteCond %{HTTP:Accept-encoding} gzip&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME} \.(js|css)$&lt;br /&gt;
RewriteCond %{REQUEST_FILENAME}.gz -f&lt;br /&gt;
RewriteRule ^(.*)$ $1.gz [L]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Angepasstes Backend-Template=&lt;br /&gt;
Man hat das Backend-Template be_main.tpl angepasst und nach einem Update funktioniert dieses nicht mehr richtig (aktuell kann dieser Fehler bei einen Update von 2.7.x auf 2.8 passieren).&lt;br /&gt;
&lt;br /&gt;
'''Lösung:'''&lt;br /&gt;
Der mootools Aufruf funktioniert nicht mehr im Header. Um diesen Fehler zu beheben, muss der alte mootools-Code entfernt werden und an der Stelle der neue mootools-Code eingefügt werden. Dieser besteht aus folgenden 2 Zeilen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;plugins/mootools/mootools-core.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot; src=&amp;quot;plugins/mootools/mootools-more.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 10:34, 7. Mär. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Benutzer:MacKP</id>
		<title>Benutzer:MacKP</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Benutzer:MacKP"/>
				<updated>2011-01-08T17:35:50Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nick: MacKP&lt;br /&gt;
&lt;br /&gt;
Real Name: Marc Reimann&lt;br /&gt;
&lt;br /&gt;
Beruf(ung): Webdesigner seit 2005 &lt;br /&gt;
&lt;br /&gt;
Firma: [http://www.mediendepot-ruhr.de Mediendepot Ruhr - Agentur für Kommunikation]&lt;br /&gt;
&lt;br /&gt;
Internetseite: [http://www.mediendepot-ruhr.de www.mediendepot-ruhr.de]&lt;br /&gt;
&lt;br /&gt;
Profil im TYPOlight Forum: [http://www.typolight-community.de/member.php?u=23 MacKP]&lt;br /&gt;
&lt;br /&gt;
Interessen:&lt;br /&gt;
* (X)HTML/CSS die Möglichkeiten von Semantischem Webdesign&lt;br /&gt;
* Barrierefreie Internetseiten&lt;br /&gt;
* SEO (Search Engine Optimisation)&lt;br /&gt;
* Contao Open Source CMS&lt;br /&gt;
* YAML als CSS-Framework&lt;br /&gt;
&lt;br /&gt;
[http://www.amazon.de/registry/wishlist/XN4TIB5T82DC/ref=cm_wl_search_1 Wunschliste bei Amazon (Ich freue mich immer über kleine Spenden *g*)]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-12-17T23:28:05Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Catalog Navigation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumantationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Selectfield aus dem gewählten Katalog. (Andere Felder wie Tagfield gehen nicht und stehen deswegen nicht zur Auswahl!)&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-12-09T21:54:12Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Mehrsprachige Filter mit dem Taxonomie Modul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
Da dieses Modul sehr komplex ist, findet man einzelne Dokumantationen in der Kategorie [[:Category:Catalog|Catalog]].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
Katalogfelder vom Typ &amp;quot;Taxonomie&amp;quot; müssen umgestellt werden auf &amp;quot;Auswahl&amp;quot; mit der Datentabelle &amp;quot;tl_taxonomy&amp;quot;, Option Spaltenwert = name. Für eine schönere Darstellung aktiviert man &amp;quot;Die Optionsauswahl individualisieren&amp;quot;, dann kann man auch Teilbereiche aus der Taxonomie vorgeben und die Anzeige auf &amp;quot;Baum nur mit auswählbaren Kindeinträgen&amp;quot; stellen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen. Falls die ausgewählte Datei nicht unter den Contao-Einstellungen eingetragen ist, so bleibt das Feld &amp;quot;value&amp;quot; (mehr dazu siehe &amp;quot;Welche Variablen hat man in einem Template zur Verfügung?&amp;quot;) leer. Aus diesem Grund sollte man im Vorhinein die entsprechenden Dateitypen freischalten.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Fields (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
{{Anmerkung|Der folgende Punkt ist in catalog 2.0.0 beta1 Build 51 nicht, oder nicht mehr vorhanden!}}&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
{&lt;br /&gt;
   global $objPage;&lt;br /&gt;
   $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
}&lt;br /&gt;
?&amp;gt; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine Kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC). Im Backend können Einträge nur dann manuell sortiert (verschoben) werden, wenn bei keinem Feld die Einstellung 'Sortier DropDown aktivieren' aktiv ist.&lt;br /&gt;
&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]&lt;br /&gt;
[[http://code.google.com/p/typolight-catalog/issues/detail?id=199 Bug-Report]] [[http://code.google.com/p/typolight-catalog/source/detail?r=198 fixed in r198]]}}&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Mit der Erweiterung [[catalog_manualsort]] ist es möglich die Reihenfolge der Einträge im Backend trotzdem zu ändern, auch wenn die Sortieroption für bestimmte Felder aktiv ist.}}&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf die '''Sortierungs Option''' (Feld-Eigenschaften-&amp;gt;Backend Filter Einstellungen-&amp;gt;'Sortierungs Dropdown aktivieren') '''bei keinem Feld aktiviert''' sein.&lt;br /&gt;
{{Achtung|Bitte klären, da die Filterung dann nicht mehr funktioniert. Siehe Thread im Forum: [http://www.contao-community.de/showthread.php?13299-BE-Eintr%E4ge-verwalten-kein-Button-Anwenden-f%FCr-Filterung-vorhanden BE, Einträge verwalten, kein Button 'Anwenden' für Filterung vorhanden ]}}&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
FIND_IN_SET(7, kategorie)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
D.h.: es soll innerhalb von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatieren der Felder vom Typ Text, Nummer und Dezimal==&lt;br /&gt;
Options-Checkbox: '''Zusätzliche Format-Funktionen aktivieren.'''&lt;br /&gt;
&lt;br /&gt;
Das Auswahlmenü '''Format-Funktion''' erlaubt es, die Feldtypen '''Text''', '''Nummer''' und '''Dezimal''' zu formatieren. So gehts:&lt;br /&gt;
&lt;br /&gt;
=== Zeichenkette ===&lt;br /&gt;
Hier gibt man einen sprintf Formatierungs-String ein (siehe [http://de3.php.net/sprintf PHP: sprintf - Manual]) &lt;br /&gt;
&lt;br /&gt;
''Beispiel Zeichenkette:''&lt;br /&gt;
* '''Feldinhalt:''' Broccoli&lt;br /&gt;
* '''Formatierungs-String:''' Auf zum %s!&lt;br /&gt;
* '''Ausgabe:''' Auf zum Broccoli!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Nummer ===&lt;br /&gt;
Hier gibt man nur die Anzahl der gewünschten Nachkommastellen an. In der Ausgabe erscheinen nun die in Contao festgelegten Tausender- und Dezimal-Trennzeichen.&lt;br /&gt;
&lt;br /&gt;
''Beispiel Nummer:''&lt;br /&gt;
* '''Feldinhalt:''' 1000&lt;br /&gt;
* '''Nachkommastellen:''' 2&lt;br /&gt;
* '''Ausgabe:''' 1.000,00&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Datum ===&lt;br /&gt;
Hier gibt man ein Formatierungsmuster ein (siehe [http://de.php.net/manual/de/function.date.php PHP: date - Manual])&lt;br /&gt;
&lt;br /&gt;
''Beispiel Datum:''&lt;br /&gt;
* '''Feldinhalt (Unix Timestamp):''' 1293217200&lt;br /&gt;
* '''Formatierungsmuster:''' Y-m-d H:i&lt;br /&gt;
* '''Ausgabe:''' 2010-12-24 18:00&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
==Mehrsprachige Filter mit dem Taxonomie Modul==&lt;br /&gt;
Möchte man einen Mehrsprachigen Katalog erstellen und diesen nach Taxonomien Filtern, so gibt es u.a. zwei Möglichkeiten dies zu tun:&lt;br /&gt;
* Für jede Sprache einen Taxonomiebaum erstellen. Problem: Doppelte Zuweisung im Katalog-Item + mehrere Taxonomiebäume&lt;br /&gt;
* Bessere Lösung: Man arbeitet mit den sprachabhängigen Inserttags. So kann man je nach Spracheinstellungen der Seite eine passende Frontend-Ausgabe erreichen.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Möchte man jedem Item ein Land zuordnen, so erstellt man einen Taxonomie-Eintrag &amp;quot;Länder&amp;quot; und in fügt in diesen die auswählbaren Länder ein. Für &amp;quot;Deutschland&amp;quot; könnte das dann z.B. so aussehen:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;{{iflng::de}}&amp;lt;/nowiki&amp;gt;Deutschland&amp;lt;nowiki&amp;gt;{{iflng}}{{iflng::en}}&amp;lt;/nowiki&amp;gt;Germany&amp;lt;nowiki&amp;gt;{{iflng}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Nun sollte der Filter auf der deutschen Seite &amp;quot;Deutschland&amp;quot;, und auf der englischen &amp;quot;Germany&amp;quot; ausgeben.&lt;br /&gt;
Dabei gibt es allerdings ein Problem mit dem Feldtyp in der Datenbank. Dieser ist auf wenige Zeichen beschränkt, wird somit bei entsprechender Länge gekürzt. Um dies '''nicht updatesicher''' zu korrigieren, muss man ins phpMyAdmin gehen und unter tl_taxonomy die Länge des entsprechenden Feldes (ich glaube es ist: &amp;quot;name&amp;quot;) ändern. (wird später genauer beschrieben)&lt;br /&gt;
&lt;br /&gt;
==Frontendausgabe Sortieren bei einem Feld was von einem anderen Catalog oder der Taxonomie kommt==&lt;br /&gt;
Beispiel:&lt;br /&gt;
Katalog A hat ein Select wo man Items aus Katalog B auswählen kann.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;(SELECT sorting FROM catalog_tabellenname AS cs WHERE cs.id=catalog_feld) ASC&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
catalog_tabellenname = Tabelle die das Feld beinhaltet (Katalog B)&lt;br /&gt;
catalog_feld = Name von dem Feld welches im Select genutz wird. (Feld in Katalog B)&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Nils.riel|Nils.riel]] 12:04, 24. Nov. 2010 (CET)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit</id>
		<title>Eigene Templates trotz fehlender Auswahlmöglichkeit</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit"/>
				<updated>2010-11-04T21:12:01Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.&lt;br /&gt;
&lt;br /&gt;
Da kann man sich mit einem kleinen Trick behelfen.&lt;br /&gt;
&lt;br /&gt;
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem, läd man dann die passende eigene Template Datei.&lt;br /&gt;
&lt;br /&gt;
=Vorgehen '''Möglichkeit 1'''=&lt;br /&gt;
&lt;br /&gt;
# Kopie des Original Templates anlegen (siehe auch [[Templates_bearbeiten|Templates_bearbeiten]])&lt;br /&gt;
# Zwei neue Templates anlegen (oder mehr.. wenn man das braucht) die man dann später benutzen möchte:&lt;br /&gt;
#* template_1.tpl mit dem Oringinal Code&lt;br /&gt;
#* template_2.tpl mit dem geänderten&lt;br /&gt;
# Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein, welches Template man nun wirklich laden möchte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  $pos = strpos($this-&amp;gt;class, 'klasse_die_man_abfragen_will');&lt;br /&gt;
  if ($pos === false)&lt;br /&gt;
  {&lt;br /&gt;
    include('template_1.tpl');&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    include('template_2.tpl');&lt;br /&gt;
  }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vorgehen '''Möglichkeit 2''' (mit nur einer Datei)=&lt;br /&gt;
&lt;br /&gt;
Man kopiert das entsprechende Core-Template in den Ordner '''roots/templates/''' (per FTP oder übers BE) und erzeugt darin folgende Struktur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (strpos($this-&amp;gt;class, 'klasse-die-man-abfragen-will') !== false): ?&amp;gt;&lt;br /&gt;
  eigenes Template&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
  default Template&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)&lt;br /&gt;
&lt;br /&gt;
'''Möglichkeit 2''' ist mehrfach getestet.&lt;br /&gt;
&lt;br /&gt;
Dann hier noch ein paar Zusatzinfos warum mit strpos gearbeitet wird: [http://php.net/manual/de/function.strpos.php]&lt;br /&gt;
Kurz und knapp: mit einem einfachen Vergleich wie $this-&amp;gt;class == 'meineklasse' kommt man nur dann klar, wenn nur eine Klasse vergeben wurde. strpos funktioniert aber auch dann, wenn mehr als nur eine Klasse da drinn vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Diskussion:Suckerfishalternative</id>
		<title>Diskussion:Suckerfishalternative</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Diskussion:Suckerfishalternative"/>
				<updated>2010-11-03T19:03:38Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Artikel erscheint mir nicht fundiert genug.&lt;br /&gt;
&lt;br /&gt;
Das Javascript, welches schon immer dafür da war, damit es auch in IEs kleiner gleich IE7 funktioniert (IE7 im Quirks-Mode) wird einfach ohne Hinweis darauf weggelassen. Was folgt ist kein Ersatz für dieses Javascript. Es erweckt den Eindruck, dass mit dieser &amp;quot;Alternative&amp;quot; kein JS nötig ist.&lt;br /&gt;
&lt;br /&gt;
Die altbewährte suckerfish-Regel zum Verstecken der UL-Elemente, welches ursprünglich mittels '''display:none;''' erreicht wurde und zwecks Usability auf '''left:-999em;''' geändert wurde, wird hier mit '''margin-left:-99999px;''' erreicht. Liegt darin irgendein entscheidender Vorteil?&lt;br /&gt;
&lt;br /&gt;
Die wichtige Eigenschaft '''width''' für LI-Elemente fehlt. Kann das sein, dass die im Original wirklich unnötig war? (sieht nach Problemen aus)&lt;br /&gt;
&lt;br /&gt;
Das Menü wird nur in '''main''' präsentiert. Das ist nicht realitätsnah. Meistens werden solche Menüs in den Header platziert. Und auf den meisten Seiten befinden sich auch noch Fußzeile und 2 bis 3 Spalten. Ein großes Problem war immer schon, die aufklappenden Untermenüs auch über allen anderen Inhalten anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
'''span.active''' ist überflüssig '''span''' genügt, da nur die aktiven Punkte innerhalb von SPANs sind. UL und LI brauchen nicht auf display:block; gesetzt zu werden, das sind sie sowieso schon. ul.level_2 li wird auf 100% Breite gesetzt, alle LIs sind default bereits auf 100% Breite. SPANs und As werden doppelt auf display:block; gesetzt (redundant). Die Reihenfolge der Pseudoklassen ist nicht einheitlich. Korrekt wäre focus,hover,active. visited fehlt hier ganz. Dem Menü sollte noch eine Klasse mitgegeben werden, damit nicht alle Menüs davon angesprochen werden.&lt;br /&gt;
&lt;br /&gt;
Das Menü ist lediglich für eine Unterebene ausgelegt.&lt;br /&gt;
&lt;br /&gt;
Gehören die invaliden CSS-Eigenschaften -moz-... und -webkit-... in ein Wiki?&lt;br /&gt;
&lt;br /&gt;
Eine Prüfung in den gängigen Browsern scheint nicht stattgefunden zu haben.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Hallo katgirl,&lt;br /&gt;
danke für den Artikel :)&lt;br /&gt;
Kleine Anmerkung:&lt;br /&gt;
CSS Zeile 2 : dort sollte nicht span.active sondern li.active genommen werden (damit die Umrandung so groß ist wie beim normalen hover. sonst ist die zu klein)&lt;br /&gt;
&lt;br /&gt;
Bezüglich invalide CSS-Eigenschaften: ich finde auch sowas gehöhrt in ein Wiki, denn die sind nicht wirklich invalide. Das kann nur ein automatisches Tool nicht verarbeiten... Validatoren sollte man also immer hinterfragen.&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit</id>
		<title>Eigene Templates trotz fehlender Auswahlmöglichkeit</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit"/>
				<updated>2010-10-26T17:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Vorgehen Möglichkeit 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.&lt;br /&gt;
&lt;br /&gt;
Da kann man sich mit einem kleinen Trick behelfen.&lt;br /&gt;
&lt;br /&gt;
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem, läd man dann die passende eigene Template Datei.&lt;br /&gt;
&lt;br /&gt;
=Vorgehen '''Möglichkeit 1'''=&lt;br /&gt;
&lt;br /&gt;
# Kopie des Original Templates anlegen (siehe auch [[Templates_bearbeiten|Templates_bearbeiten]])&lt;br /&gt;
# Zwei neue Templates anlegen (oder mehr.. wenn man das braucht) die man dann später benutzen möchte:&lt;br /&gt;
#* template_1.tpl mit dem Oringinal Code&lt;br /&gt;
#* template_2.tpl mit dem geänderten&lt;br /&gt;
# Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein, welches Template man nun wirklich laden möchte:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  $pos = strpos($this-&amp;gt;class, 'klasse_die_man_abfragen_will');&lt;br /&gt;
  if ($pos === false)&lt;br /&gt;
  {&lt;br /&gt;
    include('template_1.tpl');&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
    include('template_2.tpl');&lt;br /&gt;
  }&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Vorgehen '''Möglichkeit 2''' (mit nur einer Datei)=&lt;br /&gt;
&lt;br /&gt;
Man kopiert das entsprechende Core-Template in den Ordner '''roots/templates/''' (per FTP oder übers BE) und erzeugt darin folgende Struktur.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (strpos($this-&amp;gt;class, 'klasse-die-man-abfragen-will') !== false): ?&amp;gt;&lt;br /&gt;
  eigenes Template&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
  default Template&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)&lt;br /&gt;
&lt;br /&gt;
'''Möglichkeit 2''' ist mehrfach getestet.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen</id>
		<title>Catalog mit Frontend-Editing und Workflow erstellen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen"/>
				<updated>2010-10-15T20:51:37Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Kurzbeschreibung=&lt;br /&gt;
Hier geht es darum, wie man Items im Frontend erstellen und bearbeiten kann. Anhand eines Immobilienkataloges wird auch noch die Einrichtung eines Workflows vorgestellt. Zum Schluss soll es dem Besucher der Seite noch möglich sein Kontakt zu dem Seitenbetreiber aufzunehmen (mithilfe eines Formulars bei dem Item).&lt;br /&gt;
Hier bei dem Beispiel werden exemplarisch zwei Arten von Immobilien angelegt (Haus zum Kaufen und Hotelzimmer).&lt;br /&gt;
Bei diesem Beispiel ist die Backend-Ansicht von den Items nicht wirklich wichtig und wurde auch vernachlässigt, da alle Items über das Frontend verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
=Benötigte Erweiterungen=&lt;br /&gt;
* catalog&lt;br /&gt;
** backend_filterwiz&lt;br /&gt;
** backend_tabletree&lt;br /&gt;
** DC_DynamicTable&lt;br /&gt;
** taxonomy&lt;br /&gt;
* catalogitemuseridfield (für den Workflow wichtig, da damit die Items dem User zugewiesen werden)&lt;br /&gt;
* catalog_mailer (hier gibt es im Moment noch das Problem einer blöden abhängigkeit von catalog_ext. also noch nicht installieren!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein und man sollte die Beschreibung der einzelnen Felder gelesen haben.&lt;br /&gt;
* Erstellung von Taxonomie&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
** Seitenstruktur bearbeiten&lt;br /&gt;
** Module anlegen&lt;br /&gt;
** Templates bearbeiten&lt;br /&gt;
** Mitgliederbereich einrichten (für 2 Gruppen:Makler und Makler-Admins) &lt;br /&gt;
&lt;br /&gt;
=Erstellen der Grundlagen im Backend=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Erstellung von neuen Seiten in der Seitenstruktur==&lt;br /&gt;
&lt;br /&gt;
* Startseite (Hier wird catalogfeatured eingesetzt)&lt;br /&gt;
** Immobilien Liste (Filter und Liste der Immobilien)&lt;br /&gt;
*** Immobilien Details (die Detailseite von einem Item)&lt;br /&gt;
* Geschützer Bereich&lt;br /&gt;
** Immobilien Anlegen (Für normale Makler)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
** Immobilien Anlegen Administration (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-sitestructure.png|Cat Sitestructure]]&lt;br /&gt;
&lt;br /&gt;
==Taxonomie (Bedingung)==&lt;br /&gt;
&lt;br /&gt;
Die Taxonomien sind für die Kategorien und für die Gebiete der Items&lt;br /&gt;
&lt;br /&gt;
Man erstellt sich zuerst die Kategorien und die Optionen. Wobei man hier wie bei einem Baum Verschachtelungen vornimmt:&lt;br /&gt;
&lt;br /&gt;
* Immobilien&lt;br /&gt;
** Immo Art&lt;br /&gt;
*** Haus&lt;br /&gt;
**** Miethaus&lt;br /&gt;
**** Ferienhaus&lt;br /&gt;
**** Haus zum kaufen&lt;br /&gt;
*** Hotel&lt;br /&gt;
**** Hotelzimmer&lt;br /&gt;
** Immo Gebiete&lt;br /&gt;
*** Bizerte&lt;br /&gt;
*** Jendouba&lt;br /&gt;
*** Beja&lt;br /&gt;
*** etc.&lt;br /&gt;
&lt;br /&gt;
Das Ergebniss sollte ungefähr so aussehen wie auf diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-taxonomy.png|Cat Taxonomy]]&lt;br /&gt;
&lt;br /&gt;
==Erstellen von einem Katalog mit Feldtypen==&lt;br /&gt;
&lt;br /&gt;
===Neuer Katalog===&lt;br /&gt;
&lt;br /&gt;
Zuerst erstellt man mit einem Klick auf Neuer Katalog einen neuen Katalog und stellt den wie folgt ein:&lt;br /&gt;
* Name von dem Katalog angeben&lt;br /&gt;
* einen Tabellennamen angeben (die Tabelle wird automatisch erzeugt). Bitte '''keine Tabellen mit tl_* anlgegen''', da diese dann von Contao immer als zu löschen vorgemerkt werden beim aktualisieren der Datenbank.&lt;br /&gt;
* Alias und Felder veröffentlichen kann erst später angegeben werden, wenn diese Felder vorhanden sind.&lt;br /&gt;
* Sprung zur Seite: Angabe der Detailansicht&lt;br /&gt;
* Suche - Suchbar -&amp;gt; aktivieren (keine Bedingung angeben)&lt;br /&gt;
* Alle weiteren Einstellungen werden erst später vorgenommen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat1.png|Cat erstellen Bild1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat2.png|Cat erstellen Bild2]]&lt;br /&gt;
&lt;br /&gt;
===Felder definieren für den Katalog Merkzettel===&lt;br /&gt;
Es werden folgende Felder angelegt (Einstellungen die nicht vorgenommen werden, sind nicht aufgelistet):&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields1.png|Cat Felder erstellen]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields2.png|Cat Neues Feld]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; style=&amp;quot;color:#e76700;&amp;quot; |''Feldtypen für die Items''&lt;br /&gt;
|-&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Spaltenname&lt;br /&gt;
!Typ&lt;br /&gt;
!Einstellungen&lt;br /&gt;
|-&lt;br /&gt;
|Titel&lt;br /&gt;
|immo_titel&lt;br /&gt;
|text&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Sortierungs-Dropdown aktivieren&lt;br /&gt;
** Sortier-Modus -&amp;gt; Gruppieren anhand der ersten zwei Buschstaben und absteigend&lt;br /&gt;
** Backend-Suche aktivieren&lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Alias&lt;br /&gt;
|immo_alias_auto&lt;br /&gt;
|alias&lt;br /&gt;
| * Alias-Titel-Feld -&amp;gt; '''Titel'''&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Benutzer ID&lt;br /&gt;
|userid&lt;br /&gt;
|Frontend-Benutzer&lt;br /&gt;
|-&lt;br /&gt;
|Art&lt;br /&gt;
|immo_art&lt;br /&gt;
|Auswahl&lt;br /&gt;
| &lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* Tabelle für Optionen -&amp;gt; '''tl_taxonomy'''&lt;br /&gt;
* Option Spaltenwert -&amp;gt; '''name'''&lt;br /&gt;
* Option Sortierspalte -&amp;gt; name&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Die Optinsauswahl individualisieren&lt;br /&gt;
** Auswahl der Stamm-Einträge -&amp;gt; Immo Art&lt;br /&gt;
** Modus für Unter-Auswahl -&amp;gt; ''Zeigen Sie die Kindelemente von ausgewählten Einträgen ausgeklappt an.'''&lt;br /&gt;
** Filter des Elternelements -&amp;gt; leer lassen&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Umgebungsbeschreibung&lt;br /&gt;
|immo_umgebung&lt;br /&gt;
|langtext&lt;br /&gt;
| &lt;br /&gt;
* HTML erlauben&lt;br /&gt;
* Rich Text&lt;br /&gt;
* TinyMCE-Editor-Template -&amp;gt; tinyMCE&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bild&lt;br /&gt;
|immo_bild&lt;br /&gt;
|file&lt;br /&gt;
|&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht -&amp;gt; aktivieren&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Produktbild&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bildergalerie&lt;br /&gt;
|immo_bildergalerie&lt;br /&gt;
|file&lt;br /&gt;
| &lt;br /&gt;
* Mehrfach-Auswahl&lt;br /&gt;
* Anordnung nach Dateiname (aufsteigend)&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Veröffentlichen&lt;br /&gt;
|immo_veroeffentlichen&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Online&lt;br /&gt;
|immo_online&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Hervorheben&lt;br /&gt;
|immo_besonders&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Immobilie entfernen&lt;br /&gt;
|immo_delete&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Erklärung====&lt;br /&gt;
* Natürlich sind hier noch viel mehr Felder und Feldtypen angelegt. Diese paar sollten aber reichen um das prinzip zu verdeutlichen.&lt;br /&gt;
** Jede Art hat da ihre eigenen Felder (z.B. ist die Grundstücksfläche für Hotelzimmer nicht wichtig und wird daher dann später nicht mit ausgegeben)&lt;br /&gt;
* Bild und die Galerie sind getrennt, damit später in der Listenansicht ein bestimmtes Bild ausgegeben werden kann.&lt;br /&gt;
* Die Checkboxen '''Veröffentlichen''', '''Online''', '''Hervorheben''' und '''Immobilien entfernen''' sind besonders wichtig für die Verwaltung der Immobilien.&lt;br /&gt;
** Nur Makler-Admins bekommen später die Möglichekeit Immobilien online zu stellen ('''Online''') und diese auf der Startseite anzuzeiben ('''Hervorheben''')&lt;br /&gt;
&lt;br /&gt;
===die Katalog Einstellungen noch einmal überarbeiten===&lt;br /&gt;
Da jetzt die Feldtypen definiert wurden, kann man im Katalog selbst noch weiter Einstellungen vornehmen:&lt;br /&gt;
* Alias-Feld -&amp;gt; Alias&lt;br /&gt;
* Feld veröffentlichen -&amp;gt; NICHTS '''hier nicht angeben, da die Makler im Frontend sonst ihre Items nicht sehen können!'''&lt;br /&gt;
* Meta-Title-Feld -&amp;gt; Titel&lt;br /&gt;
* Meta-Beschreibungs-Feld -&amp;gt; Umgebungsbeschreibung&lt;br /&gt;
* Zeichenkette des Titels formatieren -&amp;gt; &amp;lt;nowiki&amp;gt;{{immo_titel}} - {{immo_gebiet}} - {{immo_art}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{immo_bild::w=100&amp;amp;h=80}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Einstellen von ein paar Items (Produkten)==&lt;br /&gt;
Nun können ein paar Immobilien erstellt werden. Zu beachten ist: diese Immobilien gehören erst einmal '''keinem''' Mitglied. Erst wenn ein Mitglied das Item bearbeitet und speichert ist es ihm Zugeordnet!&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item1.png|Cat new item1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item2.png|Cat new item2]]&lt;br /&gt;
&lt;br /&gt;
==Die nötigen Module==&lt;br /&gt;
&lt;br /&gt;
===Katalog-Filter===&lt;br /&gt;
Damit die Benutzer und die Mitglieder das angezeigt bekommen was sie wollen, sollte man mit einem Filter die Immobilien Einschränkbar machen.&lt;br /&gt;
Damit auch alle die passende Einstellung haben bei der Weiterleitungsseite muss man dieses Modul 3 mal anlegen und jeweils zur passenden Seite mit der Liste weiterleiten (eins anlegen und kopieren erleichtert einem die arbeit enorm *g*)&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Liste (je nachdem für welche Gruppe der Filter gerade erstellt wird)&lt;br /&gt;
* Benützen Sie Filterkonditionen des Listers auf der selben Seite -&amp;gt; aktivieren (dadurch sind nur die Filter aktiv, die auch passende Immobilien beinhalten)&lt;br /&gt;
* Filter pro Abschnitt aktivieren&lt;br /&gt;
** Gebiet -&amp;gt; Auswahlmenü&lt;br /&gt;
** Art -&amp;gt; Auswahlmenü&lt;br /&gt;
* Such-Filter&lt;br /&gt;
** Suchbox aktivieren -&amp;gt; aktivieren&lt;br /&gt;
** Kopfzeile suchen -&amp;gt; Suche (h3)&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** Alle Felder die man durchsuchbar haben möchte ankreuzen (z.B. Titel, Gebiet, Art, Umgebungsbeschreibung)&lt;br /&gt;
* Filter-Layout -&amp;gt; filter_default&lt;br /&gt;
&lt;br /&gt;
===Katalog-Liste===&lt;br /&gt;
Nun muss man mehrere Listenmodule anlegen. Einmal eine Liste für die Besucher. Dort sind alle Immobilien vorhanden, die online sind.&lt;br /&gt;
Für die Makler und Makler-Admins muss man nun für jede Art eine passende Liste erstellen.&lt;br /&gt;
Bei 5 verschiedenen Arten sind das also 5 Listen für Makler, 5 Listen für Makler-Admins.&lt;br /&gt;
Zusammengenommen also 11 Listen. Das ganze kann man sicher auch mittels PHP und MySQL etwas zusammenfassen. Hier geht es jedoch darum, das Prinzip aufzuzeigen und jedem zu ermöglichen so einen Katalog ohne viel Programmierkenntisse anzulegen.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** nach Bedarf anklicken&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung''' Je nach Liste etwas anders:&lt;br /&gt;
** Liste für Besucher der Seite: &amp;lt;nowiki&amp;gt;immo_online=1 and immo_freigeben=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items, die online sind, die freigegeben sind und die nicht Entfernt sind (also als solche Markiert)&lt;br /&gt;
** Liste für Makler &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1' AND (userid={{user::id}} OR userid=0)&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt wo die UserID gleich der eigenen oder keiner ist (alle Items von dem Mitglied und Items die noch keinem zugeordnet sind)&lt;br /&gt;
** Liste für Makler-Admin &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt sind an. Hier wird nicht die UserID abgefangen! Dadurch können Makler-Admins alle Immobilien sehen.&lt;br /&gt;
** Elemente pro Seite -&amp;gt; 6&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_cataloglist&lt;br /&gt;
&lt;br /&gt;
===Katalog-Leser===&lt;br /&gt;
Hiervon gibt es nur ein Modul. Die Makler und Makler-Admins bekommen das Modul Katalog-Edit.&lt;br /&gt;
Die Ausgabe der verschiedenen Arten und deren besonderheit regel ich über das Teplate mit einer extra if-Abfrage (lasse also nur die Felder anzeigen, die überhaupt einen Inhalt haben).&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_full&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogreader&lt;br /&gt;
&lt;br /&gt;
===Katalog-Featured===&lt;br /&gt;
Hiermit werden die hervorgehobenen Items auf der Startseite dargestellt.&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung'''&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;immo_online=1 and immo_besonders and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online, besonders und nicht Entfernt sind.&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogfeatured&lt;br /&gt;
&lt;br /&gt;
===Katalog-Related===&lt;br /&gt;
&lt;br /&gt;
Hiermit werden ähnliche Immobilien auf der Detailseite einer Immobilie angezeigt. Übereinstimmen muss in diesem Beispiel nur das Gebiet. Bei vielen Items sollte die Liste hier weiter eingeschränkt werden (Sinnvoll wäre zum Beispiel die Art der Immobilie)&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Betroffene Felder, die übereinstimmen müssen -&amp;gt; Gebiet&lt;br /&gt;
** Anzahl der Tags die zusammengehöhren müssen -&amp;gt; 0 (macht nur sinn bei mehreren. Dann werden nur Items angezeigt, die zum Beispiel 2 Gleiche Felder haben bei der Angabe von 2)&lt;br /&gt;
** '''Bedingung''' -&amp;gt; &amp;lt;nowiki&amp;gt;immo_online=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online und nicht Entfernt sind.&lt;br /&gt;
** Anzahl der Einträge -&amp;gt; 5&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogrelated&lt;br /&gt;
&lt;br /&gt;
===Katalog-Edit===&lt;br /&gt;
{{Achtung|Hier muss auf das passende Template geachtet werden -&amp;gt; '''catalog_edit.tpl''' sonst kommt eine Fehlermeldung in der Art 'No valid Item ID'}}&lt;br /&gt;
&lt;br /&gt;
Hier sind wieder mehrere Module nötig.&lt;br /&gt;
&lt;br /&gt;
Für Makler in jeder Art eins -&amp;gt; 5 &lt;br /&gt;
&lt;br /&gt;
Für Makler-Admins -&amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
(für jede Art, da die sich ja wie oben genannt in den Feldern unterscheiden)&lt;br /&gt;
&lt;br /&gt;
'''Felder die einen Standardwert bekommen dürfen nicht bearbeitet werden können!'''&lt;br /&gt;
&lt;br /&gt;
Außerdem lasse ich das Alias Feld nicht bearbeiten, damit da keine unschönen Aliase generiert werden.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Benutzer id [userid:useridfield]''' (Nur dadurch wird die ID des Maklers erfasst. Wird aber nicht im Frontend angezeigt)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
** '''Online -&amp;gt; nein'''&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler-Admins:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Online'''&lt;br /&gt;
** '''Hervorheben'''&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
&lt;br /&gt;
Mit diesen unterschiedlich eingestellten Katalog-Edit Modulen erreichen wir den Workflow: &lt;br /&gt;
&lt;br /&gt;
Makler können eine Immobilie bearbeiten und neu anlegen. Die Immobilie können Makler aber nicht online stellen oder hervorheben. Beim Bearbeiten wird durch den Standardwert Online=nein die Immobilie offline gestellt.&lt;br /&gt;
&lt;br /&gt;
Makler-Admins können Immobilien bearbeiten und neu anlegen. Die Immobilien können von Makler-Admins online gestellt werden und hervorgehoben werden (diese können ja die Felder sehen und bearbieten, die dafür zuständig sind).&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-modules.png|Cat Module]]&lt;br /&gt;
&lt;br /&gt;
==Die Module in Artikeln den passenden Seiten zuordnen==&lt;br /&gt;
Nun müssen die Module noch auf die jeweils passende Seite gebracht werden:&lt;br /&gt;
&lt;br /&gt;
* Startseite -&amp;gt; Catalog-Featured &lt;br /&gt;
** Immobilien Liste -&amp;gt; Catalog-Filter und Catalog Liste (für Besucher!)&lt;br /&gt;
*** Immobilien Details -&amp;gt; Catalog-Leser&lt;br /&gt;
* '''Geschützer Bereich'''&lt;br /&gt;
** Immobilien Anlegen -&amp;gt; mit Navigation für die Unterseiten (Für Makler und Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
** Immobilien Anlegen Administration -&amp;gt; mit Navigation für Unterseiten (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
&lt;br /&gt;
Ich kann nur aus eigener Erfahrung sprechen: Spätestens jetzt ist man froh, wenn man eine Eindeutige Benennung der Module vorgenommen hat! Hier muss man mit vielen ähnlichen Modulen arbeiten und da ist es auf dauer sehr mühselig, wenn man nicht auf den 1. Blick erkennen kann was es ist.&lt;br /&gt;
Ich selber benenne die Module daher zum Beispiel so: 'Katalog - Makler - Edit - Haus zum kaufen'&lt;br /&gt;
Dadurch ist die automatische Sortierung im Backend außreichend gut. Man sieht was für ein Modul es ist (Katalog) für welche Gruppe es ist (Makler) was genau es machen soll (Edit) und für welchen Bereich es gedacht und eingestellt ist (Haus zum kaufen).&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Tutorial zum Anpassen der Templates : [[Catalog_Templates_anpassen|Catalog Templates anpassen]]&lt;br /&gt;
&lt;br /&gt;
== Fehlermeldungen / FAQ ==&lt;br /&gt;
=== tinyFrontend.php TinyMCE konfiguration ===&lt;br /&gt;
&amp;lt;nowiki&amp;gt;Cannot find rich text editor configuration file &amp;quot;tinyFrontend.php&amp;quot;. You can copy system/config/tinyMCE.php to this name &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Einfach die tinyMCE.php in /system/config/ kopieren und in tinyFrontend.php umbenennen. Dann kann diese Datei nach Wunsch angepasst werden und ist Vorlage für den WYSIWIG Editor im Frontend-Editing. &lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 14:52, 18. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit</id>
		<title>Eigene Templates trotz fehlender Auswahlmöglichkeit</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit"/>
				<updated>2010-09-29T18:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: hat „Templates ohne Auswahl“ nach „Eigene Templates trotz fehlender Auswahlmöglichkeit“ verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.&lt;br /&gt;
&lt;br /&gt;
Da kann man sich mit einem kleinen Trick behelfen.&lt;br /&gt;
&lt;br /&gt;
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem läd man dann die passende eigene Template Datei.&lt;br /&gt;
&lt;br /&gt;
Vorgehen:&lt;br /&gt;
&lt;br /&gt;
1. Kopie des Original Templates anlegen (siehe auch [[Templates_bearbeiten|Templates_bearbeiten]])&lt;br /&gt;
2. Zwei neue Templates anlegen (oder mehr.. wenn man das braucht) die man dann später benutzen möchte:&lt;br /&gt;
* template_1.tpl mit dem Oringinal Code&lt;br /&gt;
* template_2.tpl mit dem geänderten&lt;br /&gt;
3. Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein welches Template man nun wirklich laden möchte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
  $pos = strpos($this-&amp;gt;class, 'klasse_die_man_abfragen_will');&lt;br /&gt;
  if ($pos === false) {include('template_1.tpl');}&lt;br /&gt;
  else {include('template_2.tpl');}&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)&lt;br /&gt;
&lt;br /&gt;
{{msgImportant|noch nicht getestet.. auch noch nicht unter 2.9 mit Template Ordner getestet... Bitte PM o.ä. an mich wenn das jemand getestet hat und es funktioniert}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Templates_ohne_Auswahl</id>
		<title>Templates ohne Auswahl</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Templates_ohne_Auswahl"/>
				<updated>2010-09-29T18:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: hat „Templates ohne Auswahl“ nach „Eigene Templates trotz fehlender Auswahlmöglichkeit“ verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#WEITERLEITUNG [[Eigene Templates trotz fehlender Auswahlmöglichkeit]]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Diskussion:Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit</id>
		<title>Diskussion:Eigene Templates trotz fehlender Auswahlmöglichkeit</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Diskussion:Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit"/>
				<updated>2010-09-29T18:36:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: hat „Diskussion:Templates ohne Auswahl“ nach „Diskussion:Eigene Templates trotz fehlender Auswahlmöglichkeit“ verschoben&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Der Titel hat vielleicht zu wenig Aussagekraft. Was hälst du von sowas in der Art?&lt;br /&gt;
&lt;br /&gt;
'''Eigene Templates trotz fehlender Auswahlmöglichkeit'''&lt;br /&gt;
&lt;br /&gt;
Meistens reicht sowas hier, das finde ich etwas übersichtlicher. Das !== ist auch irgendwie logischer.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if (strpos($this-&amp;gt;class, 'klasse-die-man-abfragen-will') !== false): ?&amp;gt;&lt;br /&gt;
  eigenes Template&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
  default Template&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Grüße&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit</id>
		<title>Eigene Templates trotz fehlender Auswahlmöglichkeit</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Eigene_Templates_trotz_fehlender_Auswahlm%C3%B6glichkeit"/>
				<updated>2010-09-29T15:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: Die Seite wurde neu angelegt: „{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}} Category: Admin_HOWTOS  Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Module…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
Es gibt den ein oder anderen Fall, wo man gerne verschiedene Templates in Modulen nutzen möchte, aber leider nicht die Auswahl hat im Modul selber.&lt;br /&gt;
&lt;br /&gt;
Da kann man sich mit einem kleinen Trick behelfen.&lt;br /&gt;
&lt;br /&gt;
Man vergibt der Stelle wo man ein extra Template nutzen möchte eine bestimmte CSS Klasse und fragt diese ab. Je nach dem läd man dann die passende eigene Template Datei.&lt;br /&gt;
&lt;br /&gt;
Vorgehen:&lt;br /&gt;
&lt;br /&gt;
1. Kopie des Original Templates anlegen (http://de.contaowiki.org/Templates_bearbeiten)&lt;br /&gt;
2. Zwei neue Templates anlegen (oder mehr.. wenn man das braucht) die man dann später benutzen möchte:&lt;br /&gt;
* template_1.tpl mit dem Oringinal Code&lt;br /&gt;
* template_2.tpl mit dem geänderten&lt;br /&gt;
3. Jetzt nimmt man sich das Template was immer geladen wird und bringt dort die If-Abfrage ein welches Template man nun wirklich laden möchte:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
  $pos = strpos($this-&amp;gt;class, 'klasse_die_man_abfragen_will');&lt;br /&gt;
  if ($pos === false) {include('template_1.tpl');}&lt;br /&gt;
  else {include('template_2.tpl');}&lt;br /&gt;
 ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wichtig ist eben, das man die Klasse auch richtig vergibt ;-)&lt;br /&gt;
&lt;br /&gt;
{{msgImportant|noch nicht getestet.. auch noch nicht unter 2.9 mit Template Ordner getestet... Bitte PM o.ä. an mich wenn das jemand getestet hat und es funktioniert}}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 17:36, 29. Sep. 2010 (CEST)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/News_und_Kommentare_in_verschiedenen_Layoutbereichen</id>
		<title>News und Kommentare in verschiedenen Layoutbereichen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/News_und_Kommentare_in_verschiedenen_Layoutbereichen"/>
				<updated>2010-09-18T18:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev_Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Basiert auf:=&lt;br /&gt;
&lt;br /&gt;
root/system/module/news/templates/mod_newsreader.tpl (Contao 2.9.1)&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung:==&lt;br /&gt;
&lt;br /&gt;
Eröffnet die Möglichkeit die Kommentare und das Formular von den News zu trennen und in einem anderen Layoutbereich zu präsentieren, z.B. in der rechten Spalte.&lt;br /&gt;
&lt;br /&gt;
=Ausführliche Beschreibung/Sonstige Infos:=&lt;br /&gt;
Hier das mod_newsreader.tpl leicht modifiziert, natürlich nicht im Core, sondern eine Kopie im Ordner roots/templates/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'comments-only') === false): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;lt;?php echo $this-&amp;gt;class; ?&amp;gt; block&amp;quot;&amp;lt;?php echo $this-&amp;gt;cssID; ?&amp;gt;&amp;lt;?php if ($this-&amp;gt;style): ?&amp;gt; style=&amp;quot;&amp;lt;?php echo $this-&amp;gt;style; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;headline): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;?php echo $this-&amp;gt;hl; ?&amp;gt;&amp;gt;&amp;lt;?php echo $this-&amp;gt;headline; ?&amp;gt;&amp;lt;/&amp;lt;?php echo $this-&amp;gt;hl; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;articles; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- indexer::stop --&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;back&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $this-&amp;gt;referer; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $this-&amp;gt;back; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;back; ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;!-- indexer::continue --&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only - ENDE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse news-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'news-only') === false): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;allowComments &amp;amp;&amp;amp; ($this-&amp;gt;comments || !$this-&amp;gt;requireLogin)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;ce_comments block&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;?php echo $this-&amp;gt;hlc; ?&amp;gt;&amp;gt;&amp;lt;?php echo $this-&amp;gt;addComment; ?&amp;gt;&amp;lt;/&amp;lt;?php echo $this-&amp;gt;hlc; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;comments as $comment) echo $comment; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;pagination; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!$this-&amp;gt;requireLogin): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- indexer::stop --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;form&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;confirm): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;confirm&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;confirm; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo $this-&amp;gt;action; ?&amp;gt;&amp;quot; id=&amp;quot;&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;formbody&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;FORM_SUBMIT&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['name']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['name']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['email']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['email']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['website']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['website']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php if (isset($this-&amp;gt;fields['captcha'])): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['captcha']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;label for=&amp;quot;ctrl_captcha&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;fields['captcha']-&amp;gt;generateQuestion(); ?&amp;gt;&amp;lt;span class=&amp;quot;mandatory&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;label for=&amp;quot;ctrl_&amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;id; ?&amp;gt;&amp;quot; class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;label; ?&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;submit_container&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;submit&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;submit; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;hasError): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--//--&amp;gt;&amp;lt;![CDATA[//&amp;gt;&amp;lt;!--&lt;br /&gt;
window.scrollTo(null, ($('&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;').getElement('p.error').getPosition().y - 20));&lt;br /&gt;
//--&amp;gt;&amp;lt;!]]&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- indexer::continue --&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse news-only - ENDE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'comments-only') === false): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only - ENDE --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich habe nur IF-Abfragen mit den entsprechenden ENDIFs eingefügt. Habe einen HTML-Kommentar dazu geschrieben, kann man natürlich entfernen. Vergibt man keine Klassen, funktioniert das Template wie im Original (Contao 2.9.1).&lt;br /&gt;
&lt;br /&gt;
Jetzt noch den Artikel mit dem Newsreader kopieren, einfügen und den neuen auf rechte Spalte einstellen. Jetzt noch den Inhaltselementen dieser Artikel die Klassen news-only und comments-only mitgeben. Alles so, wie in den Screenshots zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Frontend_News_Kommentare_getrennt.png]][[Datei:Article_News_Newsreader.png]][[Datei:Eingabe_der_Klasse.png]]&lt;br /&gt;
&lt;br /&gt;
Die Funktion einen Kommentar hinzuzufügen funktioniert einwandfrei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Freundlicherweise zur Verfügung gestellt von [http://www.contao-community.de/member.php?72-Andreas Andreas Burg] burgtech [http://andreasburg.de/ (http://andreasburg.de/)]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Datei:Frontend_News_Kommentare_getrennt.png</id>
		<title>Datei:Frontend News Kommentare getrennt.png</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Datei:Frontend_News_Kommentare_getrennt.png"/>
				<updated>2010-09-18T18:48:48Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: News und die Kommentare in getrennten Bereichen im Frontend&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;News und die Kommentare in getrennten Bereichen im Frontend&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Datei:Eingabe_der_Klasse.png</id>
		<title>Datei:Eingabe der Klasse.png</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Datei:Eingabe_der_Klasse.png"/>
				<updated>2010-09-18T18:47:17Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: Eingabe der speziellen Klasse bei News&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Eingabe der speziellen Klasse bei News&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Datei:Article_News_Newsreader.png</id>
		<title>Datei:Article News Newsreader.png</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Datei:Article_News_Newsreader.png"/>
				<updated>2010-09-18T18:44:37Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: News und Newsreader in der Artikel Ansicht&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;News und Newsreader in der Artikel Ansicht&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/News_und_Kommentare_in_verschiedenen_Layoutbereichen</id>
		<title>News und Kommentare in verschiedenen Layoutbereichen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/News_und_Kommentare_in_verschiedenen_Layoutbereichen"/>
				<updated>2010-09-18T18:42:09Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: Die Seite wurde neu angelegt: „Category:Dev_Snippets  {{AppliesTo |Version=ab 2.9 }}  =Basiert auf:=  root/system/module/news/templates/mod_newsreader.tpl (Contao 2.9.1)  ==Kurzbeschreibung…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Dev_Snippets]]&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Basiert auf:=&lt;br /&gt;
&lt;br /&gt;
root/system/module/news/templates/mod_newsreader.tpl (Contao 2.9.1)&lt;br /&gt;
&lt;br /&gt;
==Kurzbeschreibung:==&lt;br /&gt;
&lt;br /&gt;
Eröffnet die Möglichkeit die Kommentare und das Formular von den News zu trennen und in einem anderen Layoutbereich zu präsentieren, z.B. in der rechten Spalte.&lt;br /&gt;
&lt;br /&gt;
=Ausführliche Beschreibung/Sonstige Infos:=&lt;br /&gt;
Hier das mod_newsreader.tpl leicht modifiziert, natürlich nicht im Core, sondern eine Kopie im Ordner roots/templates/&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'comments-only') === false): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;&amp;lt;?php echo $this-&amp;gt;class; ?&amp;gt; block&amp;quot;&amp;lt;?php echo $this-&amp;gt;cssID; ?&amp;gt;&amp;lt;?php if ($this-&amp;gt;style): ?&amp;gt; style=&amp;quot;&amp;lt;?php echo $this-&amp;gt;style; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;headline): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;?php echo $this-&amp;gt;hl; ?&amp;gt;&amp;gt;&amp;lt;?php echo $this-&amp;gt;headline; ?&amp;gt;&amp;lt;/&amp;lt;?php echo $this-&amp;gt;hl; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;articles; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- indexer::stop --&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;back&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $this-&amp;gt;referer; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $this-&amp;gt;back; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;back; ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;!-- indexer::continue --&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only - ENDE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse news-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'news-only') === false): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;allowComments &amp;amp;&amp;amp; ($this-&amp;gt;comments || !$this-&amp;gt;requireLogin)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;ce_comments block&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;?php echo $this-&amp;gt;hlc; ?&amp;gt;&amp;gt;&amp;lt;?php echo $this-&amp;gt;addComment; ?&amp;gt;&amp;lt;/&amp;lt;?php echo $this-&amp;gt;hlc; ?&amp;gt;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;comments as $comment) echo $comment; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $this-&amp;gt;pagination; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!$this-&amp;gt;requireLogin): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- indexer::stop --&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;form&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;confirm): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p class=&amp;quot;confirm&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;confirm; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo $this-&amp;gt;action; ?&amp;gt;&amp;quot; id=&amp;quot;&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;formbody&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;FORM_SUBMIT&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['name']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['name']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['email']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['email']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['website']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;?php echo $this-&amp;gt;fields['website']-&amp;gt;generateLabel(); ?&amp;gt; &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php if (isset($this-&amp;gt;fields['captcha'])): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['captcha']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;label for=&amp;quot;ctrl_captcha&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;fields['captcha']-&amp;gt;generateQuestion(); ?&amp;gt;&amp;lt;span class=&amp;quot;mandatory&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;widget&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;generateWithError(); ?&amp;gt; &amp;lt;label for=&amp;quot;ctrl_&amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;id; ?&amp;gt;&amp;quot; class=&amp;quot;invisible&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;fields['comment']-&amp;gt;label; ?&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;submit_container&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; class=&amp;quot;submit&amp;quot; value=&amp;quot;&amp;lt;?php echo $this-&amp;gt;submit; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;hasError): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--//--&amp;gt;&amp;lt;![CDATA[//&amp;gt;&amp;lt;!--&lt;br /&gt;
window.scrollTo(null, ($('&amp;lt;?php echo $this-&amp;gt;formId; ?&amp;gt;').getElement('p.error').getPosition().y - 20));&lt;br /&gt;
//--&amp;gt;&amp;lt;!]]&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;!-- indexer::continue --&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse news-only - ENDE --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only --&amp;gt;&lt;br /&gt;
&amp;lt;?php   if(strpos($this-&amp;gt;class, 'comments-only') === false): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;!-- Nächster Block nicht im Reader mit der Klasse comments-only - ENDE --&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ich habe nur IF-Abfragen mit den entsprechenden ENDIFs eingefügt. Habe einen HTML-Kommentar dazu geschrieben, kann man natürlich entfernen. Vergibt man keine Klassen, funktioniert das Template wie im Original (Contao 2.9.1).&lt;br /&gt;
&lt;br /&gt;
Jetzt noch den Artikel mit dem Newsreader kopieren, einfügen und den neuen auf rechte Spalte einstellen. Jetzt noch den Inhaltselementen dieser Artikel die Klassen news-only und comments-only mitgeben. Alles so, wie in den Screenshots zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Die Funktion einen Kommentar hinzuzufügen funktioniert einwandfrei.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Freundlicherweise zur Verfügung gestellt von [http://www.contao-community.de/member.php?72-Andreas Andreas Burg] burgtech [http://andreasburg.de/ (http://andreasburg.de/)]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/ModulNavigation</id>
		<title>ModulNavigation</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/ModulNavigation"/>
				<updated>2010-08-24T10:41:48Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Hauptmenü bis Ebene 3 und Ebene 4 im Untermenü */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=Alle Versionen|Version=ab 2.9}}&lt;br /&gt;
[[Category: Core]]&lt;br /&gt;
Das Modul &amp;quot;Navigationsmenü&amp;quot; erzeugt eine strukturierte Ansicht von Links auf eine gewählte Seitenunterstruktur.&lt;br /&gt;
&lt;br /&gt;
=Konfiguration=&lt;br /&gt;
'''Abkürzungen:'''&lt;br /&gt;
&lt;br /&gt;
FE = Frontend (die Internetseite aus User Sicht)&lt;br /&gt;
&lt;br /&gt;
BE = Backend (die Administrationsoberfläche)&lt;br /&gt;
&lt;br /&gt;
== Wie erstellt man mit dem Modul Navigationsmenü verschiedene Navigationen? ==&lt;br /&gt;
Seit einiger Zeit sind die Module &amp;quot;Navigation Hauptpunkte&amp;quot; und &amp;quot;Navigation Unterpunkte&amp;quot; nicht mehr nötig. In TYPOlight 2.7 werden diese sogar ganz entfernt. Man nutzt nun immer das Modul &amp;quot;Navigationsmenü&amp;quot; mit den folgenden verschiedenen Einstellungsarten:&lt;br /&gt;
* Startlevel&lt;br /&gt;
* Stoplevel&lt;br /&gt;
* Hard Limit&lt;br /&gt;
* Geschütze Menüpunkte anzeigen&lt;br /&gt;
* Referenzseite festlegen&lt;br /&gt;
&lt;br /&gt;
Was diese Einstellungen bewirken, wird hier an einer Beispielseite gezeigt.&lt;br /&gt;
&lt;br /&gt;
Es wird davon ausgegangen, dass schon ein Seitenlayout, eine Seitenstruktur und verschiedene Module vorhanden sind. Wie man diese macht, kann man in anderen Tutorials lesen oder sehen.&lt;br /&gt;
&lt;br /&gt;
== Der Aufbau der Seite ==&lt;br /&gt;
=== Das Frontend oder wie sieht die Seite aus? ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_grundlage.png]]&lt;br /&gt;
&lt;br /&gt;
Die Seite ist in 5 Bereiche unterteilt:&lt;br /&gt;
* ganz oben befindet sich der Header mit einer Navigation (meist der &amp;quot;Servicenavigation&amp;quot;),&lt;br /&gt;
* darunter ein Navigationspfad (Breadcrumb- oder Brotkrummennavigation),&lt;br /&gt;
* links unterhalb der Breadcrumbnavigation ist die Hauptnavigation der Seite (hier in der Vertikalen),&lt;br /&gt;
* rechts von der Hauptnavigation liegt der Contentbereich (Artikel) mit dem Inhalt der Seite&lt;br /&gt;
* und am unteren Ende der Seite ist wie meistens der Footer.&lt;br /&gt;
&lt;br /&gt;
==== Die Seitenstruktur ====&lt;br /&gt;
&lt;br /&gt;
Die Seitenstruktur besteht aus 3 Ebenen und einem zusätzlichen Bereich Service_Navi. Die Service_Navi ist im Menü ausgeblendet, damit diese nicht im Hauptmenü angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Seitenstruktur.png]]&lt;br /&gt;
&lt;br /&gt;
Die Seiten sind zum leichteren Verständnis so benannt, dass zuerst die Ebene und dann der Menüpunkt im Seitennamen stehen.&lt;br /&gt;
&lt;br /&gt;
Ebene 1 hat also 4 Menüpunkte (Ebene_1 Punk_1 / Ebene_1 Punk_2 / Ebene_1 Punk_3 / Ebene_1 Punk_4).&lt;br /&gt;
&lt;br /&gt;
Unter Ebene_1 Punk_2 sind weitere Menüpunkte angelegt (Ebene_2 Punk_1 / Ebene_2 Punk_2 / Ebene_2 Punk_3 / Ebene_2 Punk_4).&lt;br /&gt;
&lt;br /&gt;
Und so weiter …&lt;br /&gt;
&lt;br /&gt;
=== Die Module ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Module.png]]&lt;br /&gt;
&lt;br /&gt;
In diesem Beispiel sind 4 Module angelegt.&lt;br /&gt;
* TL-test_Footer -&amp;gt; &amp;quot;Eigener HTML-Code&amp;quot;, der den Footer der Seite bildet. (unwichtig)&lt;br /&gt;
* TL-test_hauptnavi_links -&amp;gt; Diese Navigation wird die Hauptnavigation sein, in der sich am meisten ändern wird.&lt;br /&gt;
* TL-test_Headernavi -&amp;gt; Hier ist eine Navigation für den Header.&lt;br /&gt;
* TL-test_navigationspfad &amp;gt; Navigationspfad, der hilft zu sehen, wo man gerade ist. ;) (unwichtig)&lt;br /&gt;
&lt;br /&gt;
==== Das Modul &amp;quot;Navigationsmenü&amp;quot; (für das Modul TL-test_hauptnavi_links) ====&lt;br /&gt;
Die Standardeinstellung sieht wie folgt aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Modul_hauptnavi_links_starteinstellung.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Einstellungen ergeben dieses Bild im FE - Ansicht nur für das Hauptmenü:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_starteinstellung.png]]&lt;br /&gt;
&lt;br /&gt;
*  Der Startlevel legt fest, ab welchem Level die Menüpunkte im FE generiert werden. In diesem Fall wird ab der 1. Ebene angezeigt.&lt;br /&gt;
* Der Stoplevel besagt in diesem Fall das alle Menüpunkte angezeigt werden.&lt;br /&gt;
* Das Hard Limit ist aus und hat daher keine Auswirkung.&lt;br /&gt;
* Eine Referenzseite wurde nicht festgelegt, deshalb wird hier von dem Startpunkt dieser Internetseite ausgegangen.&lt;br /&gt;
&lt;br /&gt;
== Der Stoplevel ==&lt;br /&gt;
Der Stoplevel legt fest bis zu welchem Level die Menüpunkte angezeigt werden. Was bedeutet das nun? In der Regel möchte man ein Menü mit vielen Unterpunkten nicht direkt dem User zumuten, daher zeigt man ihm nur einen Teil der Seiten und erst später mehr. Typischerweise ist es so, das man erst die 2. Ebene sieht, wenn man auf einen Punkt der 1. Ebene geklickt hat usw.&lt;br /&gt;
&lt;br /&gt;
=== Stoplevel auf 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Diese Einstellungen ergeben dies im FE:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_stoplevel_1_ebene1_punkt1.png]]&lt;br /&gt;
&lt;br /&gt;
Der User ist hier auf der Seite Ebene1_Punk1 und sieht nur die Hauptpunkte der Navigation&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_stoplevel_1_ebene1_punkt3.png]]&lt;br /&gt;
&lt;br /&gt;
Der User ist hier auf der Seite Ebene1_Punk2 und sieht die Unterpunkte von Punkt2 sowie die Menüpunkte der Ebene 1 darüber.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_stoplevel_1_ebene2_punkt2.png]]&lt;br /&gt;
&lt;br /&gt;
Und so geht es weiter, wenn der User dann in Ebene 2 auf Punkt 2 ist.&lt;br /&gt;
&lt;br /&gt;
=== Stoplevel auf 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 2 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Jetzt wird im FE die 1. und die 2. Ebene angezeigt. Der Rest ist wie bei Stoplevel 1. Und so geht es weiter, daher wird hier auf weitere Beispiele verzichtet.&lt;br /&gt;
&lt;br /&gt;
== Der Startlevel ==&lt;br /&gt;
Der Startlevel legt fest, ab welchem Level die Menüpunkte angezeigt werden. Genau diese Einstellung wird benötigt, um zum Beispiel ein Untermenü  (früher das Modul &amp;quot;Navigation Untermenü&amp;quot;) zu erstellen.&lt;br /&gt;
&lt;br /&gt;
=== Startlevel auf 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 0 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
Im FE sieht das dann so aus:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_startlevel_1_ebene1_punkt2.png]]&lt;br /&gt;
&lt;br /&gt;
Ab Level 1 bedeutet also, dass das Menü erst angezeigt wird, wenn man in Ebene 1 in einem Punkt ist, der Unterpunkte hat -&lt;br /&gt;
hier in dem Beispiel also auf Seite Ebene1_Punk2 (in der oberen Navigation zu sehen). Alles, was darunter ist, wird angezeigt - hier in der linken Hauptnavigation, so wie es gerade eingestellt wurde. Wenn man also in Ebene1_Punk4 ist, werden alle Unterpunkte unter Punkt 4 der 1. Ebene angezeigt und so weiter.&lt;br /&gt;
&lt;br /&gt;
=== Startlevel auf 2 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 2 || 0 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
FE:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_startlevel_2_ebene2_punkt2.png]]&lt;br /&gt;
&lt;br /&gt;
Erst wenn Unterpunkte unter Ebene 2 vorhanden sind, wird jetzt das Menü angezeigt - hier in dem Fall bei der Seite Ebene2_Punk2.&lt;br /&gt;
&lt;br /&gt;
=== Startlevel auf 3 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 0 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
Und so geht es wieder weiter. Bei Startlevel 3 wird das Menü erst angezeigt, wenn unter Ebene 3 noch weitere Unterpunkte sind...&lt;br /&gt;
&lt;br /&gt;
== Eine Referenzseite festlegen ==&lt;br /&gt;
&amp;quot;Eine Referenzseite als Quell- oder Zielseite des Moduls festlegen.&amp;quot; Mit der Referenzseite legt mal fest, was der Startpunkt der Navigation ist. Sobald man eine '''Referenzseite''' festgelegt hat, funktioniert das '''Startlevel''' nicht mehr! Das bildet dann also immer die Ebenen direkt ab der Referenzseite ab.&lt;br /&gt;
&lt;br /&gt;
=== Referenzseite auf Seite Ebene1_Punk2 ===&lt;br /&gt;
&lt;br /&gt;
[[Datei:Modul_referenzseite_ebene1_punkt2.png]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Nein || Seite Ebene1_Punk2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_referenzseite_ebene1_punkt3_ebene1_punkt1.png]]&lt;br /&gt;
&lt;br /&gt;
Jetzt wird die Navigation immer die Unterpunkte von Seite Ebene1_Punk2 anzeigen, auch wenn man auf der Seite Ebene1_Punk1 ist oder irgendwo anderes. Das ist also eine einfache Möglichkeit, so etwas wie eine Service Navigation (mit immer den gleichen Seiten wie Kontakt / Impressum o.ä.) anzulegen. Wenn man nun dem Modul TL-test_Headernavi die Referenzseite &amp;quot;Service Navi&amp;quot; gibt,&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Nein || Seite &amp;quot;Service Navi&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
bekommt man im FE diese Ausgabe:&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_referenzseite_service_navi.png]]&lt;br /&gt;
&lt;br /&gt;
==== Theoretisches Beispiel ====&lt;br /&gt;
Wenn man jetzt eine Internetseite mit 3 Navigationen hat, die gleichzeitig angezeigt werden sollen, kann man also im BE unter der Seitenstruktur 3 verschiedene Seiten anlegen: Menue1 / Menue2 / Menue3, und dann unter diesen Seiten die jeweils gewünschten Unterseiten. Nun legt man 3 Module an, jedes Modul mit einer anderen Referenzseite (Modul1 -&amp;gt; Menue1 etc.). Und schon hat man auf der Internetseite 3 komplett verschiedene Navigationen, die sich nicht gegenseitig beeinflussen.&lt;br /&gt;
&lt;br /&gt;
== Das Hard Limit ==&lt;br /&gt;
Das Hard Limit legt fest, das keine Menüpunkte (auch keine aktiven Menüpunkte) jenseits des Stoplevels angezeigt werden. Was soll das nun wieder? Wenn man das Hard Limit einschaltet, ohne irgendwelche anderen Parameter beim Stoplevel, ändert sich die Anzeige überhaupt nicht im Vergleich zu dem Beispiel ohne eingeschaltetes Hard Limit (s.o.).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 0 || Ja || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_grundlage.png]]&lt;br /&gt;
&lt;br /&gt;
'''Das Hard Limit ergibt nur einen Sinn im Zusammenhang mit einem zugewiesenen Stoplevel!'''&lt;br /&gt;
&lt;br /&gt;
=== Das Hard Limit mit einem Stoplevel von 1 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Ja || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Datei:Internetseite_stoplevel_1_ebene1_punkt1.png]]&lt;br /&gt;
&lt;br /&gt;
Jetzt bewirkt das Hard Limit, das keine Seiten unterhalb des Stoplevels angezeigt werden. Hier in dem Beispiel wird nur Ebene 1 angezeigt, auch wenn man in der Struktur eine oder zwei Ebenen tiefer ist. Das Menü erweitert sich also nicht mehr beim Navigieren.&lt;br /&gt;
&lt;br /&gt;
'''So kann man dann auch das Modul &amp;quot;Navigation Hauptpunkte&amp;quot; nachbilden.'''&lt;br /&gt;
&lt;br /&gt;
(Wie sie jetzt gerade auch im Bild oben bei der Headernavi zu sehen ist.)&lt;br /&gt;
&lt;br /&gt;
= Praxisbeispiele =&lt;br /&gt;
&lt;br /&gt;
== Hauptmenü / Untermenü / Service Navigation ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hauptmenü&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Ja || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Untermenü&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 1 || 1 || Ja || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Service Navigation&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 || Ja || Service Navi&lt;br /&gt;
|}&lt;br /&gt;
Das ist eine der häufigsten Verwendungen:&lt;br /&gt;
* Das Hauptmenü ist als horizontale Navigation auf der Seite und zeigt nur die Punkte der Ebene 1 an.&lt;br /&gt;
* Das Untermenü ist meist auf der linken Seite neben dem Content und beinhaltet alle Unterseiten, wobei auch nur die Unterpunkte in Ebene 3 angezeigt werden, wenn man in Ebene 2 auf einer Seite ist mit Unterseiten.&lt;br /&gt;
* Die Service Navigation zeigt nur die Seiten an, die innerhalb der Seite &amp;quot;Service Navi&amp;quot; liegen, also direkt untergeordnet sind. Der Stoplevel und das Hard Limit dienen hier dazu auf keinen Fall Seiten unterhalb dieser anzuzeigen. Ein Beispiel wäre eine &amp;quot;Vielen Dank&amp;quot;-Seite, die innerhalb der &amp;quot;Kontakt&amp;quot;-Seite liegt, um angezeigt zu werden, wenn das Formular erfolgreich versendet wurde.&lt;br /&gt;
&lt;br /&gt;
== Hauptmenü bis Ebene 3 und Ebene 4 im Untermenü ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hauptmenü&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 1 ||Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Untermenü&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 3 || 1 || Nein || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
* Das Hauptmenü wird so alles anzeigen, wie weiter oben besprochen: Die unteren Ebenen werden erst eingeblendet, wenn man auf einer Seite ist, die auch Unterseiten hat.&lt;br /&gt;
=== Ausblenden der 4. Ebene in dem Hauptmenü: === &lt;br /&gt;
====Das kann man ganz einfach per CSS machen mit ====&lt;br /&gt;
&lt;br /&gt;
 #left ul li ul li ul li ul li {&lt;br /&gt;
   position: absolute;&lt;br /&gt;
   top: -1000em;&lt;br /&gt;
   left: -1000em;&lt;br /&gt;
   height: 1px;&lt;br /&gt;
   width: 1px; &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
====Per Template Anpassung nur die Ebenen Anzeigen die man in dem Hauptmenü braucht====&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?php $ebenen = array('level_1', 'level_2', 'level_3'); ?&amp;gt;&lt;br /&gt;
 &amp;lt;?php if(in_array($this-&amp;gt;level, $ebenen)) :?&amp;gt;&lt;br /&gt;
  Die normale Navigationsausgabe&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Am Anfang wird in eine Array geschrieben, welche Ebenen man ausgeben möchte. Danach wird anhand des Navigationslevels überprüft ob eine Ausgabe stattfinden soll oder nicht.&lt;br /&gt;
&lt;br /&gt;
* Das Untermenü zeigt erst die Seiten in Ebene 4 und darunter an. Diese kann man auch wunderbar als Content Element einfach in den Artikeln einbinden, wo man es gerade braucht.&lt;br /&gt;
&lt;br /&gt;
== Menü zum Ausklappen (per Hover like Suckerfish oder eine Hybridnavigation etc.) ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Hauptmenü&lt;br /&gt;
|-&lt;br /&gt;
! Startlevel !! Stoplevel !! Hard Limit !! Referenzseite festlegen&lt;br /&gt;
|-&lt;br /&gt;
| 0 || 2 || Ja || keine angegeben&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So hat man dann ein Menü was man per CSS (und ein wenig JavaScript) zum Ausklappmenü machen kann. Hier nur bis Ebene 2 und nicht mehr. Für mehr Ebenen einfach den Stoplevel hochsetzen.&lt;br /&gt;
&lt;br /&gt;
=Wichtige Style Klassen=&lt;br /&gt;
&lt;br /&gt;
Kurzfassung (Klasse die Vergeben wird = Zustand):&lt;br /&gt;
* Keine Klasse = nicht ausgewählt&lt;br /&gt;
* active = die aktive Seite&lt;br /&gt;
* trail = Übergeordnete Seite der aktiven Seite&lt;br /&gt;
* first = erstes Listen-Element einer Liste&lt;br /&gt;
* last = letztes Listen-Element einer Liste&lt;br /&gt;
&lt;br /&gt;
Zusätzlich kann man noch unter Seitenstruktur den einzelnen Seiten und Navigationspunkten eine extra Klasse vergeben.&lt;br /&gt;
&lt;br /&gt;
Tutorial erstellt von --[[Benutzer:MacKP|MacKP]] 22:37, 10. Mär. 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
= Wichtige Hinweise (nach TYPOlight / Contao Versionen): =&lt;br /&gt;
== TYPOLight 2.8.1 ==&lt;br /&gt;
Hier hat das Navigationsmodul einen Bug, der das richtige Setzen von einer Referenzseite verhindert:&lt;br /&gt;
&lt;br /&gt;
http://dev.contao.org/issues/1635&lt;br /&gt;
&lt;br /&gt;
Die Lösung ist hier beschrieben:&lt;br /&gt;
&lt;br /&gt;
http://dev.contao.org/issues/1635#note-6&lt;br /&gt;
&lt;br /&gt;
Man muss dazu die ModuleNavigation.php in /system/modules/frontend/ bearbeiten.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 12:58, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Navigationspunkte_nicht_verlinken</id>
		<title>Navigationspunkte nicht verlinken</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Navigationspunkte_nicht_verlinken"/>
				<updated>2010-08-22T22:38:58Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=2.8.x|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
Wenn man in der [[ModulNavigation|Navigation]] bestimmte Seiten nicht verlinkt, sondern nur als Überschrift haben will, ist eine Anpassung des Templates notwendig.&lt;br /&gt;
&lt;br /&gt;
Dazu das Template nav_default.tpl kopieren und neu benennen (z.b. nav_partiallinked.tpl). Eine Anleitung für die Templatebearbeitung ist [[Templates bearbeiten|hier]] zu finden.&lt;br /&gt;
&lt;br /&gt;
Das Template nun wie folgt ändern:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;ul class=&amp;quot;&amp;lt;?php echo $this-&amp;gt;level; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;items as $item): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($item['isActive']): ?&amp;gt;&lt;br /&gt;
&amp;lt;li class=&amp;quot;active&amp;lt;?php if ($item['class']): ?&amp;gt; &amp;lt;?php echo $item['class']; ?&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;active&amp;lt;?php if ($item['class']): ?&amp;gt; &amp;lt;?php echo $item['class']; ?&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;gt;&amp;lt;?php if(strpos($item['class'], 'nonavlink')===false):?&amp;gt; &amp;lt;a href=&amp;quot;&amp;lt;?php echo $item['href']; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?&amp;gt;&amp;quot;&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['accesskey'] != ''): ?&amp;gt; accesskey=&amp;quot;&amp;lt;?php echo $item['accesskey']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['tabindex']): ?&amp;gt; tabindex=&amp;quot;&amp;lt;?php echo $item['tabindex']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['nofollow']): ?&amp;gt; rel=&amp;quot;nofollow&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['target']; ?&amp;gt;&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;?php if(strpos($item['class'], 'nonavlink')===false):?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Als nächster Schritt muss im Modul &amp;quot;Navigation&amp;quot; als Template ''nav_partiallinked.tpl'' gewählt werden.&lt;br /&gt;
&lt;br /&gt;
Abschliessend müssen in der Seitenstruktur allen Seiten, die nicht verlinkt werden sollen, die Klasse ''nonavlink'' hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:howto_menu_nicht_verlinken.jpg|Der Seite die Klasse hinzufügen]]&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-08-19T13:28:48Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;?php if(strlen($this-&amp;gt;Input-&amp;gt;get('kategorie')))&lt;br /&gt;
 {&lt;br /&gt;
 global $objPage;&lt;br /&gt;
 $objPage-&amp;gt;pageTitle = &amp;quot;&amp;quot;.$entry['data']['kategorie']['value'].&amp;quot; - XYZ&amp;quot;;  &lt;br /&gt;
 } ?&amp;gt; &lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
In dem Beispiel wird jetzt (nur wenn eine kategorie gewählt ist) der Wert von '''$entry['data']['kategorie']['value']''' Eingesetzt.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen</id>
		<title>Catalog mit Frontend-Editing und Workflow erstellen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen"/>
				<updated>2010-08-18T22:55:21Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Katalog-Edit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Kurzbeschreibung=&lt;br /&gt;
Hier geht es darum, wie man Items im Frontend erstellen und bearbeiten kann. Anhand eines Immobilienkataloges wird auch noch die Einrichtung eines Workflows vorgestellt. Zum Schluss soll es dem Besucher der Seite noch möglich sein Kontakt zu dem Seitenbetreiber aufzunehmen (mithilfe eines Formulars bei dem Item).&lt;br /&gt;
Hier bei dem Beispiel werden exemplarisch zwei Arten von Immobilien angelegt (Haus zum Kaufen und Hotelzimmer).&lt;br /&gt;
Bei diesem Beispiel ist die Backend-Ansicht von den Items nicht wirklich wichtig und wurde auch vernachlässigt, da alle Items über das Frontend verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
=Benötigte Erweiterungen=&lt;br /&gt;
* catalog&lt;br /&gt;
** backend_filterwiz&lt;br /&gt;
** backend_tabletree&lt;br /&gt;
** DC_DynamicTable&lt;br /&gt;
** taxonomy&lt;br /&gt;
* catalogitemuseridfield (für den Workflow wichtig, da damit die Items dem User zugewiesen werden)&lt;br /&gt;
* catalog_mailer (hier gibt es im Moment noch das Problem einer blöden abhängigkeit von catalog_ext. also noch nicht installieren!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein und man sollte die Beschreibung der einzelnen Felder gelesen haben.&lt;br /&gt;
* Erstellung von Taxonomie&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
** Seitenstruktur bearbeiten&lt;br /&gt;
** Module anlegen&lt;br /&gt;
** Templates bearbeiten&lt;br /&gt;
** Mitgliederbereich einrichten (für 2 Gruppen:Makler und Makler-Admins) &lt;br /&gt;
&lt;br /&gt;
=Erstellen der Grundlagen im Backend=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Erstellung von neuen Seiten in der Seitenstruktur==&lt;br /&gt;
&lt;br /&gt;
* Startseite (Hier wird catalogfeatured eingesetzt)&lt;br /&gt;
** Immobilien Liste (Filter und Liste der Immobilien)&lt;br /&gt;
*** Immobilien Details (die Detailseite von einem Item)&lt;br /&gt;
* Geschützer Bereich&lt;br /&gt;
** Immobilien Anlegen (Für normale Makler)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
** Immobilien Anlegen Administration (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-sitestructure.png|Cat Sitestructure]]&lt;br /&gt;
&lt;br /&gt;
==Taxonomie (Bedingung)==&lt;br /&gt;
&lt;br /&gt;
Die Taxonomien sind für die Kategorien und für die Gebiete der Items&lt;br /&gt;
&lt;br /&gt;
Man erstellt sich zuerst die Kategorien und die Optionen. Wobei man hier wie bei einem Baum Verschachtelungen vornimmt:&lt;br /&gt;
&lt;br /&gt;
* Immobilien&lt;br /&gt;
** Immo Art&lt;br /&gt;
*** Haus&lt;br /&gt;
**** Miethaus&lt;br /&gt;
**** Ferienhaus&lt;br /&gt;
**** Haus zum kaufen&lt;br /&gt;
*** Hotel&lt;br /&gt;
**** Hotelzimmer&lt;br /&gt;
** Immo Gebiete&lt;br /&gt;
*** Bizerte&lt;br /&gt;
*** Jendouba&lt;br /&gt;
*** Beja&lt;br /&gt;
*** etc.&lt;br /&gt;
&lt;br /&gt;
Das Ergebniss sollte ungefähr so aussehen wie auf diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-taxonomy.png|Cat Taxonomy]]&lt;br /&gt;
&lt;br /&gt;
==Erstellen von einem Katalog mit Feldtypen==&lt;br /&gt;
&lt;br /&gt;
===Neuer Katalog===&lt;br /&gt;
&lt;br /&gt;
Zuerst erstellt man mit einem Klick auf Neuer Katalog einen neuen Katalog und stellt den wie folgt ein:&lt;br /&gt;
* Name von dem Katalog angeben&lt;br /&gt;
* einen Tabellennamen angeben (die Tabelle wird automatisch erzeugt). Bitte '''keine Tabellen mit tl_* anlgegen''', da diese dann von Contao immer als zu löschen vorgemerkt werden beim aktualisieren der Datenbank.&lt;br /&gt;
* Alias und Felder veröffentlichen kann erst später angegeben werden, wenn diese Felder vorhanden sind.&lt;br /&gt;
* Sprung zur Seite: Angabe der Detailansicht&lt;br /&gt;
* Suche - Suchbar -&amp;gt; aktivieren (keine Bedingung angeben)&lt;br /&gt;
* Alle weiteren Einstellungen werden erst später vorgenommen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat1.png|Cat erstellen Bild1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat2.png|Cat erstellen Bild2]]&lt;br /&gt;
&lt;br /&gt;
===Felder definieren für den Katalog Merkzettel===&lt;br /&gt;
Es werden folgende Felder angelegt (Einstellungen die nicht vorgenommen werden, sind nicht aufgelistet):&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields1.png|Cat Felder erstellen]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields2.png|Cat Neues Feld]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; style=&amp;quot;color:#e76700;&amp;quot; |''Feldtypen für die Items''&lt;br /&gt;
|-&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Spaltenname&lt;br /&gt;
!Typ&lt;br /&gt;
!Einstellungen&lt;br /&gt;
|-&lt;br /&gt;
|Titel&lt;br /&gt;
|immo_titel&lt;br /&gt;
|text&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Sortierungs-Dropdown aktivieren&lt;br /&gt;
** Sortier-Modus -&amp;gt; Gruppieren anhand der ersten zwei Buschstaben und absteigend&lt;br /&gt;
** Backend-Suche aktivieren&lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Alias&lt;br /&gt;
|immo_alias_auto&lt;br /&gt;
|alias&lt;br /&gt;
| * Alias-Titel-Feld -&amp;gt; '''Titel'''&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Benutzer ID&lt;br /&gt;
|userid&lt;br /&gt;
|Frontend-Benutzer&lt;br /&gt;
|-&lt;br /&gt;
|Art&lt;br /&gt;
|immo_art&lt;br /&gt;
|Auswahl&lt;br /&gt;
| &lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* Tabelle für Optionen -&amp;gt; '''tl_taxonomy'''&lt;br /&gt;
* Option Spaltenwert -&amp;gt; '''name'''&lt;br /&gt;
* Option Sortierspalte -&amp;gt; name&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Die Optinsauswahl individualisieren&lt;br /&gt;
** Auswahl der Stamm-Einträge -&amp;gt; Immo Art&lt;br /&gt;
** Modus für Unter-Auswahl -&amp;gt; ''Zeigen Sie die Kindelemente von ausgewählten Einträgen ausgeklappt an.'''&lt;br /&gt;
** Filter des Elternelements -&amp;gt; leer lassen&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Umgebungsbeschreibung&lt;br /&gt;
|immo_umgebung&lt;br /&gt;
|langtext&lt;br /&gt;
| &lt;br /&gt;
* HTML erlauben&lt;br /&gt;
* Rich Text&lt;br /&gt;
* TinyMCE-Editor-Template -&amp;gt; tinyMCE&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bild&lt;br /&gt;
|immo_bild&lt;br /&gt;
|file&lt;br /&gt;
|&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht -&amp;gt; aktivieren&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Produktbild&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bildergalerie&lt;br /&gt;
|immo_bildergalerie&lt;br /&gt;
|file&lt;br /&gt;
| &lt;br /&gt;
* Mehrfach-Auswahl&lt;br /&gt;
* Anordnung nach Dateiname (aufsteigend)&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Veröffentlichen&lt;br /&gt;
|immo_veroeffentlichen&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Online&lt;br /&gt;
|immo_online&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Hervorheben&lt;br /&gt;
|immo_besonders&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Immobilie entfernen&lt;br /&gt;
|immo_delete&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Erklärung====&lt;br /&gt;
* Natürlich sind hier noch viel mehr Felder und Feldtypen angelegt. Diese paar sollten aber reichen um das prinzip zu verdeutlichen.&lt;br /&gt;
** Jede Art hat da ihre eigenen Felder (z.B. ist die Grundstücksfläche für Hotelzimmer nicht wichtig und wird daher dann später nicht mit ausgegeben)&lt;br /&gt;
* Bild und die Galerie sind getrennt, damit später in der Listenansicht ein bestimmtes Bild ausgegeben werden kann.&lt;br /&gt;
* Die Checkboxen '''Veröffentlichen''', '''Online''', '''Hervorheben''' und '''Immobilien entfernen''' sind besonders wichtig für die Verwaltung der Immobilien.&lt;br /&gt;
** Nur Makler-Admins bekommen später die Möglichekeit Immobilien online zu stellen ('''Online''') und diese auf der Startseite anzuzeiben ('''Hervorheben''')&lt;br /&gt;
&lt;br /&gt;
===die Katalog Einstellungen noch einmal überarbeiten===&lt;br /&gt;
Da jetzt die Feldtypen definiert wurden, kann man im Katalog selbst noch weiter Einstellungen vornehmen:&lt;br /&gt;
* Alias-Feld -&amp;gt; Alias&lt;br /&gt;
* Feld veröffentlichen -&amp;gt; NICHTS '''hier nicht angeben, da die Makler im Frontend sonst ihre Items nicht sehen können!'''&lt;br /&gt;
* Meta-Title-Feld -&amp;gt; Titel&lt;br /&gt;
* Meta-Beschreibungs-Feld -&amp;gt; Umgebungsbeschreibung&lt;br /&gt;
* Zeichenkette des Titels formatieren -&amp;gt; &amp;lt;nowiki&amp;gt;{{immo_titel}} - {{immo_gebiet}} - {{immo_art}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{immo_bild::w=100&amp;amp;h=80}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Einstellen von ein paar Items (Produkten)==&lt;br /&gt;
Nun können ein paar Immobilien erstellt werden. Zu beachten ist: diese Immobilien gehören erst einmal '''keinem''' Mitglied. Erst wenn ein Mitglied das Item bearbeitet und speichert ist es ihm Zugeordnet!&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item1.png|Cat new item1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item2.png|Cat new item2]]&lt;br /&gt;
&lt;br /&gt;
==Die nötigen Module==&lt;br /&gt;
&lt;br /&gt;
===Katalog-Filter===&lt;br /&gt;
Damit die Benutzer und die Mitglieder das angezeigt bekommen was sie wollen, sollte man mit einem Filter die Immobilien Einschränkbar machen.&lt;br /&gt;
Damit auch alle die passende Einstellung haben bei der Weiterleitungsseite muss man dieses Modul 3 mal anlegen und jeweils zur passenden Seite mit der Liste weiterleiten (eins anlegen und kopieren erleichtert einem die arbeit enorm *g*)&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Liste (je nachdem für welche Gruppe der Filter gerade erstellt wird)&lt;br /&gt;
* Benützen Sie Filterkonditionen des Listers auf der selben Seite -&amp;gt; aktivieren (dadurch sind nur die Filter aktiv, die auch passende Immobilien beinhalten)&lt;br /&gt;
* Filter pro Abschnitt aktivieren&lt;br /&gt;
** Gebiet -&amp;gt; Auswahlmenü&lt;br /&gt;
** Art -&amp;gt; Auswahlmenü&lt;br /&gt;
* Such-Filter&lt;br /&gt;
** Suchbox aktivieren -&amp;gt; aktivieren&lt;br /&gt;
** Kopfzeile suchen -&amp;gt; Suche (h3)&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** Alle Felder die man durchsuchbar haben möchte ankreuzen (z.B. Titel, Gebiet, Art, Umgebungsbeschreibung)&lt;br /&gt;
* Filter-Layout -&amp;gt; filter_default&lt;br /&gt;
&lt;br /&gt;
===Katalog-Liste===&lt;br /&gt;
Nun muss man mehrere Listenmodule anlegen. Einmal eine Liste für die Besucher. Dort sind alle Immobilien vorhanden, die online sind.&lt;br /&gt;
Für die Makler und Makler-Admins muss man nun für jede Art eine passende Liste erstellen.&lt;br /&gt;
Bei 5 verschiedenen Arten sind das also 5 Listen für Makler, 5 Listen für Makler-Admins.&lt;br /&gt;
Zusammengenommen also 11 Listen. Das ganze kann man sicher auch mittels PHP und MySQL etwas zusammenfassen. Hier geht es jedoch darum, das Prinzip aufzuzeigen und jedem zu ermöglichen so einen Katalog ohne viel Programmierkenntisse anzulegen.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** nach Bedarf anklicken&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung''' Je nach Liste etwas anders:&lt;br /&gt;
** Liste für Besucher der Seite: &amp;lt;nowiki&amp;gt;immo_online=1 and immo_freigeben=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items, die online sind, die freigegeben sind und die nicht Entfernt sind (also als solche Markiert)&lt;br /&gt;
** Liste für Makler &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1' AND (userid={{user::id}} OR userid=0)&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt wo die UserID gleich der eigenen oder keiner ist (alle Items von dem Mitglied und Items die noch keinem zugeordnet sind)&lt;br /&gt;
** Liste für Makler-Admin &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt sind an. Hier wird nicht die UserID abgefangen! Dadurch können Makler-Admins alle Immobilien sehen.&lt;br /&gt;
** Elemente pro Seite -&amp;gt; 6&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_cataloglist&lt;br /&gt;
&lt;br /&gt;
===Katalog-Leser===&lt;br /&gt;
Hiervon gibt es nur ein Modul. Die Makler und Makler-Admins bekommen das Modul Katalog-Edit.&lt;br /&gt;
Die Ausgabe der verschiedenen Arten und deren besonderheit regel ich über das Teplate mit einer extra if-Abfrage (lasse also nur die Felder anzeigen, die überhaupt einen Inhalt haben).&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_full&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogreader&lt;br /&gt;
&lt;br /&gt;
===Katalog-Featured===&lt;br /&gt;
Hiermit werden die hervorgehobenen Items auf der Startseite dargestellt.&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung'''&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;immo_online=1 and immo_besonders and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online, besonders und nicht Entfernt sind.&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogfeatured&lt;br /&gt;
&lt;br /&gt;
===Katalog-Related===&lt;br /&gt;
&lt;br /&gt;
Hiermit werden ähnliche Immobilien auf der Detailseite einer Immobilie angezeigt. Übereinstimmen muss in diesem Beispiel nur das Gebiet. Bei vielen Items sollte die Liste hier weiter eingeschränkt werden (Sinnvoll wäre zum Beispiel die Art der Immobilie)&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Betroffene Felder, die übereinstimmen müssen -&amp;gt; Gebiet&lt;br /&gt;
** Anzahl der Tags die zusammengehöhren müssen -&amp;gt; 0 (macht nur sinn bei mehreren. Dann werden nur Items angezeigt, die zum Beispiel 2 Gleiche Felder haben bei der Angabe von 2)&lt;br /&gt;
** '''Bedingung''' -&amp;gt; &amp;lt;nowiki&amp;gt;immo_online=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online und nicht Entfernt sind.&lt;br /&gt;
** Anzahl der Einträge -&amp;gt; 5&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogrelated&lt;br /&gt;
&lt;br /&gt;
===Katalog-Edit===&lt;br /&gt;
{{Achtung|Hier muss auf das passende Template geachtet werden -&amp;gt; '''catalog_edit.tpl''' sonst kommt eine Fehlermeldung in der Art 'No valid Item ID'}}&lt;br /&gt;
&lt;br /&gt;
Hier sind wieder mehrere Module nötig.&lt;br /&gt;
&lt;br /&gt;
Für Makler in jeder Art eins -&amp;gt; 5 &lt;br /&gt;
&lt;br /&gt;
Für Makler-Admins -&amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
(für jede Art, da die sich ja wie oben genannt in den Feldern unterscheiden)&lt;br /&gt;
&lt;br /&gt;
'''Felder die einen Standardwert bekommen dürfen nicht bearbeitet werden können!'''&lt;br /&gt;
&lt;br /&gt;
Außerdem lasse ich das Alias Feld nicht bearbeiten, damit da keine unschönen Aliase generiert werden.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Benutzer id [userid:useridfield]''' (Nur dadurch wird die ID des Maklers erfasst. Wird aber nicht im Frontend angezeigt)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
** '''Online -&amp;gt; nein'''&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler-Admins:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Online'''&lt;br /&gt;
** '''Hervorheben'''&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
&lt;br /&gt;
Mit diesen unterschiedlich eingestellten Katalog-Edit Modulen erreichen wir den Workflow: &lt;br /&gt;
&lt;br /&gt;
Makler können eine Immobilie bearbeiten und neu anlegen. Die Immobilie können Makler aber nicht online stellen oder hervorheben. Beim Bearbeiten wird durch den Standardwert Online=nein die Immobilie offline gestellt.&lt;br /&gt;
&lt;br /&gt;
Makler-Admins können Immobilien bearbeiten und neu anlegen. Die Immobilien können von Makler-Admins online gestellt werden und hervorgehoben werden (diese können ja die Felder sehen und bearbieten, die dafür zuständig sind).&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-modules.png|Cat Module]]&lt;br /&gt;
&lt;br /&gt;
==Die Module in Artikeln den passenden Seiten zuordnen==&lt;br /&gt;
Nun müssen die Module noch auf die jeweils passende Seite gebracht werden:&lt;br /&gt;
&lt;br /&gt;
* Startseite -&amp;gt; Catalog-Featured &lt;br /&gt;
** Immobilien Liste -&amp;gt; Catalog-Filter und Catalog Liste (für Besucher!)&lt;br /&gt;
*** Immobilien Details -&amp;gt; Catalog-Leser&lt;br /&gt;
* '''Geschützer Bereich'''&lt;br /&gt;
** Immobilien Anlegen -&amp;gt; mit Navigation für die Unterseiten (Für Makler und Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
** Immobilien Anlegen Administration -&amp;gt; mit Navigation für Unterseiten (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
&lt;br /&gt;
Ich kann nur aus eigener Erfahrung sprechen: Spätestens jetzt ist man froh, wenn man eine Eindeutige Benennung der Module vorgenommen hat! Hier muss man mit vielen ähnlichen Modulen arbeiten und da ist es auf dauer sehr mühselig, wenn man nicht auf den 1. Blick erkennen kann was es ist.&lt;br /&gt;
Ich selber benenne die Module daher zum Beispiel so: 'Katalog - Makler - Edit - Haus zum kaufen'&lt;br /&gt;
Dadurch ist die automatische Sortierung im Backend außreichend gut. Man sieht was für ein Modul es ist (Katalog) für welche Gruppe es ist (Makler) was genau es machen soll (Edit) und für welchen Bereich es gedacht und eingestellt ist (Haus zum kaufen).&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Tutorial zum Anpassen der Templates : [[Catalog_Templates_anpassen|Catalog Templates anpassen]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 14:52, 18. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-08-18T22:51:23Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Mit '''Taxonomie''' können Stichworte hierarchisch angelegt und verwaltet werden. Diese sind Grundlage für Filter, Navigation und Verschlagwortung (sog. ''Tagging'') in den Katalogen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module==&lt;br /&gt;
Für eine Basisanwendung der Katalog-Erweiterung können folgende Module eingesetzt werden:&lt;br /&gt;
* Mit '''Catalog List''' kann eine Liste von Einträgen angezeigt werden.&lt;br /&gt;
* Eine Detailansicht eines Eintrags kann mit Hilfe des '''Catalog Reader''' angezeigt werden. Eine ''Catalog List'' verweist dabei auf den ''Catalog Reader''. Der ''Catalog Reader'' muss natürlich nur dann verwendet werden, wenn von einer Auflistung aus eine Detailseite eines Eintrags angezeigt werden soll.&lt;br /&gt;
&lt;br /&gt;
Für eine weiterführende Benutzung der Katalog-Erweiterung stehen optional diese Module zur Verfügung:&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
=Erstellen eines Katalogs (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Attribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Titel so beeinflussen, das die aktuelle Kategorie einer Liste dort steht==&lt;br /&gt;
Im Catalog Template folgendes nutzen:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;?php &lt;br /&gt;
 global $objPage;&lt;br /&gt;
 $objPage-&amp;gt;pageTitle = 'dein neuer title den du haben willst';&lt;br /&gt;
 ?&amp;gt;  &lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Google_Analytics</id>
		<title>Google Analytics</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Google_Analytics"/>
				<updated>2010-07-21T09:15:38Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Core]]&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=bis 2.8.x&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
[[w:de:Google_Analytics|Google Analytics]] ist ein kostenloser Dienst, welcher der Analyse von Zugriffen auf Webseiten dient (Es gillt nur ein Monatliches Limit an Seitenaufrufen in Höhe von 5.000.000 Aufrufen).&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Um Verfälschungen auszuschließen, wird der Google Analytics Code erst im Frontend angezeigt, wenn man sich aus dem Backend ausgeloggt hat.}}&lt;br /&gt;
&lt;br /&gt;
==Rechtliches==&lt;br /&gt;
'''Anmerkung:'''Dies ist keine Rechtsberatung. Genaue Angaben dazu kann nur ein Rechtsanwalt tätigen (am besten in dem Fachgebiet Internet)&lt;br /&gt;
&lt;br /&gt;
Es ist rechtlich noch nicht klar ob es nun Verboten ist die Daten in Deutschland mit Google-Analytics zu erfassen. 2 Dinge sprechen erst einmal dagegen: Die Google Server sind nicht unbedingt in Deutschland. Die IP wird erfasst und die gewonnenen Daten können nicht einfach von einem Seitenbetreiber gelöscht werden, wenn ein Besucher dies verlangt.&lt;br /&gt;
&lt;br /&gt;
Es gibt inzwischen ein Addon für einige Browser von Google, die Analytics Datensammlung Deaktivieren: http://tools.google.com/dlpage/gaoptout?hl=de&lt;br /&gt;
&lt;br /&gt;
Wer sicher gehen möchte, der kann die IP von den Besuchern Anonymisieren und so dem Datenschutz genügen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Google Analytics Konto erstellen=&lt;br /&gt;
Um den Dienst ''Google Analytics'' (nachfolgend GA) nutzen zu können, muss man sich zuerst ein GA-Konto [http://www.google.com/analytics/ erstellen].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nach dem Erstellen eines Accounts gibt man GA die Domain bekannt, auf der der Dienst laufen soll. Dazu klickt man auf ''Neues Konto'' ...&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_createaccount.png|Google Analytics Account erstellen]]&lt;br /&gt;
&lt;br /&gt;
... und anschließend auf ''Anmelden''.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_login.png|Webseite hinzufügen]]&lt;br /&gt;
&lt;br /&gt;
Anschließend erfolgen die Angaben zur Webseite, auf der GA laufen soll.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_websitesettings.png|Webseiten Angaben]]&lt;br /&gt;
&lt;br /&gt;
Nachdem man den Geschäftsbedingungen zugestimmt hat, kommt man zur Seite mit dem Tracking-Code. In diesem Code notiert man sich die Account-Nummer; die wird später noch benötigt.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis| In den Google Geschäftsbedingungen (PUnkt 8.1) wird man Aufgefordert einen dort angegebenen Satz auf seiner Webseite einzubringen. Das sollte man auf jeden Fall machen, da es dort um die Datenschutzrichtlinien geht, die eh jeder auf seiner Internetseite auszeichnen sollte! }}&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_trackingcode.png|Tracking Code]]&lt;br /&gt;
&lt;br /&gt;
Nach dem Speichern der Eingaben kommt man zur Übersicht, wo nun die erstellte Webseite auf scheint.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_overview.png]]&lt;br /&gt;
&lt;br /&gt;
=Typolight bis 2.8.x=&lt;br /&gt;
Um GA in TYPOlight bis 2.8.x einzubinden, bearbeitet man das entsprechende Seitenlayout und fügt unter ''Experten-Einstellungen'' im Feld ''Google Analytics Id'' die vorhin notierte GA-ID ein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_layout_tl.png|Seitenlayout]]&lt;br /&gt;
&lt;br /&gt;
Anschließend speichert und schließt man das Layout.&lt;br /&gt;
&lt;br /&gt;
=Contao ab 2.9=&lt;br /&gt;
Seit Contao 2.9 wird GA über das Template ''moo_analytics.tpl'' eingebunden. Wie man ein Template über den im Core integrierten Template-Editor einbindet, ist [[Templates_bearbeiten|hier]] beschrieben. Nachdem das Template ausgewählt wurde, wird das Template bearbeitet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_templateedit.png|Template bearbeiten]]&lt;br /&gt;
&lt;br /&gt;
Wie schon in dem Kommentar des Templates vermerkt ist, braucht nur die im Code eingefügte Blind-ID (UA-XXXXX-X) gegen die vorhin notierte GA-ID ausgetauscht werden. Anschließend kann das Template gespeichert und geschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Nun muss im Seitenlayout das Script eingebunden werden. Dazu setzt man unter ''Skript-Einstellungen'' einen Haken bei dem Punkt ''moo_analytics''. Es muss darauf geachtet werden, dass dieses Skript als letztes eingebunden wird! Anschließend wird das Layout gespeichert und geschlossen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_layout.png|Seitenlayout]]&lt;br /&gt;
&lt;br /&gt;
==IP-Adressen anonymisieren==&lt;br /&gt;
Aus Datenschutzgründen bietet GA seit geraumer Zeit die Möglichkeit, die geloggten IP-Adressen der Besucher zu anonymisieren. Dazu muss nochmal das Template bearbeitet werden und zwischen der Zeile &amp;lt;code&amp;gt;_gaq.push(['_setAccount', 'UA-XXXXX-X']);&amp;lt;/code&amp;gt; und der Zeile &amp;lt;code&amp;gt;_gaq.push(['_trackPageview']);&amp;lt;/code&amp;gt; eine neue Zeile mit folgendem Inhalt eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_gaq.push(['_gat._anonymizeIp']);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ganze Template sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * To use the script, replace UA-XXXXX-X in the code below with your Google&lt;br /&gt;
 * Analytics ID and then add it to a Contao page layout. Make sure to insert&lt;br /&gt;
 * it as the last moo_ script (!) and note that it will only be added to the&lt;br /&gt;
 * page if you are not logged into the back end.&lt;br /&gt;
 */&lt;br /&gt;
if (!BE_USER_LOGGED_IN &amp;amp;&amp;amp; sha1(session_id() . (!$GLOBALS['TL_CONFIG']['disableIpCheck'] ? $this-&amp;gt;Environment-&amp;gt;ip : '') . 'BE_USER_AUTH') != $this-&amp;gt;Input-&amp;gt;cookie('BE_USER_AUTH')):&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--//--&amp;gt;&amp;lt;![CDATA[//&amp;gt;&amp;lt;!--&lt;br /&gt;
var _gaq = _gaq || [];&lt;br /&gt;
_gaq.push(['_setAccount', 'UA-XXXXX-X']);&lt;br /&gt;
_gaq.push(['_gat._anonymizeIp']);&lt;br /&gt;
_gaq.push(['_trackPageview']);&lt;br /&gt;
(function() {&lt;br /&gt;
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br /&gt;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br /&gt;
})();&lt;br /&gt;
//--&amp;gt;&amp;lt;!]]&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Google_Analytics</id>
		<title>Google Analytics</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Google_Analytics"/>
				<updated>2010-07-21T09:14:56Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
[[Category:Core]]&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=bis 2.8.x&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
[[w:de:Google_Analytics|Google Analytics]] ist ein kostenloser Dienst, welcher der Analyse von Zugriffen auf Webseiten dient (Es gillt nur ein Monatliches Limit an Seitenaufrufen in Höhe von 5.000.000 Aufrufen).&lt;br /&gt;
&lt;br /&gt;
{{Hinweis|Um Verfälschungen auszuschließen, wird der Google Analytics Code erst im Frontend angezeigt, wenn man sich aus dem Backend ausgeloggt hat.}}&lt;br /&gt;
&lt;br /&gt;
==Rechtliches==&lt;br /&gt;
'''Anmerkung:'''Dies ist keine Rechtsberatung. Genaue Angaben dazu kann nur ein Rechtsanwalt tätigen (am besten in dem Fachgebiet Internet)&lt;br /&gt;
&lt;br /&gt;
Es ist rechtlich noch nicht klar ob es nun Verboten ist die Daten in Deutschland mit Google-Analytics zu erfassen. 2 Dinge sprechen erst einmal dagegen: Die Google Server sind nicht unbedingt in Deutschland. Die IP wird erfasst und die gewonnenen Daten können nicht einfach von einem Seitenbetreiber gelöscht werden, wenn ein Besucher dies verlangt.&lt;br /&gt;
&lt;br /&gt;
Es gibt inzwischen ein Addon für einige Browser von Google, die Analytics Datensammlung Deaktivieren: http://tools.google.com/dlpage/gaoptout?hl=de&lt;br /&gt;
&lt;br /&gt;
Wer sicher gehen möchte, der kann die IP von den Besuchern Anonymisieren und so dem Datenschutz genügen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Google Analytics Konto erstellen=&lt;br /&gt;
Um den Dienst ''Google Analytics'' (nachfolgend GA) nutzen zu können, muss man sich zuerst ein GA-Konto [http://www.google.com/analytics/ erstellen].&amp;lt;br /&amp;gt;&lt;br /&gt;
Nach dem Erstellen eines Accounts gibt man GA die Domain bekannt, auf der der Dienst laufen soll. Dazu klickt man auf ''Neues Konto'' ...&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_createaccount.png|Google Analytics Account erstellen]]&lt;br /&gt;
&lt;br /&gt;
... und anschließend auf ''Anmelden''.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_login.png|Webseite hinzufügen]]&lt;br /&gt;
&lt;br /&gt;
Anschließend erfolgen die Angaben zur Webseite, auf der GA laufen soll.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_websitesettings.png|Webseiten Angaben]]&lt;br /&gt;
&lt;br /&gt;
Nachdem man den Geschäftsbedingungen zugestimmt hat, kommt man zur Seite mit dem Tracking-Code. In diesem Code notiert man sich die Account-Nummer; die wird später noch benötigt.&lt;br /&gt;
&lt;br /&gt;
{{Hinweis| In den Google Geschäftsbedingungen (PUnkt 8.1) wird man Aufgefordert einen dort angegebenen Satz auf seiner Webseite einzubringen. Das sollte man auf jeden Fall machen, da es dort um die Datenschutzrichtlinien geht, die eh jeder auf seiner Internetseite auszeichnen sollte! }}&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_trackingcode.png|Tracking Code]]&lt;br /&gt;
&lt;br /&gt;
Nach dem Speichern der Eingaben kommt man zur Übersicht, wo nun die erstellte Webseite auf scheint.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_overview.png]]&lt;br /&gt;
&lt;br /&gt;
=Typolight bis 2.8.x=&lt;br /&gt;
Um GA in TYPOlight bis 2.8.x einzubinden, bearbeitet man das entsprechende Seitenlayout und fügt unter ''Experten-Einstellungen'' im Feld ''Google Analytics Id'' die vorhin notierte GA-ID ein.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_layout_tl.png|Seitenlayout]]&lt;br /&gt;
&lt;br /&gt;
Anschließend speichert und schließt man das Layout.&lt;br /&gt;
&lt;br /&gt;
=Contao ab 2.9=&lt;br /&gt;
Seit Contao 2.9 wird GA über das Template ''moo_analytics.tpl'' eingebunden. Wie man ein Template über den im Core integrierten Template-Editor einbindet, ist [[Templates_bearbeiten|hier]] beschrieben. Nachdem das Template ausgewählt wurde, wird das Template bearbeitet.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_templateedit.png|Template bearbeiten]]&lt;br /&gt;
&lt;br /&gt;
Wie schon in dem Kommentar des Templates vermerkt ist, braucht nur die im Code eingefügte Blind-ID (UA-XXXXX-X) gegen die vorhin notierte GA-ID ausgetauscht werden. Anschließend kann das Template gespeichert und geschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Nun muss im Seitenlayout das Script eingebunden werden. Dazu setzt man unter ''Skript-Einstellungen'' einen Haken bei dem Punkt ''moo_analytics''. Es muss darauf geachtet werden, dass dieses Skript als letztes eingebunden wird! Anschließend wird das Layout gespeichert und geschlossen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:ga_layout.png|Seitenlayout]]&lt;br /&gt;
&lt;br /&gt;
==IP-Adressen anonymisieren==&lt;br /&gt;
Aus Datenschutzgründen bietet GA seit geraumer Zeit die Möglichkeit, die geloggten IP-Adressen der Besucher zu anonymisieren. Dazu muss nochmal das Template bearbeitet werden und zwischen der Zeile &amp;lt;code&amp;gt;_gaq.push(['_setAccount', 'UA-XXXXX-X']);&amp;lt;/code&amp;gt; und der Zeile &amp;lt;code&amp;gt;_gaq.push(['_trackPageview']);&amp;lt;/code&amp;gt; eine neue Zeile mit folgendem Inhalt eingefügt werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;_gaq.push(['_gat._anonymizeIp']);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ganze Template sieht dann wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * To use the script, replace UA-XXXXX-X in the code below with your Google&lt;br /&gt;
 * Analytics ID and then add it to a Contao page layout. Make sure to insert&lt;br /&gt;
 * it as the last moo_ script (!) and note that it will only be added to the&lt;br /&gt;
 * page if you are not logged into the back end.&lt;br /&gt;
 */&lt;br /&gt;
if (!BE_USER_LOGGED_IN &amp;amp;&amp;amp; sha1(session_id() . (!$GLOBALS['TL_CONFIG']['disableIpCheck'] ? $this-&amp;gt;Environment-&amp;gt;ip : '') . 'BE_USER_AUTH') != $this-&amp;gt;Input-&amp;gt;cookie('BE_USER_AUTH')):&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!--//--&amp;gt;&amp;lt;![CDATA[//&amp;gt;&amp;lt;!--&lt;br /&gt;
var _gaq = _gaq || [];&lt;br /&gt;
_gaq.push(['_setAccount', 'UA-XXXXX-X']);&lt;br /&gt;
_gaq.push(['_gat._anonymizeIp']);&lt;br /&gt;
_gaq.push(['_trackPageview']);&lt;br /&gt;
(function() {&lt;br /&gt;
  var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br /&gt;
  ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';&lt;br /&gt;
  var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br /&gt;
})();&lt;br /&gt;
//--&amp;gt;&amp;lt;!]]&amp;gt;&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_Templates_anpassen</id>
		<title>Catalog Templates anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_Templates_anpassen"/>
				<updated>2010-07-14T14:15:41Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigenem */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Templates für den Catalog bearbeiten und verändern=&lt;br /&gt;
&lt;br /&gt;
Der Catalog bringt eine Menge Templates mit. Für fast jedes Modul gibt es einen eigenen Satz Templates. Zusätzlich werden Standard Templates herangezogen um zum Beispiel die Galerie oder die Filter zu generieren.&lt;br /&gt;
&lt;br /&gt;
Da der Catalog aber nur ein Grundgerüst darstellt wird man nicht umhin kommen sich die Templates nach eigenen Wünschen und Vorstellungen anzupassen.&lt;br /&gt;
Zunächst geht es hier ganz allgemein um das Vorgehen bei der Template Anpassung. Wie man an bestimmte Werte kommt und so an die Ausgaben die man möchte.&lt;br /&gt;
Zusätzlich werden hier noch ein paar Fallbeispiele vorgestellt, welche zum Teil aus den Wünschen/Problemen im Forum entstanden sind (Vielen Dank an alle die daran im Forum gearbeitet haben!!!).&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein. Es sollte also ein Katalog vorhanden sein mit Inhalten.&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
* wie man [http://de.contaowiki.org/Templates_bearbeiten Templates bearbeitet] sollte in Grundzügen bekannt sein.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
&lt;br /&gt;
==Alles ein Array das entries Array==&lt;br /&gt;
&lt;br /&gt;
Um sich die Ausgabe von dem Array anzuschauen braucht man nur diese Zeile in das Template bringen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man sich das Ergebniss nun auf der neu geladenen Seite anschaut ist das nicht gerade schön anzusehen. Alles steht hintereinander und ergibt einen Code Brei. Deswegen sollte man sich das am besten immer direkt in der Quellcode Ansicht anschauen. Da bekommt man alles schön eingerückt und verschachtelt zu sehen! Oder man setzt die Ausgabe in ein &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;-Tag.&lt;br /&gt;
&lt;br /&gt;
Auszug aus einem Immoblilien Katalog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [0] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 33&lt;br /&gt;
            [catalog_name] =&amp;gt; Immobilien&lt;br /&gt;
            [parentJumpTo] =&amp;gt; 27&lt;br /&gt;
            [tablename] =&amp;gt; immo_immobilien_alle&lt;br /&gt;
            [showLink] =&amp;gt; 1&lt;br /&gt;
            [class] =&amp;gt;  first last even&lt;br /&gt;
            [data] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [immo_titel] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Titel&lt;br /&gt;
                            [type] =&amp;gt; text&lt;br /&gt;
                            [raw] =&amp;gt; villa in tunesien&lt;br /&gt;
                            [value] =&amp;gt; villa in tunesien&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                    [immo_gebiet] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Gebiet&lt;br /&gt;
                            [type] =&amp;gt; select&lt;br /&gt;
                            [raw] =&amp;gt; 141&lt;br /&gt;
                            [value] =&amp;gt; Beja&lt;br /&gt;
                            [ref] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [id] =&amp;gt; 141&lt;br /&gt;
                                            [pid] =&amp;gt; 130&lt;br /&gt;
                                            [tstamp] =&amp;gt; 1273353133&lt;br /&gt;
                                            [sorting] =&amp;gt; 112&lt;br /&gt;
                                            [type] =&amp;gt; &lt;br /&gt;
                                            [alias] =&amp;gt; beja&lt;br /&gt;
                                            [name] =&amp;gt; Beja&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                           [immo_bild] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [label] =&amp;gt; Bild - nur für das erste Bild &amp;amp;#40;Ein Bild für die Vorschau / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                                    [type] =&amp;gt; file&lt;br /&gt;
                                    [raw] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                    [value] =&amp;gt; &amp;lt;a href=&amp;quot;immobilien-leser/items/miethaus-1.html&amp;quot; title=&amp;quot;Die Details des Eintrags ansehen&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogrelated0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&amp;quot; title=&amp;quot;Bild 01&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/bild_01-0ec9b6d1.jpg&amp;quot; alt=&amp;quot;Bild 01&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
                                    [files] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [meta] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; Array&lt;br /&gt;
                                                (&lt;br /&gt;
                                                    [src] =&amp;gt; system/html/bild_01-0ec9b6d1.jpg&lt;br /&gt;
                                                    [alt] =&amp;gt; Bild 01&lt;br /&gt;
                                                    [lb] =&amp;gt; lbcatalogrelated0&lt;br /&gt;
                                                    [w] =&amp;gt; 200&lt;br /&gt;
                                                    [h] =&amp;gt; 100&lt;br /&gt;
                                                    [wh] =&amp;gt; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot;&lt;br /&gt;
                                                    [caption] =&amp;gt; &lt;br /&gt;
                                                    [metafile] =&amp;gt; &lt;br /&gt;
                                                )&lt;br /&gt;
&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                    [immo_bildergalerie] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Bildergalerie - alle anderen Bilder &amp;amp;#40;für die Detail Ansicht / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; file&lt;br /&gt;
                            [raw] =&amp;gt; a:4:{i:0;s:103:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot;;i:1;s:89:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot;;i:2;s:99:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot;;i:3;s:96:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot;;}&lt;br /&gt;
                            [value] =&amp;gt; &amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot; title=&amp;quot;How 2 rubbeldiekatz&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/how 2 rubbeldiekatz-0d26e104.jpg&amp;quot; alt=&amp;quot;How 2 rubbeldiekatz&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot; title=&amp;quot;Image&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/image-6a4159ed.png&amp;quot; alt=&amp;quot;Image&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot; title=&amp;quot;Institut-aussen&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/institut-aussen-538b1b35.jpg&amp;quot; alt=&amp;quot;Institut-aussen&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot; title=&amp;quot;James-wilson&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/james-wilson-379f0b97.jpg&amp;quot; alt=&amp;quot;James-wilson&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                            [files] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&lt;br /&gt;
                                    [1] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&lt;br /&gt;
                                    [2] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&lt;br /&gt;
                                    [3] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                            [meta] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/how 2 rubbeldiekatz-0d26e104.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; How 2 rubbeldiekatz&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [1] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/image-6a4159ed.png&lt;br /&gt;
                                            [alt] =&amp;gt; Image&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [2] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/institut-aussen-538b1b35.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; Institut-aussen&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [3] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/james-wilson-379f0b97.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; James-wilson&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                    [immo_sterne] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Sterne &amp;amp;#40;Wie viele Sterne hat das Hotel&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; number&lt;br /&gt;
                            [raw] =&amp;gt; &lt;br /&gt;
                            [value] =&amp;gt; &lt;br /&gt;
                        )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist nur ein kleiner Auszug aus der Ausgabe.&lt;br /&gt;
In dieser Ausgabe stehten verschiedene Dinge.&lt;br /&gt;
&lt;br /&gt;
Am Anfang stehen immer die Grundinformationen (id, catalog_name, parentJumpTo, tablename,showLink, class).&lt;br /&gt;
Die werden in der Regel nicht gebraucht, sind aber gut zu wissen, damit man mal kurz schauen kann ob man überhaupt richtig ist ;)&lt;br /&gt;
&lt;br /&gt;
Alle Variablen die man bekommt stehen immer in dem Array '''data'''&lt;br /&gt;
Um an die einzelnen Werte zu kommen, braucht man nur die Arrays von dem Wert durchzugehen bis nach oben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Den Titel der Immobilie als Überschrift ausgeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;h3&amp;gt;&amp;lt;?php echo $entry['data']['immo_titel']['value']; ?&amp;gt;&amp;lt;/h3&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das value 'villa in tunesien' soll ausgegeben werden, welches sich in dem Array 'immo_titel' befindet und das ist in dem Array 'data'.&lt;br /&gt;
So einfach bekommt man einzelne Werte ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Die Bestandteile der meta-Arrays==&lt;br /&gt;
&lt;br /&gt;
Die Arrays in so einer Ausgabe sind immer gleich aufgebaut. Je nach Feldtyp etwas anders.&lt;br /&gt;
&lt;br /&gt;
Die Standard Informationen&lt;br /&gt;
* class -&amp;gt; die CSS-Klassen des Items (eher wichtig in einer Liste, da man dort zum Beispiel even/odd zur Verfügung hat)&lt;br /&gt;
* link -&amp;gt; Die URL der Leser Seite (auch eher Listen spezifisch)&lt;br /&gt;
* url -&amp;gt; enthält nur die URL von dem Link. Damit kann man seine eigenen Links bauen.&lt;br /&gt;
* data -&amp;gt; Hier sind alle Felder drin.&lt;br /&gt;
&lt;br /&gt;
===Die allgemeinen Parameter===&lt;br /&gt;
Jedes Feld hat immer diese 4 Parameter:&lt;br /&gt;
    * [label] =&amp;gt; Enthält das Label welches im Katalog vergeben wurde&lt;br /&gt;
    * [type] =&amp;gt; Enthält den Feldtyp. Zum Beispiel: text, file, select, tags&lt;br /&gt;
    * [raw] =&amp;gt; Enthält die Original Daten direkt aus der Datenbank. Hiermit kann man immer komplett eigene Ausgaben gestalten.&lt;br /&gt;
    * [value] =&amp;gt; Enthält die vorformatierten Daten: Datei-Bild Feld =&amp;gt; Bild Lightbox, Datei-download =&amp;gt; den download Link, Text Feld =&amp;gt; der Formatierte String (numeric, date, etc.) &lt;br /&gt;
&lt;br /&gt;
===Die speziellen Parameter===&lt;br /&gt;
&lt;br /&gt;
====Dateien====&lt;br /&gt;
&lt;br /&gt;
* [files] =&amp;gt; Beinhaltet ein Array -&amp;gt; [0] .. [xxx] mit den Dateinamen&lt;br /&gt;
* [meta] =&amp;gt; Beinhaltet die meta-Angaben, wie oben genannt&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um eine Datei handelt (kein Bild) wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [url] =&amp;gt; die relative URL zum herunterladen&lt;br /&gt;
* [alt] =&amp;gt; den alt Text&lt;br /&gt;
* [caption] =&amp;gt; die Beschreibung in der meta.txt Datei&lt;br /&gt;
* [size] =&amp;gt; die größe in Byte&lt;br /&gt;
* [sizetext] =&amp;gt; die größe in lesbarer Form (z.B. 230.0 kB)&lt;br /&gt;
* [icon] =&amp;gt; das Icon (gesetzt wird der Standard vom System selber, basierend auf den Mime-Typen)&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um ein Bild handelt, wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [src] =&amp;gt; den Dateinamen von dem Bild in angepasster größe (wenn das benutzt wird im Katalog selber)&lt;br /&gt;
* [alt] =&amp;gt; Den alt-Text&lt;br /&gt;
* [lb] =&amp;gt; die einzigartige REL=lightbox ID damit die Slimbox angesteuert werden kann&lt;br /&gt;
* [w] =&amp;gt; Bild width&lt;br /&gt;
* [h] =&amp;gt; Bild height&lt;br /&gt;
* [wh] =&amp;gt; Bild width/height in einem String &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer referenzierenden Tabelle können noch folgende Inhalte vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
* [parentJumpTo] =&amp;gt; die ID von dem referenzierenden Katalog (kann in Inserttags genutzt werden)&lt;br /&gt;
* [parentLink] =&amp;gt; Der komplette Link mit einem Standard Text &amp;quot;View item details&amp;quot;&lt;br /&gt;
* [parentUrl] =&amp;gt; Die relative URL zu der Detail (Leser) Seite&lt;br /&gt;
&lt;br /&gt;
=Beispiel Anpassungen=&lt;br /&gt;
&lt;br /&gt;
==Einfache Überprüfung ob Inhalt vorhanden ist==&lt;br /&gt;
Es gibt immer wieder einzelne Felder die nur optional zu befüllen sind.&lt;br /&gt;
Wenn man die Ausgabe von einem Div nur machen möchte wenn auch Inhalte vorhanden sind, kann man das einfach mit einer if-Abfrage erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;?php if($entry['data']['immo_bildergalerie']['value']):?&amp;gt;&amp;lt;div class=&amp;quot;immo_galerie&amp;quot;&amp;gt;&amp;lt;?php echo $entry['data']['immo_bildergalerie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;?php endif;?&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel wird die Bildergalerie mit dem umschließenden div nur dann ausgegeben wenn auch mindestens ein Bild vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==Wie man in eigenen Templates beim Katalog Thumbnails generieren kann==&lt;br /&gt;
&lt;br /&gt;
Thumbnails werden in Contao mit der Methode Controller::getImage() generiert.&lt;br /&gt;
Wichtig dabei ist, dass nicht der ganze Code des Bildes zurückgegeben wird, sondern lediglich die URL zum Thumbnail.&lt;br /&gt;
&lt;br /&gt;
Die Methode sieht wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getImage($image, $width, $height, $mode='', $target=null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Parameter erklären sich wie folgt:&lt;br /&gt;
* $image (String) ''zwingend''&lt;br /&gt;
** erwartet eine relative URL zum Bild, dass verkleinert werden soll (z.B. 'tl_files/meine_bilder/mein_bild.jpg')&lt;br /&gt;
* $width (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $height (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $mode (String) ''optional'' (weitergehende Informationen auf dem [http://www.contao.org/blog-leser/items/die-3-varianten-der-bildanpassung-in-typolight-2.8.html offiziellen Contao-Blog])&lt;br /&gt;
** erwartet einen Angabe darüber, wie das Bild behandelt werden soll. Möglich sind:&lt;br /&gt;
*** &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt; (Exaktes Format) - default&lt;br /&gt;
*** 'proportional' (Proportional)&lt;br /&gt;
*** 'box' (An Rahmen anpassen)&lt;br /&gt;
* $target (String) ''optional''&lt;br /&gt;
** erwartet eine relative URL zu einem Bild, dass ersetzt werden soll (z.B. 'tl_files/meine_bilder/mein_zu_ersetzendes_bild.jpg')&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für ein Template mit einem Thumbnail von 430px Breite und 300px Höhe, das proportional geparst werden soll, könnte also so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $this-&amp;gt;getImage('tl_files/meine_bilder/mein_bild.jpg',430,300,'proportional'); ?&amp;gt;&amp;quot; alt=&amp;quot;Mein alt-Text für mein Bild&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummerierung der einzelnen Einträge in einer Liste==&lt;br /&gt;
&lt;br /&gt;
Die Paginierung wurde berücksichtigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php $perpage=3 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $index=0 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php $index++ ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php if (isset($_GET['page'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index + ($perpage * ($_GET['page'] - 1)) ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wobei $perpage die Anzahl der Items enhält, die pro Seite ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kategorien einmalig ausgeben und die Items darunter==&lt;br /&gt;
Beispiel anhand eines modifizierten catalog_simple.tpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;entries)): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=''; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_simple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($lastcat!=$entry[data]['Kategorie']['value']): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=$entry[data]['Kategorie']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cat&amp;quot;&amp;gt;&amp;lt;?php echo $entry[data]['Kategorie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($field=='Kategorie') continue; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if ($entry['showLink'] &amp;amp;&amp;amp; $entry['link']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;link&amp;quot;&amp;gt;&amp;lt;?php echo $entry['link']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['linkEdit']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;linkEdit&amp;quot;&amp;gt;&amp;lt;?php echo $entry['linkEdit']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;condition): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;condition&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;condition; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;info&amp;quot;&amp;gt;There are no entries matching your search.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummern für die Zellen im Katalog==&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von einem simpletable.tpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;layout_simpletable&amp;quot; summary=&amp;quot;Catalog Items&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;thead class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;?php list($field, $heading) = each($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $i = 0; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($heading['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $i++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;header&amp;lt;?php echo $i; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/thead&amp;gt;&lt;br /&gt;
&amp;lt;tbody class=&amp;quot;body&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $n++ ?&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;item&amp;lt;?php echo $n; ?&amp;gt;&amp;lt;?php echo $entry['class'] ? '  '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $k++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;lt;?php echo $k; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (strlen($data['value'])): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $data['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eine Bildergalerie erstellen, wo nur das 1. Bild ausgegeben wird und die anderen in der Lightbox vorhanden sind==&lt;br /&gt;
&lt;br /&gt;
{{Achtung|diese beiden Herangehensweisen sind noch ungetestet.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
Die Ausgabe sollte ungefähr so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image01.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/image01.jpg&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image02.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt da ja im Grunde 2 Herangehensweisen:&lt;br /&gt;
1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)&lt;br /&gt;
2. Man gibt nur eine Bildergalerie an.&lt;br /&gt;
&lt;br /&gt;
Template (Grundüberlegung):&lt;br /&gt;
1. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
      &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit hat man einfach nur die normale Galerie. Das wäre für diesem Fall ja nicht passend; sei an dieser Stelle jedoch noch mal dokumentiert sein.&lt;br /&gt;
&lt;br /&gt;
Um das jetzt zu verbinden, gibt es verschiedene Vorgehensweisen:&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['meta']['0']['src'];?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot; &amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php else;?&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;lightbox[lightbox_1]&amp;quot; href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Katalog referenzieren==&lt;br /&gt;
Hier im Forum ist die Herangehensweise beschrieben, wie man das machen kann ohne mit Referenzen aus catalog 2 zu arbeiten:&lt;br /&gt;
[http://www.contao-community.de/showthread.php?5448-2-Kataloge-referenzieren-GEL%D6ST]&lt;br /&gt;
&lt;br /&gt;
Hier noch ein kurzes Beispiel wie das gehen kann:&lt;br /&gt;
&lt;br /&gt;
In dem Catalog Leser von einem Autoren sollen die Bücher dargestellt werden (diese sind mit dem Feldtyp Tags referenziert). Die Bücher sind in dem Fall innerhalb des Array 'ref':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($data['ref'] as $id=&amp;gt;$ref): ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;div class=&amp;quot;row_&amp;lt;?php echo $id; ?&amp;gt; buch &amp;lt;?php if($ref['bilder_buch']) echo &amp;quot;buch_mitbild&amp;quot;;?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigner Beschreibung) ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug wie bei dem Feld beispiel_bild der gewünschte Code ausgegeben wird und ansonsten die Werte einfach normal vom Catalog ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php if($field=='beispiel_bild'):?&amp;gt;&lt;br /&gt;
 {{image::&amp;lt;?php echo $data['files']['0']; ?&amp;gt;?width=&amp;lt;?php echo $data['meta']['0']['w']; ?&amp;gt;&amp;amp;height=&amp;lt;?php echo $data['meta']['0']['h']; ?&amp;gt;&amp;amp;alt=&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;amp;mode=crop&amp;amp;rel=lightbox}}&lt;br /&gt;
 &amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Weitere Beispiele finden sich im engl. Wiki vom Catalog==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial]&lt;br /&gt;
&lt;br /&gt;
==Beispiele im Forum:==&lt;br /&gt;
&lt;br /&gt;
[http://www.contao-community.de/showthread.php?10335-Berufs-und-Ausstellerverzeichnis-kombinieren&amp;amp;p=74438#post74438 Zwei Kataloge im Template verbinden]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 21:44, 21. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-07-13T07:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Tipps und Tricks zur Umsetzung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Taxonomie&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Module - Übersicht==&lt;br /&gt;
* '''''Catalog List''''' (Zur Ausgabe einer Liste von Items)&lt;br /&gt;
* '''''Catalog Reader''''' (Um die Details von einem einzelnen Item anzuzeigen)&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
Für die einfachste Variante eines Cataloges braucht man nur eine Catalog List, wo dann alle Items in einer Liste/Tabelle ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt wäre eine Liste von Items mit einer Detail Ansicht. Dafür braucht man dann nur noch Catalog List und Catalog Reader.&lt;br /&gt;
Die Liste verweist dabei auf den Reader wo dann ein einzelnes Item dargestellt wird.&lt;br /&gt;
&lt;br /&gt;
Alle anderen Module sind für fortgeschrittene Bedürfnisse da und müssen an sich nicht für die Grundfunktionalität benutzt werden.&lt;br /&gt;
&lt;br /&gt;
=Erstellen von einem Katalog (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Atribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum)&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verloren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
&amp;lt;pre&amp;gt;ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
==CSV import==&lt;br /&gt;
Um die Daten richtig importieren zu können muss darauf geachtet werden, das diese UTF-8 kodiert sein müssen. Das wird von Exel nicht direkt so gemacht.&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-07-12T21:21:44Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Filtern nach Datum */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Taxonomie&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Module - Übersicht==&lt;br /&gt;
* '''''Catalog List''''' (Zur Ausgabe einer Liste von Items)&lt;br /&gt;
* '''''Catalog Reader''''' (Um die Details von einem einzelnen Item anzuzeigen)&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
Für die einfachste Variante eines Cataloges braucht man nur eine Catalog List, wo dann alle Items in einer Liste/Tabelle ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt wäre eine Liste von Items mit einer Detail Ansicht. Dafür braucht man dann nur noch Catalog List und Catalog Reader.&lt;br /&gt;
Die Liste verweist dabei auf den Reader wo dann ein einzelnes Item dargestellt wird.&lt;br /&gt;
&lt;br /&gt;
Alle anderen Module sind für fortgeschrittene Bedürfnisse da und müssen an sich nicht für die Grundfunktionalität benutzt werden.&lt;br /&gt;
&lt;br /&gt;
=Erstellen von einem Katalog (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Atribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Probleme die bei Unix Timestamp auftreten können===&lt;br /&gt;
Es kann passieren, das der Unix Timestamp beim Verarbeiten von PHP falsch interpretiert wird (nicht als Zahl).&lt;br /&gt;
Daher kann es nötig sein, diesen erst durch einen kleinen Trick auf jeden Fall in einen Zahlenwert umzuwandeln:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ROUND(datum)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Damit wird auf einen Zahlenwert gerundet (da es sich schon um Integer Werte handelt geht dabei nichts verlohren).&lt;br /&gt;
&lt;br /&gt;
Beispiel (von do_while) aus dem Forum:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;ROUND(datum) BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Hier wird nach dem Datum sortiert.&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-07-12T11:28:38Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Erstellen von einem Katalog (Backend) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Taxonomie&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Module - Übersicht==&lt;br /&gt;
* '''''Catalog List''''' (Zur Ausgabe einer Liste von Items)&lt;br /&gt;
* '''''Catalog Reader''''' (Um die Details von einem einzelnen Item anzuzeigen)&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
Für die einfachste Variante eines Cataloges braucht man nur eine Catalog List, wo dann alle Items in einer Liste/Tabelle ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt wäre eine Liste von Items mit einer Detail Ansicht. Dafür braucht man dann nur noch Catalog List und Catalog Reader.&lt;br /&gt;
Die Liste verweist dabei auf den Reader wo dann ein einzelnes Item dargestellt wird.&lt;br /&gt;
&lt;br /&gt;
Alle anderen Module sind für fortgeschrittene Bedürfnisse da und müssen an sich nicht für die Grundfunktionalität benutzt werden.&lt;br /&gt;
&lt;br /&gt;
=Erstellen von einem Katalog (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein. Auch für die Contao Suche muss diese Angabe gemacht werden.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten) Wichtig: Weiterleitungsseite muss angegeben werden!&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Atribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_Templates_anpassen</id>
		<title>Catalog Templates anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_Templates_anpassen"/>
				<updated>2010-07-09T16:28:32Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Beispiel Anpassungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Templates für den Catalog bearbeiten und verändern=&lt;br /&gt;
&lt;br /&gt;
Der Catalog bringt eine Menge Templates mit. Für fast jedes Modul gibt es einen eigenen Satz Templates. Zusätzlich werden Standard Templates herangezogen um zum Beispiel die Galerie oder die Filter zu generieren.&lt;br /&gt;
&lt;br /&gt;
Da der Catalog aber nur ein Grundgerüst darstellt wird man nicht umhin kommen sich die Templates nach eigenen Wünschen und Vorstellungen anzupassen.&lt;br /&gt;
Zunächst geht es hier ganz allgemein um das Vorgehen bei der Template Anpassung. Wie man an bestimmte Werte kommt und so an die Ausgaben die man möchte.&lt;br /&gt;
Zusätzlich werden hier noch ein paar Fallbeispiele vorgestellt, welche zum Teil aus den Wünschen/Problemen im Forum entstanden sind (Vielen Dank an alle die daran im Forum gearbeitet haben!!!).&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein. Es sollte also ein Katalog vorhanden sein mit Inhalten.&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
* wie man [http://de.contaowiki.org/Templates_bearbeiten Templates bearbeitet] sollte in Grundzügen bekannt sein.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
&lt;br /&gt;
==Alles ein Array das entries Array==&lt;br /&gt;
&lt;br /&gt;
Um sich die Ausgabe von dem Array anzuschauen braucht man nur diese Zeile in das Template bringen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man sich das Ergebniss nun auf der neu geladenen Seite anschaut ist das nicht gerade schön anzusehen. Alles steht hintereinander und ergibt einen Code Brei. Deswegen sollte man sich das am besten immer direkt in der Quellcode Ansicht anschauen. Da bekommt man alles schön eingerückt und verschachtelt zu sehen! Oder man setzt die Ausgabe in ein &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;-Tag.&lt;br /&gt;
&lt;br /&gt;
Auszug aus einem Immoblilien Katalog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [0] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 33&lt;br /&gt;
            [catalog_name] =&amp;gt; Immobilien&lt;br /&gt;
            [parentJumpTo] =&amp;gt; 27&lt;br /&gt;
            [tablename] =&amp;gt; immo_immobilien_alle&lt;br /&gt;
            [showLink] =&amp;gt; 1&lt;br /&gt;
            [class] =&amp;gt;  first last even&lt;br /&gt;
            [data] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [immo_titel] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Titel&lt;br /&gt;
                            [type] =&amp;gt; text&lt;br /&gt;
                            [raw] =&amp;gt; villa in tunesien&lt;br /&gt;
                            [value] =&amp;gt; villa in tunesien&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                    [immo_gebiet] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Gebiet&lt;br /&gt;
                            [type] =&amp;gt; select&lt;br /&gt;
                            [raw] =&amp;gt; 141&lt;br /&gt;
                            [value] =&amp;gt; Beja&lt;br /&gt;
                            [ref] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [id] =&amp;gt; 141&lt;br /&gt;
                                            [pid] =&amp;gt; 130&lt;br /&gt;
                                            [tstamp] =&amp;gt; 1273353133&lt;br /&gt;
                                            [sorting] =&amp;gt; 112&lt;br /&gt;
                                            [type] =&amp;gt; &lt;br /&gt;
                                            [alias] =&amp;gt; beja&lt;br /&gt;
                                            [name] =&amp;gt; Beja&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                           [immo_bild] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [label] =&amp;gt; Bild - nur für das erste Bild &amp;amp;#40;Ein Bild für die Vorschau / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                                    [type] =&amp;gt; file&lt;br /&gt;
                                    [raw] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                    [value] =&amp;gt; &amp;lt;a href=&amp;quot;immobilien-leser/items/miethaus-1.html&amp;quot; title=&amp;quot;Die Details des Eintrags ansehen&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogrelated0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&amp;quot; title=&amp;quot;Bild 01&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/bild_01-0ec9b6d1.jpg&amp;quot; alt=&amp;quot;Bild 01&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
                                    [files] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [meta] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; Array&lt;br /&gt;
                                                (&lt;br /&gt;
                                                    [src] =&amp;gt; system/html/bild_01-0ec9b6d1.jpg&lt;br /&gt;
                                                    [alt] =&amp;gt; Bild 01&lt;br /&gt;
                                                    [lb] =&amp;gt; lbcatalogrelated0&lt;br /&gt;
                                                    [w] =&amp;gt; 200&lt;br /&gt;
                                                    [h] =&amp;gt; 100&lt;br /&gt;
                                                    [wh] =&amp;gt; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot;&lt;br /&gt;
                                                    [caption] =&amp;gt; &lt;br /&gt;
                                                    [metafile] =&amp;gt; &lt;br /&gt;
                                                )&lt;br /&gt;
&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                    [immo_bildergalerie] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Bildergalerie - alle anderen Bilder &amp;amp;#40;für die Detail Ansicht / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; file&lt;br /&gt;
                            [raw] =&amp;gt; a:4:{i:0;s:103:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot;;i:1;s:89:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot;;i:2;s:99:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot;;i:3;s:96:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot;;}&lt;br /&gt;
                            [value] =&amp;gt; &amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot; title=&amp;quot;How 2 rubbeldiekatz&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/how 2 rubbeldiekatz-0d26e104.jpg&amp;quot; alt=&amp;quot;How 2 rubbeldiekatz&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot; title=&amp;quot;Image&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/image-6a4159ed.png&amp;quot; alt=&amp;quot;Image&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot; title=&amp;quot;Institut-aussen&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/institut-aussen-538b1b35.jpg&amp;quot; alt=&amp;quot;Institut-aussen&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot; title=&amp;quot;James-wilson&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/james-wilson-379f0b97.jpg&amp;quot; alt=&amp;quot;James-wilson&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                            [files] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&lt;br /&gt;
                                    [1] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&lt;br /&gt;
                                    [2] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&lt;br /&gt;
                                    [3] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                            [meta] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/how 2 rubbeldiekatz-0d26e104.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; How 2 rubbeldiekatz&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [1] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/image-6a4159ed.png&lt;br /&gt;
                                            [alt] =&amp;gt; Image&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [2] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/institut-aussen-538b1b35.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; Institut-aussen&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [3] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/james-wilson-379f0b97.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; James-wilson&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                    [immo_sterne] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Sterne &amp;amp;#40;Wie viele Sterne hat das Hotel&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; number&lt;br /&gt;
                            [raw] =&amp;gt; &lt;br /&gt;
                            [value] =&amp;gt; &lt;br /&gt;
                        )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist nur ein kleiner Auszug aus der Ausgabe.&lt;br /&gt;
In dieser Ausgabe stehten verschiedene Dinge.&lt;br /&gt;
&lt;br /&gt;
Am Anfang stehen immer die Grundinformationen (id, catalog_name, parentJumpTo, tablename,showLink, class).&lt;br /&gt;
Die werden in der Regel nicht gebraucht, sind aber gut zu wissen, damit man mal kurz schauen kann ob man überhaupt richtig ist ;)&lt;br /&gt;
&lt;br /&gt;
Alle Variablen die man bekommt stehen immer in dem Array '''data'''&lt;br /&gt;
Um an die einzelnen Werte zu kommen, braucht man nur die Arrays von dem Wert durchzugehen bis nach oben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Den Titel der Immobilie als Überschrift ausgeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;h3&amp;gt;&amp;lt;?php echo $entry['data']['immo_titel']['value']; ?&amp;gt;&amp;lt;/h3&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das value 'villa in tunesien' soll ausgegeben werden, welches sich in dem Array 'immo_titel' befindet und das ist in dem Array 'data'.&lt;br /&gt;
So einfach bekommt man einzelne Werte ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Die Bestandteile der meta-Arrays==&lt;br /&gt;
&lt;br /&gt;
Die Arrays in so einer Ausgabe sind immer gleich aufgebaut. Je nach Feldtyp etwas anders.&lt;br /&gt;
&lt;br /&gt;
Die Standard Informationen&lt;br /&gt;
* class -&amp;gt; die CSS-Klassen des Items (eher wichtig in einer Liste, da man dort zum Beispiel even/odd zur Verfügung hat)&lt;br /&gt;
* link -&amp;gt; Die URL der Leser Seite (auch eher Listen spezifisch)&lt;br /&gt;
* url -&amp;gt; enthält nur die URL von dem Link. Damit kann man seine eigenen Links bauen.&lt;br /&gt;
* data -&amp;gt; Hier sind alle Felder drin.&lt;br /&gt;
&lt;br /&gt;
===Die allgemeinen Parameter===&lt;br /&gt;
Jedes Feld hat immer diese 4 Parameter:&lt;br /&gt;
    * [label] =&amp;gt; Enthält das Label welches im Katalog vergeben wurde&lt;br /&gt;
    * [type] =&amp;gt; Enthält den Feldtyp. Zum Beispiel: text, file, select, tags&lt;br /&gt;
    * [raw] =&amp;gt; Enthält die Original Daten direkt aus der Datenbank. Hiermit kann man immer komplett eigene Ausgaben gestalten.&lt;br /&gt;
    * [value] =&amp;gt; Enthält die vorformatierten Daten: Datei-Bild Feld =&amp;gt; Bild Lightbox, Datei-download =&amp;gt; den download Link, Text Feld =&amp;gt; der Formatierte String (numeric, date, etc.) &lt;br /&gt;
&lt;br /&gt;
===Die speziellen Parameter===&lt;br /&gt;
&lt;br /&gt;
====Dateien====&lt;br /&gt;
&lt;br /&gt;
* [files] =&amp;gt; Beinhaltet ein Array -&amp;gt; [0] .. [xxx] mit den Dateinamen&lt;br /&gt;
* [meta] =&amp;gt; Beinhaltet die meta-Angaben, wie oben genannt&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um eine Datei handelt (kein Bild) wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [url] =&amp;gt; die relative URL zum herunterladen&lt;br /&gt;
* [alt] =&amp;gt; den alt Text&lt;br /&gt;
* [caption] =&amp;gt; die Beschreibung in der meta.txt Datei&lt;br /&gt;
* [size] =&amp;gt; die größe in Byte&lt;br /&gt;
* [sizetext] =&amp;gt; die größe in lesbarer Form (z.B. 230.0 kB)&lt;br /&gt;
* [icon] =&amp;gt; das Icon (gesetzt wird der Standard vom System selber, basierend auf den Mime-Typen)&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um ein Bild handelt, wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [src] =&amp;gt; den Dateinamen von dem Bild in angepasster größe (wenn das benutzt wird im Katalog selber)&lt;br /&gt;
* [alt] =&amp;gt; Den alt-Text&lt;br /&gt;
* [lb] =&amp;gt; die einzigartige REL=lightbox ID damit die Slimbox angesteuert werden kann&lt;br /&gt;
* [w] =&amp;gt; Bild width&lt;br /&gt;
* [h] =&amp;gt; Bild height&lt;br /&gt;
* [wh] =&amp;gt; Bild width/height in einem String &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer referenzierenden Tabelle können noch folgende Inhalte vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
* [parentJumpTo] =&amp;gt; die ID von dem referenzierenden Katalog (kann in Inserttags genutzt werden)&lt;br /&gt;
* [parentLink] =&amp;gt; Der komplette Link mit einem Standard Text &amp;quot;View item details&amp;quot;&lt;br /&gt;
* [parentUrl] =&amp;gt; Die relative URL zu der Detail (Leser) Seite&lt;br /&gt;
&lt;br /&gt;
=Beispiel Anpassungen=&lt;br /&gt;
&lt;br /&gt;
==Einfache Überprüfung ob Inhalt vorhanden ist==&lt;br /&gt;
Es gibt immer wieder einzelne Felder die nur optional zu befüllen sind.&lt;br /&gt;
Wenn man die Ausgabe von einem Div nur machen möchte wenn auch Inhalte vorhanden sind, kann man das einfach mit einer if-Abfrage erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;?php if($entry['data']['immo_bildergalerie']['value']):?&amp;gt;&amp;lt;div class=&amp;quot;immo_galerie&amp;quot;&amp;gt;&amp;lt;?php echo $entry['data']['immo_bildergalerie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;?php endif;?&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel wird die Bildergalerie mit dem umschließenden div nur dann ausgegeben wenn auch mindestens ein Bild vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==Wie man in eigenen Templates beim Katalog Thumbnails generieren kann==&lt;br /&gt;
&lt;br /&gt;
Thumbnails werden in Contao mit der Methode Controller::getImage() generiert.&lt;br /&gt;
Wichtig dabei ist, dass nicht der ganze Code des Bildes zurückgegeben wird, sondern lediglich die URL zum Thumbnail.&lt;br /&gt;
&lt;br /&gt;
Die Methode sieht wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getImage($image, $width, $height, $mode='', $target=null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Parameter erklären sich wie folgt:&lt;br /&gt;
* $image (String) ''zwingend''&lt;br /&gt;
** erwartet eine relative URL zum Bild, dass verkleinert werden soll (z.B. 'tl_files/meine_bilder/mein_bild.jpg')&lt;br /&gt;
* $width (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $height (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $mode (String) ''optional'' (weitergehende Informationen auf dem [http://www.contao.org/blog-leser/items/die-3-varianten-der-bildanpassung-in-typolight-2.8.html offiziellen Contao-Blog])&lt;br /&gt;
** erwartet einen Angabe darüber, wie das Bild behandelt werden soll. Möglich sind:&lt;br /&gt;
*** &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt; (Exaktes Format) - default&lt;br /&gt;
*** 'proportional' (Proportional)&lt;br /&gt;
*** 'box' (An Rahmen anpassen)&lt;br /&gt;
* $target (String) ''optional''&lt;br /&gt;
** erwartet eine relative URL zu einem Bild, dass ersetzt werden soll (z.B. 'tl_files/meine_bilder/mein_zu_ersetzendes_bild.jpg')&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für ein Template mit einem Thumbnail von 430px Breite und 300px Höhe, das proportional geparst werden soll, könnte also so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $this-&amp;gt;getImage('tl_files/meine_bilder/mein_bild.jpg',430,300,'proportional'); ?&amp;gt;&amp;quot; alt=&amp;quot;Mein alt-Text für mein Bild&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummerierung der einzelnen Einträge in einer Liste==&lt;br /&gt;
&lt;br /&gt;
Die Paginierung wurde berücksichtigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php $perpage=3 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $index=0 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php $index++ ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php if (isset($_GET['page'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index + ($perpage * ($_GET['page'] - 1)) ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wobei $perpage die Anzahl der Items enhält, die pro Seite ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kategorien einmalig ausgeben und die Items darunter==&lt;br /&gt;
Beispiel anhand eines modifizierten catalog_simple.tpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;entries)): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=''; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_simple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($lastcat!=$entry[data]['Kategorie']['value']): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=$entry[data]['Kategorie']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cat&amp;quot;&amp;gt;&amp;lt;?php echo $entry[data]['Kategorie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($field=='Kategorie') continue; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if ($entry['showLink'] &amp;amp;&amp;amp; $entry['link']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;link&amp;quot;&amp;gt;&amp;lt;?php echo $entry['link']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['linkEdit']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;linkEdit&amp;quot;&amp;gt;&amp;lt;?php echo $entry['linkEdit']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;condition): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;condition&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;condition; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;info&amp;quot;&amp;gt;There are no entries matching your search.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummern für die Zellen im Katalog==&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von einem simpletable.tpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;layout_simpletable&amp;quot; summary=&amp;quot;Catalog Items&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;thead class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;?php list($field, $heading) = each($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $i = 0; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($heading['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $i++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;header&amp;lt;?php echo $i; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/thead&amp;gt;&lt;br /&gt;
&amp;lt;tbody class=&amp;quot;body&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $n++ ?&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;item&amp;lt;?php echo $n; ?&amp;gt;&amp;lt;?php echo $entry['class'] ? '  '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $k++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;lt;?php echo $k; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (strlen($data['value'])): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $data['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eine Bildergalerie erstellen, wo nur das 1. Bild ausgegeben wird und die anderen in der Lightbox vorhanden sind==&lt;br /&gt;
&lt;br /&gt;
{{Achtung|diese beiden Herangehensweisen sind noch ungetestet.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
Die Ausgabe sollte ungefähr so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image01.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/image01.jpg&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image02.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt da ja im Grunde 2 Herangehensweisen:&lt;br /&gt;
1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)&lt;br /&gt;
2. Man gibt nur eine Bildergalerie an.&lt;br /&gt;
&lt;br /&gt;
Template (Grundüberlegung):&lt;br /&gt;
1. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
      &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit hat man einfach nur die normale Galerie. Das wäre für diesem Fall ja nicht passend; sei an dieser Stelle jedoch noch mal dokumentiert sein.&lt;br /&gt;
&lt;br /&gt;
Um das jetzt zu verbinden, gibt es verschiedene Vorgehensweisen:&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['meta']['0']['src'];?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot; &amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php else;?&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;lightbox[lightbox_1]&amp;quot; href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Katalog referenzieren==&lt;br /&gt;
Hier im Forum ist die Herangehensweise beschrieben, wie man das machen kann ohne mit Referenzen aus catalog 2 zu arbeiten:&lt;br /&gt;
[http://www.contao-community.de/showthread.php?5448-2-Kataloge-referenzieren-GEL%D6ST]&lt;br /&gt;
&lt;br /&gt;
Hier noch ein kurzes Beispiel wie das gehen kann:&lt;br /&gt;
&lt;br /&gt;
In dem Catalog Leser von einem Autoren sollen die Bücher dargestellt werden (diese sind mit dem Feldtyp Tags referenziert). Die Bücher sind in dem Fall innerhalb des Array 'ref':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($data['ref'] as $id=&amp;gt;$ref): ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;div class=&amp;quot;row_&amp;lt;?php echo $id; ?&amp;gt; buch &amp;lt;?php if($ref['bilder_buch']) echo &amp;quot;buch_mitbild&amp;quot;;?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigenem ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug wie bei dem Feld beispiel_bild der gewünschte Code ausgegeben wird und ansonsten die Werte einfach normal vom Catalog ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php if($field=='beispiel_bild'):?&amp;gt;&lt;br /&gt;
 {{image::&amp;lt;?php echo $data['files']['0']; ?&amp;gt;?width=&amp;lt;?php echo $data['meta']['0']['w']; ?&amp;gt;&amp;amp;height=&amp;lt;?php echo $data['meta']['0']['h']; ?&amp;gt;&amp;amp;alt=&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;amp;mode=crop&amp;amp;rel=lightbox}}&lt;br /&gt;
 &amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weitere Beispiele finden sich im engl. Wiki vom Catalog==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial]&lt;br /&gt;
&lt;br /&gt;
==Beispiele im Forum:==&lt;br /&gt;
&lt;br /&gt;
[http://www.contao-community.de/showthread.php?10335-Berufs-und-Ausstellerverzeichnis-kombinieren&amp;amp;p=74438#post74438 Zwei Kataloge im Template verbinden]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 21:44, 21. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_Templates_anpassen</id>
		<title>Catalog Templates anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_Templates_anpassen"/>
				<updated>2010-07-09T16:26:48Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Beispiel Anpassungen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Templates für den Catalog bearbeiten und verändern=&lt;br /&gt;
&lt;br /&gt;
Der Catalog bringt eine Menge Templates mit. Für fast jedes Modul gibt es einen eigenen Satz Templates. Zusätzlich werden Standard Templates herangezogen um zum Beispiel die Galerie oder die Filter zu generieren.&lt;br /&gt;
&lt;br /&gt;
Da der Catalog aber nur ein Grundgerüst darstellt wird man nicht umhin kommen sich die Templates nach eigenen Wünschen und Vorstellungen anzupassen.&lt;br /&gt;
Zunächst geht es hier ganz allgemein um das Vorgehen bei der Template Anpassung. Wie man an bestimmte Werte kommt und so an die Ausgaben die man möchte.&lt;br /&gt;
Zusätzlich werden hier noch ein paar Fallbeispiele vorgestellt, welche zum Teil aus den Wünschen/Problemen im Forum entstanden sind (Vielen Dank an alle die daran im Forum gearbeitet haben!!!).&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein. Es sollte also ein Katalog vorhanden sein mit Inhalten.&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
* wie man [http://de.contaowiki.org/Templates_bearbeiten Templates bearbeitet] sollte in Grundzügen bekannt sein.&lt;br /&gt;
&lt;br /&gt;
=Grundlagen=&lt;br /&gt;
&lt;br /&gt;
==Alles ein Array das entries Array==&lt;br /&gt;
&lt;br /&gt;
Um sich die Ausgabe von dem Array anzuschauen braucht man nur diese Zeile in das Template bringen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Wenn man sich das Ergebniss nun auf der neu geladenen Seite anschaut ist das nicht gerade schön anzusehen. Alles steht hintereinander und ergibt einen Code Brei. Deswegen sollte man sich das am besten immer direkt in der Quellcode Ansicht anschauen. Da bekommt man alles schön eingerückt und verschachtelt zu sehen! Oder man setzt die Ausgabe in ein &amp;lt;nowiki&amp;gt;&amp;lt;pre&amp;gt;&amp;lt;/nowiki&amp;gt;-Tag.&lt;br /&gt;
&lt;br /&gt;
Auszug aus einem Immoblilien Katalog:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Array&lt;br /&gt;
(&lt;br /&gt;
    [0] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 33&lt;br /&gt;
            [catalog_name] =&amp;gt; Immobilien&lt;br /&gt;
            [parentJumpTo] =&amp;gt; 27&lt;br /&gt;
            [tablename] =&amp;gt; immo_immobilien_alle&lt;br /&gt;
            [showLink] =&amp;gt; 1&lt;br /&gt;
            [class] =&amp;gt;  first last even&lt;br /&gt;
            [data] =&amp;gt; Array&lt;br /&gt;
                (&lt;br /&gt;
                    [immo_titel] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Titel&lt;br /&gt;
                            [type] =&amp;gt; text&lt;br /&gt;
                            [raw] =&amp;gt; villa in tunesien&lt;br /&gt;
                            [value] =&amp;gt; villa in tunesien&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
                    [immo_gebiet] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Gebiet&lt;br /&gt;
                            [type] =&amp;gt; select&lt;br /&gt;
                            [raw] =&amp;gt; 141&lt;br /&gt;
                            [value] =&amp;gt; Beja&lt;br /&gt;
                            [ref] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [id] =&amp;gt; 141&lt;br /&gt;
                                            [pid] =&amp;gt; 130&lt;br /&gt;
                                            [tstamp] =&amp;gt; 1273353133&lt;br /&gt;
                                            [sorting] =&amp;gt; 112&lt;br /&gt;
                                            [type] =&amp;gt; &lt;br /&gt;
                                            [alias] =&amp;gt; beja&lt;br /&gt;
                                            [name] =&amp;gt; Beja&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                           [immo_bild] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [label] =&amp;gt; Bild - nur für das erste Bild &amp;amp;#40;Ein Bild für die Vorschau / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                                    [type] =&amp;gt; file&lt;br /&gt;
                                    [raw] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                    [value] =&amp;gt; &amp;lt;a href=&amp;quot;immobilien-leser/items/miethaus-1.html&amp;quot; title=&amp;quot;Die Details des Eintrags ansehen&amp;quot;&amp;gt;&amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogrelated0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&amp;quot; title=&amp;quot;Bild 01&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/bild_01-0ec9b6d1.jpg&amp;quot; alt=&amp;quot;Bild 01&amp;quot; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
                                    [files] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/bild_01.jpg&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [meta] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [0] =&amp;gt; Array&lt;br /&gt;
                                                (&lt;br /&gt;
                                                    [src] =&amp;gt; system/html/bild_01-0ec9b6d1.jpg&lt;br /&gt;
                                                    [alt] =&amp;gt; Bild 01&lt;br /&gt;
                                                    [lb] =&amp;gt; lbcatalogrelated0&lt;br /&gt;
                                                    [w] =&amp;gt; 200&lt;br /&gt;
                                                    [h] =&amp;gt; 100&lt;br /&gt;
                                                    [wh] =&amp;gt; width=&amp;quot;200&amp;quot; height=&amp;quot;100&amp;quot;&lt;br /&gt;
                                                    [caption] =&amp;gt; &lt;br /&gt;
                                                    [metafile] =&amp;gt; &lt;br /&gt;
                                                )&lt;br /&gt;
&lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                    [immo_bildergalerie] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Bildergalerie - alle anderen Bilder &amp;amp;#40;für die Detail Ansicht / maximale Dateigröße: 2MB / maximale Maße in px: 800x600&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; file&lt;br /&gt;
                            [raw] =&amp;gt; a:4:{i:0;s:103:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot;;i:1;s:89:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot;;i:2;s:99:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot;;i:3;s:96:&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot;;}&lt;br /&gt;
                            [value] =&amp;gt; &amp;lt;span class=&amp;quot;image first even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&amp;quot; title=&amp;quot;How 2 rubbeldiekatz&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/how 2 rubbeldiekatz-0d26e104.jpg&amp;quot; alt=&amp;quot;How 2 rubbeldiekatz&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&amp;quot; title=&amp;quot;Image&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/image-6a4159ed.png&amp;quot; alt=&amp;quot;Image&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image even&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&amp;quot; title=&amp;quot;Institut-aussen&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/institut-aussen-538b1b35.jpg&amp;quot; alt=&amp;quot;Institut-aussen&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;span class=&amp;quot;image odd&amp;quot;&amp;gt;&amp;lt;a rel=&amp;quot;lightbox[lbimmo_immobilien_allecatalogreader0]&amp;quot; href=&amp;quot;tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&amp;quot; title=&amp;quot;James-wilson&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;system/html/james-wilson-379f0b97.jpg&amp;quot; alt=&amp;quot;James-wilson&amp;quot; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
                            [files] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/how 2 rubbeldiekatz.jpg&lt;br /&gt;
                                    [1] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/image.png&lt;br /&gt;
                                    [2] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/institut-aussen.jpg&lt;br /&gt;
                                    [3] =&amp;gt; tl_files/usertreffen2010/immo/tunesien-immobilie_cat_items/immo_immobilien_alle/james-wilson.jpg&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                            [meta] =&amp;gt; Array&lt;br /&gt;
                                (&lt;br /&gt;
                                    [0] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/how 2 rubbeldiekatz-0d26e104.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; How 2 rubbeldiekatz&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [1] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/image-6a4159ed.png&lt;br /&gt;
                                            [alt] =&amp;gt; Image&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [2] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/institut-aussen-538b1b35.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; Institut-aussen&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                    [3] =&amp;gt; Array&lt;br /&gt;
                                        (&lt;br /&gt;
                                            [src] =&amp;gt; system/html/james-wilson-379f0b97.jpg&lt;br /&gt;
                                            [alt] =&amp;gt; James-wilson&lt;br /&gt;
                                            [lb] =&amp;gt; lbcatalogreader0&lt;br /&gt;
                                            [w] =&amp;gt; 50&lt;br /&gt;
                                            [h] =&amp;gt; 50&lt;br /&gt;
                                            [wh] =&amp;gt; width=&amp;quot;50&amp;quot; height=&amp;quot;50&amp;quot;&lt;br /&gt;
                                            [caption] =&amp;gt; &lt;br /&gt;
                                            [metafile] =&amp;gt; &lt;br /&gt;
                                        )&lt;br /&gt;
&lt;br /&gt;
                                )&lt;br /&gt;
&lt;br /&gt;
                        )&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
                    [immo_sterne] =&amp;gt; Array&lt;br /&gt;
                        (&lt;br /&gt;
                            [label] =&amp;gt; Sterne &amp;amp;#40;Wie viele Sterne hat das Hotel&amp;amp;#41;&lt;br /&gt;
                            [type] =&amp;gt; number&lt;br /&gt;
                            [raw] =&amp;gt; &lt;br /&gt;
                            [value] =&amp;gt; &lt;br /&gt;
                        )&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das ist nur ein kleiner Auszug aus der Ausgabe.&lt;br /&gt;
In dieser Ausgabe stehten verschiedene Dinge.&lt;br /&gt;
&lt;br /&gt;
Am Anfang stehen immer die Grundinformationen (id, catalog_name, parentJumpTo, tablename,showLink, class).&lt;br /&gt;
Die werden in der Regel nicht gebraucht, sind aber gut zu wissen, damit man mal kurz schauen kann ob man überhaupt richtig ist ;)&lt;br /&gt;
&lt;br /&gt;
Alle Variablen die man bekommt stehen immer in dem Array '''data'''&lt;br /&gt;
Um an die einzelnen Werte zu kommen, braucht man nur die Arrays von dem Wert durchzugehen bis nach oben.&lt;br /&gt;
&lt;br /&gt;
Beispiel:&lt;br /&gt;
Den Titel der Immobilie als Überschrift ausgeben:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;h3&amp;gt;&amp;lt;?php echo $entry['data']['immo_titel']['value']; ?&amp;gt;&amp;lt;/h3&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das value 'villa in tunesien' soll ausgegeben werden, welches sich in dem Array 'immo_titel' befindet und das ist in dem Array 'data'.&lt;br /&gt;
So einfach bekommt man einzelne Werte ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Die Bestandteile der meta-Arrays==&lt;br /&gt;
&lt;br /&gt;
Die Arrays in so einer Ausgabe sind immer gleich aufgebaut. Je nach Feldtyp etwas anders.&lt;br /&gt;
&lt;br /&gt;
Die Standard Informationen&lt;br /&gt;
* class -&amp;gt; die CSS-Klassen des Items (eher wichtig in einer Liste, da man dort zum Beispiel even/odd zur Verfügung hat)&lt;br /&gt;
* link -&amp;gt; Die URL der Leser Seite (auch eher Listen spezifisch)&lt;br /&gt;
* url -&amp;gt; enthält nur die URL von dem Link. Damit kann man seine eigenen Links bauen.&lt;br /&gt;
* data -&amp;gt; Hier sind alle Felder drin.&lt;br /&gt;
&lt;br /&gt;
===Die allgemeinen Parameter===&lt;br /&gt;
Jedes Feld hat immer diese 4 Parameter:&lt;br /&gt;
    * [label] =&amp;gt; Enthält das Label welches im Katalog vergeben wurde&lt;br /&gt;
    * [type] =&amp;gt; Enthält den Feldtyp. Zum Beispiel: text, file, select, tags&lt;br /&gt;
    * [raw] =&amp;gt; Enthält die Original Daten direkt aus der Datenbank. Hiermit kann man immer komplett eigene Ausgaben gestalten.&lt;br /&gt;
    * [value] =&amp;gt; Enthält die vorformatierten Daten: Datei-Bild Feld =&amp;gt; Bild Lightbox, Datei-download =&amp;gt; den download Link, Text Feld =&amp;gt; der Formatierte String (numeric, date, etc.) &lt;br /&gt;
&lt;br /&gt;
===Die speziellen Parameter===&lt;br /&gt;
&lt;br /&gt;
====Dateien====&lt;br /&gt;
&lt;br /&gt;
* [files] =&amp;gt; Beinhaltet ein Array -&amp;gt; [0] .. [xxx] mit den Dateinamen&lt;br /&gt;
* [meta] =&amp;gt; Beinhaltet die meta-Angaben, wie oben genannt&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um eine Datei handelt (kein Bild) wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [url] =&amp;gt; die relative URL zum herunterladen&lt;br /&gt;
* [alt] =&amp;gt; den alt Text&lt;br /&gt;
* [caption] =&amp;gt; die Beschreibung in der meta.txt Datei&lt;br /&gt;
* [size] =&amp;gt; die größe in Byte&lt;br /&gt;
* [sizetext] =&amp;gt; die größe in lesbarer Form (z.B. 230.0 kB)&lt;br /&gt;
* [icon] =&amp;gt; das Icon (gesetzt wird der Standard vom System selber, basierend auf den Mime-Typen)&lt;br /&gt;
&lt;br /&gt;
Wenn es sich um ein Bild handelt, wird das meta-Array diese Werte enthalten:&lt;br /&gt;
&lt;br /&gt;
* [src] =&amp;gt; den Dateinamen von dem Bild in angepasster größe (wenn das benutzt wird im Katalog selber)&lt;br /&gt;
* [alt] =&amp;gt; Den alt-Text&lt;br /&gt;
* [lb] =&amp;gt; die einzigartige REL=lightbox ID damit die Slimbox angesteuert werden kann&lt;br /&gt;
* [w] =&amp;gt; Bild width&lt;br /&gt;
* [h] =&amp;gt; Bild height&lt;br /&gt;
* [wh] =&amp;gt; Bild width/height in einem String &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bei einer referenzierenden Tabelle können noch folgende Inhalte vorhanden sein:&lt;br /&gt;
&lt;br /&gt;
* [parentJumpTo] =&amp;gt; die ID von dem referenzierenden Katalog (kann in Inserttags genutzt werden)&lt;br /&gt;
* [parentLink] =&amp;gt; Der komplette Link mit einem Standard Text &amp;quot;View item details&amp;quot;&lt;br /&gt;
* [parentUrl] =&amp;gt; Die relative URL zu der Detail (Leser) Seite&lt;br /&gt;
&lt;br /&gt;
=Beispiel Anpassungen=&lt;br /&gt;
&lt;br /&gt;
==Einfache Überprüfung ob Inhalt vorhanden ist==&lt;br /&gt;
Es gibt immer wieder einzelne Felder die nur optional zu befüllen sind.&lt;br /&gt;
Wenn man die Ausgabe von einem Div nur machen möchte wenn auch Inhalte vorhanden sind, kann man das einfach mit einer if-Abfrage erledigen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &amp;lt;?php if($entry['data']['immo_bildergalerie']['value']):?&amp;gt;&amp;lt;div class=&amp;quot;immo_galerie&amp;quot;&amp;gt;&amp;lt;?php echo $entry['data']['immo_bildergalerie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;?php endif;?&amp;gt; &amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In dem Beispiel wird die Bildergalerie mit dem umschließenden div nur dann ausgegeben wenn auch mindestens ein Bild vorhanden ist.&lt;br /&gt;
&lt;br /&gt;
==Wie man in eigenen Templates beim Katalog Thumbnails generieren kann==&lt;br /&gt;
&lt;br /&gt;
Thumbnails werden in Contao mit der Methode Controller::getImage() generiert.&lt;br /&gt;
Wichtig dabei ist, dass nicht der ganze Code des Bildes zurückgegeben wird, sondern lediglich die URL zum Thumbnail.&lt;br /&gt;
&lt;br /&gt;
Die Methode sieht wie folgt aus:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
getImage($image, $width, $height, $mode='', $target=null)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Parameter erklären sich wie folgt:&lt;br /&gt;
* $image (String) ''zwingend''&lt;br /&gt;
** erwartet eine relative URL zum Bild, dass verkleinert werden soll (z.B. 'tl_files/meine_bilder/mein_bild.jpg')&lt;br /&gt;
* $width (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $height (Integer) ''bedingt optional (Achtung: mind. eine Angabe zu Breite oder Höhe ist zwingend!)''&lt;br /&gt;
** erwartet eine Zahl, die die Breite in Pixel angibt (z.B. 230)&lt;br /&gt;
* $mode (String) ''optional'' (weitergehende Informationen auf dem [http://www.contao.org/blog-leser/items/die-3-varianten-der-bildanpassung-in-typolight-2.8.html offiziellen Contao-Blog])&lt;br /&gt;
** erwartet einen Angabe darüber, wie das Bild behandelt werden soll. Möglich sind:&lt;br /&gt;
*** &amp;lt;nowiki&amp;gt;''&amp;lt;/nowiki&amp;gt; (Exaktes Format) - default&lt;br /&gt;
*** 'proportional' (Proportional)&lt;br /&gt;
*** 'box' (An Rahmen anpassen)&lt;br /&gt;
* $target (String) ''optional''&lt;br /&gt;
** erwartet eine relative URL zu einem Bild, dass ersetzt werden soll (z.B. 'tl_files/meine_bilder/mein_zu_ersetzendes_bild.jpg')&lt;br /&gt;
&lt;br /&gt;
Ein Beispiel für ein Template mit einem Thumbnail von 430px Breite und 300px Höhe, das proportional geparst werden soll, könnte also so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;img src=&amp;quot;&amp;lt;?php echo $this-&amp;gt;getImage('tl_files/meine_bilder/mein_bild.jpg',430,300,'proportional'); ?&amp;gt;&amp;quot; alt=&amp;quot;Mein alt-Text für mein Bild&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummerierung der einzelnen Einträge in einer Liste==&lt;br /&gt;
&lt;br /&gt;
Die Paginierung wurde berücksichtigt:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php $perpage=3 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $index=0 ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php $index++ ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php if (isset($_GET['page'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index + ($perpage * ($_GET['page'] - 1)) ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php $number = $index ?&amp;gt;&lt;br /&gt;
  &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Wobei $perpage die Anzahl der Items enhält, die pro Seite ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Kategorien einmalig ausgeben und die Items darunter==&lt;br /&gt;
Beispiel anhand eines modifizierten catalog_simple.tpl:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;entries)): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=''; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_simple&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($lastcat!=$entry[data]['Kategorie']['value']): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $lastcat=$entry[data]['Kategorie']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;cat&amp;quot;&amp;gt;&amp;lt;?php echo $entry[data]['Kategorie']['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($field=='Kategorie') continue; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php if ($entry['showLink'] &amp;amp;&amp;amp; $entry['link']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;link&amp;quot;&amp;gt;&amp;lt;?php echo $entry['link']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['linkEdit']): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;linkEdit&amp;quot;&amp;gt;&amp;lt;?php echo $entry['linkEdit']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($this-&amp;gt;condition): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;condition&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;condition; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
&amp;lt;p class=&amp;quot;info&amp;quot;&amp;gt;There are no entries matching your search.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fortlaufende Nummern für die Zellen im Katalog==&lt;br /&gt;
&lt;br /&gt;
Am Beispiel von einem simpletable.tpl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;table class=&amp;quot;layout_simpletable&amp;quot; summary=&amp;quot;Catalog Items&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;thead class=&amp;quot;header&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;?php list($field, $heading) = each($this-&amp;gt;entries); ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $i = 0; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($heading['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $i++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;th class=&amp;quot;header&amp;lt;?php echo $i; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/thead&amp;gt;&lt;br /&gt;
&amp;lt;tbody class=&amp;quot;body&amp;lt;?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;entries as $entry): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php $n++ ?&amp;gt;&lt;br /&gt;
&amp;lt;tr class=&amp;quot;item&amp;lt;?php echo $n; ?&amp;gt;&amp;lt;?php echo $entry['class'] ? '  '.$entry['class'] : ''; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php  $k++; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?&amp;gt;&lt;br /&gt;
&amp;lt;td class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;lt;?php echo $k; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if (strlen($data['value'])): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $data['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($entry['url'] &amp;amp;&amp;amp; $field == 'title'): ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/tbody&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Eine Bildergalerie erstellen, wo nur das 1. Bild ausgegeben wird und die anderen in der Lightbox vorhanden sind==&lt;br /&gt;
&lt;br /&gt;
{{Achtung|diese beiden Herangehensweisen sind noch ungetestet.}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTML:&lt;br /&gt;
Die Ausgabe sollte ungefähr so aussehen:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image01.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;tl_files/image01.jpg&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;tl_files/image02.jpg&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das 1. Bild mit Vorschaubild und die anderen Bilder nur als Link, damit diese ausgegeben werden, aber erst mal nix zu sehen ist.&lt;br /&gt;
&lt;br /&gt;
Es gibt da ja im Grunde 2 Herangehensweisen:&lt;br /&gt;
1. Im Backend gibt man 1 Bild an und dann noch mehrere Bilder als Galerie (so hat man die volle Kontrolle darüber welches das Vorschaubild ist)&lt;br /&gt;
2. Man gibt nur eine Bildergalerie an.&lt;br /&gt;
&lt;br /&gt;
Template (Grundüberlegung):&lt;br /&gt;
1. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&amp;lt;/strong&amp;gt;&lt;br /&gt;
      &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Grundüberlegung der Ausgabe allgemein:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $entry['data']['bildergalerie']['value']; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit hat man einfach nur die normale Galerie. Das wäre für diesem Fall ja nicht passend; sei an dieser Stelle jedoch noch mal dokumentiert sein.&lt;br /&gt;
&lt;br /&gt;
Um das jetzt zu verbinden, gibt es verschiedene Vorgehensweisen:&lt;br /&gt;
1.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['einzelbild']['meta']):?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;bilder&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;strong&amp;gt;&amp;lt;?php echo $entry['data']['einzelbild']['value']; ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['meta']['0']['src'];?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/strong&amp;gt;&lt;br /&gt;
 &amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot; &amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Für das 1. Bild (in Array ja die 0 eine andere Ausgabe machen):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php if($entry['data']['bildergalerie']['value']):?&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($entry['bildergalerie']['value'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if(($entry['bildergalerie']['value']['meta'][$field])=='0'):?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $entry['data']['einzelbild']['files']['0'];?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot; rel=&amp;quot;lightbox[lightbox_1]&amp;quot;&amp;gt;&amp;lt;img src=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; alt=&amp;quot;bla&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php else;?&amp;gt;&lt;br /&gt;
&amp;lt;a rel=&amp;quot;lightbox[lightbox_1]&amp;quot; href=&amp;quot;&amp;lt;?php echo $entry['bildergalerie']['value']['meta'][$field]['src'] ?&amp;gt;&amp;quot; title=&amp;quot;bla&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php endif;?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==2 Katalog referenzieren==&lt;br /&gt;
Hier im Forum ist die Herangehensweise beschrieben, wie man das machen kann ohne mit Referenzen aus catalog 2 zu arbeiten:&lt;br /&gt;
[http://www.contao-community.de/showthread.php?5448-2-Kataloge-referenzieren-GEL%D6ST]&lt;br /&gt;
&lt;br /&gt;
Hier noch ein kurzes Beispiel wie das gehen kann:&lt;br /&gt;
&lt;br /&gt;
In dem Catalog Leser von einem Autoren sollen die Bücher dargestellt werden (diese sind mit dem Feldtyp Tags referenziert). Die Bücher sind in dem Fall innerhalb des Array 'ref':&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php foreach ($data['ref'] as $id=&amp;gt;$ref): ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;div class=&amp;quot;row_&amp;lt;?php echo $id; ?&amp;gt; buch &amp;lt;?php if($ref['bilder_buch']) echo &amp;quot;buch_mitbild&amp;quot;;?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
....&lt;br /&gt;
&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Alle Werte ausgeben und nur einen Anpassen (als Beispiel Bilder mit eigenem ==&lt;br /&gt;
&lt;br /&gt;
Hier ein Auszug wie bei dem Feld beispiel_bild der gewünschte Code ausgegeben wird und ansonsten die Werte einfach normal vom Catalog ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;?php foreach ($entry['data'] as $field=&amp;gt;$data): ?&amp;gt;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;field &amp;lt;?php echo $field; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php if($field=='beispiel_bild'):?&amp;gt;&lt;br /&gt;
 {{image::&amp;lt;?php echo $data['files']['0']; ?&amp;gt;?width=&amp;lt;?php echo $data['meta']['0']['w']; ?&amp;gt;&amp;amp;height=&amp;lt;?php echo $data['meta']['0']['h']; ?&amp;gt;&amp;amp;alt=&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;amp;mode=crop&amp;amp;rel=lightbox}}&lt;br /&gt;
 &amp;lt;?php elseif(!in_array($field, array('catalog_name','parentJumpTo'))):?&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;label&amp;quot;&amp;gt;&amp;lt;?php echo $data['label']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
     &amp;lt;div class=&amp;quot;value&amp;quot;&amp;gt;&amp;lt;?php echo $data['value']; ?&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
 &amp;lt;/div&amp;gt;&lt;br /&gt;
 &amp;lt;?php endforeach; ?&amp;gt; &lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Weitere Beispiele finden sich im engl. Wiki vom Catalog==&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/p/typolight-catalog/wiki/EN_CatalogTemplatesTutorial]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 21:44, 21. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog</id>
		<title>Catalog</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog"/>
				<updated>2010-07-07T18:22:16Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Tipps und Tricks zur Umsetzung */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Das Catalog-Modul ermöglicht eine vielfältige Kategorisierung beliebiger Daten in hierarchischen und flachen Strukturen. Beispiele umfassen [http://www.tuerkischdeutsche-literatur.de Literaturverzeichnisse] oder [http://www.tunesien-immobilien.de Immobilienlisten].&lt;br /&gt;
&lt;br /&gt;
{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Forum=&lt;br /&gt;
Fragen rund um den Catalog werden im Forum hier behandelt: [http://www.contao-community.de/forumdisplay.php?18-catalog Forum - Catalog Bereich]&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Catalog kann ganz normal über die Erweiterungsverwaltung des Contao-Backend installiert werden. Eine manuelle Installation ist auch möglich, dazu muss man sich die benötigen Dateien des [http://www.contao.org/erweiterungsliste/view/catalog.html catalog aus dem Extension Repository herunterladen] (abhängige Erweiterungen nicht vergessen!).&lt;br /&gt;
&lt;br /&gt;
Den jeweils neusten Build kann man sich aus dem [http://code.google.com/p/typolight-catalog/source/checkout SVN-Repository] herunterladen. Einzig das Modul backend_filterwiz muss dabei separat installiert werden, alle weiteren Module sind im Repository vorhanden. Man sollte darauf achten, welche Ordner wohin in der Installation kommen!&lt;br /&gt;
&lt;br /&gt;
==Migration von Version 1 auf Version 2==&lt;br /&gt;
In Version 2 wurde Einiges geändert. So ist es u. a. nicht mehr nötig catalog und catalog_ext zu installieren, da diese Erweiterungen zusammengelegt wurden. Damit es zu keinem Datenverlust kommt, muss bei einem manuellen Update wie folgt vorgegangen werden:&lt;br /&gt;
* Zuerst die alten Modulordner entfernen,&lt;br /&gt;
* danach die neuen Modulordner hochladen.&lt;br /&gt;
* Erst zum Schluss das Datenbankupdate ausführen!&lt;br /&gt;
&lt;br /&gt;
Beim Update über das Contao-ExtensionRepository sollte man die Reihenfolge beachten:&lt;br /&gt;
* Catalog 2 installieren und Datenbank-Update ausführen.&lt;br /&gt;
* Catalog_ext deinstallieren und erneut Datenbank-Update ausführen.&lt;br /&gt;
* Zur Sicherheit alle catalog-Module etc. noch mal öffnen und speichern, damit auch alles glatt läuft.&lt;br /&gt;
* Neue Einstellungen vornehmen.&lt;br /&gt;
&lt;br /&gt;
=Allgemeines=&lt;br /&gt;
Testumgebung und Vortrag vom Usertreffen 2010:&lt;br /&gt;
* Vortrag / Testumgebung -&amp;gt; http://catalogdemo.dasprojekt.org/&lt;br /&gt;
* Benutzer: tlut2010&lt;br /&gt;
* Passwort: catalogisttoll&lt;br /&gt;
&lt;br /&gt;
==Backend==&lt;br /&gt;
Mit dem Catalog bekommt man im Backend unter dem Menüpunkt 'Inhalte' 2 neue Menüeinträge:&lt;br /&gt;
* Katalog&lt;br /&gt;
* Taxonomie&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-be.png|Cat Backend]]&lt;br /&gt;
&lt;br /&gt;
==Module - Übersicht==&lt;br /&gt;
* '''''Catalog List''''' (Zur Ausgabe einer Liste von Items)&lt;br /&gt;
* '''''Catalog Reader''''' (Um die Details von einem einzelnen Item anzuzeigen)&lt;br /&gt;
* Catalog Filter (Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen)&lt;br /&gt;
* Catalog Navigation (Mit dieser Navigation kann man eine Navigation erstellen. Die Navigation besteht zum Beispiel aus Kategorien)&lt;br /&gt;
* Catalog Notify (Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird)&lt;br /&gt;
* Catalog Featured (Hiermit kann man eine besondere Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.)&lt;br /&gt;
* Catalog Related (Hiermit erstellt man eine Liste von ähnlichen Items - Einzusezten auf einer Seite wo auch der Catalog Reader enthalten ist. Zufallsausgabe)&lt;br /&gt;
* Catalog Reference (Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft.)&lt;br /&gt;
* Catalog Edit (Um ein Item im Frontend editieren zu können, wird anstelle von Catalog Reader dieses Modul verwendet)&lt;br /&gt;
&lt;br /&gt;
Für die einfachste Variante eines Cataloges braucht man nur eine Catalog List, wo dann alle Items in einer Liste/Tabelle ausgegeben werden.&lt;br /&gt;
&lt;br /&gt;
Der nächste Schritt wäre eine Liste von Items mit einer Detail Ansicht. Dafür braucht man dann nur noch Catalog List und Catalog Reader.&lt;br /&gt;
Die Liste verweist dabei auf den Reader wo dann ein einzelnes Item dargestellt wird.&lt;br /&gt;
&lt;br /&gt;
Alle anderen Module sind für fortgeschrittene Bedürfnisse da und müssen an sich nicht für die Grundfunktionalität benutzt werden.&lt;br /&gt;
&lt;br /&gt;
=Erstellen von einem Katalog (Backend)=&lt;br /&gt;
Um einen neuen catalog zu erstellen, klickt man links im Backend unter 'Inhalte' auf 'Katalog'. Anschliessend im Hauptbereich auf den Button 'Neuer Katalog'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newcat.png|Neuen Cat erstellen]]&lt;br /&gt;
&lt;br /&gt;
* Name des Katalogs angeben&lt;br /&gt;
* Einen Tabellennamen angeben (Der catalog legt diese Tabelle selbstständig an. Es hat sich bewährt eine Tabelle anzulegen ohne tl_ als präfix, da Contao diese Tabellen sonst zum Entfernen vorschlägt. Ich empfehle den präfix cat_ damit man die Tabellen schnell wiederfindet.)&lt;br /&gt;
* Alias field (kann erst später ausgefüllt werden) -&amp;gt; anstelle der ID wird der Alias genutzt bei den Links&lt;br /&gt;
* publishField (kann erst später ausgefüllt werden) -&amp;gt; Hier kann ein Checkboxfeld ausgewählt werden, was die Funktion eines 'Auges' = on-/offline hat (z.B. Ein Feld mit dem Namen online)&lt;br /&gt;
* Jump to page -&amp;gt; Hier muss die Detail Seite mit dem Modul Catalog Reader angegeben werden. {{Achtung|Die richtige Zuweisung der Readerseite erfolgt in den Kataloglisten Modulen, diese Zuweisung hier ist jedoch nötig damit der Katalog die Items in die xml-Sitemap eintragen kann. Wird diese Zuweisung hier nicht vorgenommen, so &amp;quot;weiss&amp;quot; der Katalog nicht, auf welchem Reader die Items dargestellt werden sollen und trägt sie daher nicht in der sitemap.xml ein.}}&lt;br /&gt;
* Ein Bild hinzufügen -&amp;gt; Hier kann ein Bild für den Katalog hinzugefügt werden, um im Backend den Katalog schnell von anderen unterscheiden zu können&lt;br /&gt;
* Zeichenkette des Titels formatieren (wird erst später gebraucht) -&amp;gt; Um im Backend die Übersicht von vielen Items besser gewährleisten zu können, kann man hier die Anzeigen der einzelnen Items konfigurieren&lt;br /&gt;
* Allow comments -&amp;gt; Kommentare bei den einzelnen Items erlauben und konfigurieren (Funktion ist wie bei News o.ä. daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
* Searchable -&amp;gt; Wenn man die Items auch in der Contao Suche indexieren lassen möchte. Nach Aktivierung ist es möglich, Conditions (Ausnahmen) einzugeben und das Title Feld anzugeben von einem Item (weiteres zu Conditions und Title finden Sie weiter unten)&lt;br /&gt;
** Condition -&amp;gt; Um Felder direkt aus der Suche herauszunehmen (damit unveröffentlichte Items nicht in die Suche aufgenommen werden o.ä.)&lt;br /&gt;
** Page title field -&amp;gt; Den Namen des Items auswählen, damit dieser für die Ergebnisanzeige der Suche genutzt wird ('''und auch für den Title''')&lt;br /&gt;
* Enable CSV import -&amp;gt; Damit ist es möglich CSV-Dateien zu importieren. Natürlich sollte man das nicht einfach so machen und nur von Leuten die wissen was sie tun. Daher kann hier festgelegt werden, das nur Administratoren das machen dürften und ob Items überschrieben werden oder nicht&lt;br /&gt;
* Generate feed -&amp;gt; Hier kann festgelegt werden, dass ein RSS-Feed generiert wird aus den Items (Funktion ist wie bei News o.ä., daher wird hier nicht genauer darauf eingegangen)&lt;br /&gt;
&lt;br /&gt;
==Nachträgliches Bearbeiten eines Katalogs==&lt;br /&gt;
Um die Grundeinstellungen eines Katalogs nachträglich noch einmal bearbeiten zu können, klickt man in der Katalogübersicht auf den Felder-Button...&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und anschließend im Übersichtsfeld des Katalogs auf 'Bearbeiten'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editcat.png|Cat Catalog editieren]]&lt;br /&gt;
&lt;br /&gt;
=Erstellen von Attributen/Feldern von Items in einem Katalog=&lt;br /&gt;
Nun ist die Grundkonfiguration von einem Katalog erst einmal abgeschlossen. Aber es ist noch nicht festgelegt aus welchen Feldern ein Item denn nun besteht, also welche Attribute ein Item besitzen kann.&lt;br /&gt;
Dazu kommen wir jetzt. Um neue Felder für den Katalog zu erstellen, klickt man in der Katalogübersicht auf 'Felder für Katalog erstellen'....&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-editfields.png|Cat Felder editieren]]&lt;br /&gt;
&lt;br /&gt;
...und danach auf 'Neues Feld'.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-newfield.png|Cat Neues Feld anlegen]]&lt;br /&gt;
&lt;br /&gt;
==Die Standardwerte von Feldern==&lt;br /&gt;
Die speziellen Felder werden erst sichtbar, wenn man einen Feldtyp ausgewählt hat. Diese Werte werden weiter unten erläutert.&lt;br /&gt;
* Field configuration&lt;br /&gt;
** Bezeichnung (Eine eindeutige Bezeichnung für das Feld. Diese sollte möglichst selbsterklärend sein.)&lt;br /&gt;
** Beschreibung (Um im Backend und beim Frontend-Editing eine Beschreibung anzuzeigen für die Ersteller eines Items)&lt;br /&gt;
** Spaltenname (der Spaltenname in der Tabelle. Dieser muss eindeutig sein und und so vergeben werden, das er logisch ist, da man beim Template erstellen diese Namen benutzt um an die Inhalte zu kommen)&lt;br /&gt;
** '''Typ''' (weiter unten)&lt;br /&gt;
* Display Settings (Diese Einstellungen sind für die Ansicht im Backend zuständig)&lt;br /&gt;
** Kontroll-Checkbox (Wenn eine Kontroll-Checkbox angegeben wird, wird dieses Feld erst angezeigt, wenn das Kontroll-Checkbox Feld angekreuzt ist)&lt;br /&gt;
** Vorher Umbruch einfügen (Um dieses Eingabefeld in einer neuen Zeile zu beginnen)&lt;br /&gt;
*** Legend Titel (hier kann dann ein Name für den Legend Titel angegeben werden -&amp;gt; die Grün geschriebenen Titel im Backend)&lt;br /&gt;
** Enable half width (um 2 Felder nebeneinander anzuzeigen - seit TYPOlight 2.7 möglich)&lt;br /&gt;
* Backend filter settings (hier kann festgelegt werden, ob das Feld im Backend zur Filterung angezeigt wird)&lt;br /&gt;
** Sortieren ('''Muss zum Filtern etc. angegeben werden.''' Sonst weiß Contao nicht wie der Filter erstellt werden soll. Für '''Datum''' ist zwangsweise die Angabe nötig ob nach Jahr, Monat oder Tag sortiert werden soll!)&lt;br /&gt;
** Filter&lt;br /&gt;
** Suche&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Pflichtfeld -&amp;gt; Dieses Feld muss ausgefüllt werden&lt;br /&gt;
* Frontend editing&lt;br /&gt;
** Frontend editing groups -&amp;gt; Welche Gruppen dürfen dieses Feld im Frontend bearbeiten (Mehrfachangabe ist möglich). Wenn hier nichts angegeben wird, dürfen alle Gruppen dieses Feld im Frontend editieren&lt;br /&gt;
&lt;br /&gt;
==Typ - Feldtypen von Feldern==&lt;br /&gt;
Hier werden die Angaben für die jeweiligen Typen aufgelistet und erläutert.&lt;br /&gt;
===Text===&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Alias===&lt;br /&gt;
'''Es ist immer nur ein Alias Feld erlaubt in einem Katalog.'''&lt;br /&gt;
Die Funktion ist die selbe wie bei einem Alias für eine Seite.&lt;br /&gt;
* Alias-Titel-Feld (Aus diesem Feld wird automatisch ein Alias generiert, wenn keine Angabe beim Alias gemacht wurde. Dieses Feld muss '''nicht''' Eindeutig sein. Der Alias wird aber eindeutig generiert und ist damit genau so benutzbar wie eine eindeutige ID)&lt;br /&gt;
&lt;br /&gt;
===Langtext===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Allow html (wenn erlaubt werden in dem Feld HTML-Tags erlaubt - Liste der erlaubten HTML-Tags ist in den Eigenschaften von Contao editierbar)&lt;br /&gt;
** Rich Text (wenn angekreuzt wird der TinyMCE angezeigt)&lt;br /&gt;
&lt;br /&gt;
===Nummer===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Dezimal===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Minimum (legt den Minimalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
** Maximum (legt den Maximalwert fest, den ein Benutzer eingeben kann)&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Datum===&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Zeiteingabe (Falls ausgewählt, darf der Benutzer Datum '''und''' Zeit eingeben&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Checkbox===&lt;br /&gt;
Zum Erstellen einer einfachen Checkbox. Hier kann nicht viel eingestellt werden, da ja nur 1 oder 0 als Zustand gilt.&lt;br /&gt;
&lt;br /&gt;
===Auswahl===&lt;br /&gt;
Hiermit kann man ein Auswahl-Feld (Select) erstellen, das als Grundlage eine andere Tabelle nutzt. Das kann Taxonomie sein oder auch ein anderer Katalog.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selektierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===Tags===&lt;br /&gt;
Auch Tags sind ähnlich der Auswahl dazu da, eine andere Tabelle als Wert anzugeben.&lt;br /&gt;
&lt;br /&gt;
Der Unterschied besteht darin, das Tags eine Checkboxliste ergeben, mit der auch eine Mehrfachauswahl möglich ist.&lt;br /&gt;
&lt;br /&gt;
* Advanced settings&lt;br /&gt;
** Include blank option (Um bei der Drop-Down Liste auch die Möglichkeit zu haben, eine leere Auswahl anzubieten)&lt;br /&gt;
* Options settings&lt;br /&gt;
** Tabelle für Optionen (Hier muss die Tabelle ausgewählt werden, in der die Optionen stehen - Taxonomie wäre -&amp;gt; tl_taxonomie)&lt;br /&gt;
** Spalte für Tabellenwerte (Eine Spalte für die Speicherung einer Option auswählen. Hier sind nur die Spalten vorgegeben, die sich auch in der Tabelle befinden)&lt;br /&gt;
** Anzeige der Sortierspalte (Um die Sortierung der Optionen vorzunehmen kann hier eine andere Spalte ausgewählt werden.)&lt;br /&gt;
** Filter items (Hier kann man wieder eigene Filter definieren, um die Auswahl einzugrenzen)&lt;br /&gt;
** Auswahl der Einträge&lt;br /&gt;
*** Optionen (Hier kann man noch mal genau auswählen, welche Optionen man anbieten möchte)&lt;br /&gt;
*** Modus für Unterauswahl&lt;br /&gt;
**** Show selected items collapsed (Nur die ausgewählten Items anzeigen)&lt;br /&gt;
**** Show children of selected items collapsed  (Nur die Kinder der selectierten Items anzeigen)&lt;br /&gt;
**** Tree with all items selectable (Baumansicht mit allen Items als Option auswählbar)&lt;br /&gt;
**** Tree with only children selectable (Baumansicht nur mit den Kind-Items auswählbar)&lt;br /&gt;
*** Parent Filter (Hier kann man das Eltern Element angeben, welches die Optionen enthält. Praktisch wenn man 2 Bäume bei der Taxonomie hat und nur einen zur Auswahl geben will)&lt;br /&gt;
&lt;br /&gt;
===URL===&lt;br /&gt;
Der Feldtyp URL hat keine besonderen Parameter. Er dient lediglich der Ein- und Ausgabe einer URL.&lt;br /&gt;
&lt;br /&gt;
===Datei===&lt;br /&gt;
Dieser Feldtyp ist für die Ein- und Ausgabe von Dateien vorhanden. Man kann damit Downloads oder Galerien erstellen.&lt;br /&gt;
* Advanced Settings&lt;br /&gt;
** Mehrere Dateien (Wenn ausgewählt können mehrere Dateien ausgewählt werden)&lt;br /&gt;
** Ändern des Dateibaumes &lt;br /&gt;
*** Setzen des Ordners für das Wurzelverzeichnis (Hier kann ein spezieller Dateibaum gewählt werden, um unnötige Wege zu verkürzen)&lt;br /&gt;
*** Gültige Dateitypen (In einer Komma-separierten Liste kann man hier die Dateitypen auf eine gültige Liste einschränken)&lt;br /&gt;
*** Nur Dateien erlauben (Ordner sind dann nicht anwählbar)&lt;br /&gt;
*Format settings&lt;br /&gt;
** Bild anzeigen (Um ein Bild / eine Bildergalerie anzeigen zu lassen)&lt;br /&gt;
*** Bildbreite und -höhe sind auswählbar&lt;br /&gt;
** Link erzeugen&lt;br /&gt;
*** Um einen Link zum Herunterladen der Datei zu erzeugen oder bei einem Bild eine Vollansicht (Lightbox) anzubieten&lt;br /&gt;
&lt;br /&gt;
===Calculate===&lt;br /&gt;
Um Berechnungen auf SQL Ebene vorzunehmen&lt;br /&gt;
* Calculation formula (Eingabe von einer SQL calculation für das Feld, wie '(price*1.15)*qty'&lt;br /&gt;
* Format settings&lt;br /&gt;
** Prefix und Suffix Strings&lt;br /&gt;
** Format&lt;br /&gt;
*** Formattyp&lt;br /&gt;
**** Zeichenkette&lt;br /&gt;
**** Nummer&lt;br /&gt;
**** Datum&lt;br /&gt;
*** Zeichenfolge für Formatierung&lt;br /&gt;
&lt;br /&gt;
===Bewertungen===&lt;br /&gt;
Die Besucher der Internetseite können bei Angabe eines solchen Feldtypes eine Bewertung vornehmen&lt;br /&gt;
* ajaxratingfield (Angabe von maximalen Punkten die ein Besucher vergeben kann)&lt;br /&gt;
&lt;br /&gt;
===Zugriffszähler===&lt;br /&gt;
Ohne Optionen. Hiermint wird einfach gezählt und ausgegeben wie oft auf dieses Item zugegriffen wurde. Es ist auf ein Klick per IP pro Tag festgelegt.&lt;br /&gt;
&lt;br /&gt;
===Frontend Benutzer===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um die Items nur dem jeweiligen Frontendbenutzer der sie angelegt hat zuzuweisen muss ein Feldtyp dieser Art angelegt sein.&lt;br /&gt;
&lt;br /&gt;
===Meta Keywords===&lt;br /&gt;
Ohne Optionen.&lt;br /&gt;
Um eine Liste von Keywords für diese Item eingeben zu können.&lt;br /&gt;
&lt;br /&gt;
===Mehrspaltiger Text===&lt;br /&gt;
&lt;br /&gt;
Nur verfügbar wenn zusätzlich installiert: [http://www.contao.org/erweiterungsliste/view/catalogmultitextwizardfield.html direkt zum ER]&lt;br /&gt;
&lt;br /&gt;
Hiermit kann ein Feld ähnlich des Tabellenelements in Contao angelegt werden.&lt;br /&gt;
Man definiert einmal die Spaltenanzahl und Überschriften.&lt;br /&gt;
Beim Anlegen des Items hat man dann die Möglichkeit beliebig viele Zeilen anzugeben.&lt;br /&gt;
* Spaltenüberschriften (Angabe der Anzahl, der Reihenfolge und der Titel der Spaltenüberschriften)&lt;br /&gt;
&lt;br /&gt;
Für das Frontend Editing (wenn man dieses Feld dort editieren möchte) braucht man die Erweiterung [http://www.contao.org/erweiterungsliste/view/x_FrontendMultiTextWizard.de.html xFrontend MultiTextWizard]. Ansonsten ist dieses Feld nicht editierbar.&lt;br /&gt;
&lt;br /&gt;
===Produktvariante (Besonderheit vom chshop -&amp;gt; wird dort erläutert)===&lt;br /&gt;
&lt;br /&gt;
=== Merkliste und Varianten ===&lt;br /&gt;
Mit diesem Feldtyp ist es möglich Items für eine Merkliste vorzubereiten.&lt;br /&gt;
* Notelistvariants sind die Varianten, die ein Item besitzen können. Die Liste der Varianten besteht aus Select- und Tagfields des Katalogs. Dadurch ist es möglich Varianten von der Taxonomie oder von anderen Katalogen zu erstellen, indem man in diesem Katalog Auswahlen dafür anlegt.&lt;br /&gt;
&lt;br /&gt;
==Sobald man Felder definiert hat==&lt;br /&gt;
ist in der Übersicht bei den Feldern zu sehen ob ein Feld:&lt;br /&gt;
* zur Suche markiert ist&lt;br /&gt;
* Sortierbar ist&lt;br /&gt;
* Gruppiert wurde (um die Reihenfolge festzulegen)&lt;br /&gt;
* ein Pflichtfeld ist&lt;br /&gt;
* ob es eine Kontrol Checkbox ist (nur wenn angewählt wird es sichtbar)&lt;br /&gt;
* Ob es ein Dateityp ist&lt;br /&gt;
* Ob es sich um ein Bild handelt&lt;br /&gt;
* in der halben Breite im Backend angezeigt wird&lt;br /&gt;
* Ob darüber ein Filter angewendet wird&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-fieldpreview.png|Felderübersicht]]&lt;br /&gt;
&lt;br /&gt;
=Frontend Module und ihre Atribute=&lt;br /&gt;
&lt;br /&gt;
Bei den verschiedenen Modulen muss zunächst eine Auswahl getroffen werden, für welchen Katalog das Modul gemacht wird. Dabei kann immer nur ein Katalog gewählt werden. &lt;br /&gt;
&lt;br /&gt;
'''Allgemeine Einstellungen (die alle Module haben):'''&lt;br /&gt;
* Titel&lt;br /&gt;
* Überschrift&lt;br /&gt;
* Modultyp (mit den unten stehenden Modultypen)&lt;br /&gt;
* Zugriffsschutz (Nur bestimmten Gruppen das Modul anzeigen)&lt;br /&gt;
* Experten Einstellungen&lt;br /&gt;
** Nur Gästen anzeigen&lt;br /&gt;
** CSS-ID/Klasse&lt;br /&gt;
** Abstand davor und dahinter&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-list.jpg|Cat Modul Liste]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-cat2-view-reader.jpg|Cat Modul Reader]]&lt;br /&gt;
&lt;br /&gt;
==Catalog List==&lt;br /&gt;
Zur Ausgabe einer Liste von Items wird das Modul [[ModuleCatalogList]] verwendet.&lt;br /&gt;
&lt;br /&gt;
==Catalog Reader==&lt;br /&gt;
Um die Details von einem einzelnen Item anzuzeigen&lt;br /&gt;
* Als Wichtigstes muss eine Weiterleitungsseite eingestellt werden. Auf dieser Seite muss der Catalog Reader vorhanden sein.&lt;br /&gt;
* catalog layout (Auswahl des Templates für den Reader)&lt;br /&gt;
** catalog_full (Standardtemplate um Alles auszugeben)&lt;br /&gt;
** catalog_full_rev (Template um alle Felder auszugeben - Entwickler Version)&lt;br /&gt;
* Visible Fields - Sichbare Felder. Diese Felder sind dann im Template verfügbar. Man kann auch die Reihenfolge der Ausgabe bestimmen.&lt;br /&gt;
&lt;br /&gt;
==Catalog Filter==&lt;br /&gt;
Mit Hilfe von einem Filter können Besucher die Liste eines Catalogs filtern und die Anzeige eingrenzen. Die Filter können hier genau eingestellt werden. Sogar ein eigenes Suchfeld nur für den einen Katalog kann hier erstellt werden.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll dieser Filter benutzt werden (es kann nur ein Katalog angegeben werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul 'cataloglist', da hier dann nur noch die Items angezeigt werden, die zu der gefilterten Ausgabe passen)&lt;br /&gt;
* Filter layout (default -&amp;gt; filter_default | zum Entwickeln ist das filter_widget Template gedacht)&lt;br /&gt;
* Enables Filter By section (Einen Filter erstellen)&lt;br /&gt;
** Filter Headline (Überschrift für diese(n) Filter)&lt;br /&gt;
** Filter Fields (Hier kann man das Feld und die Art des Filters auswählen)&lt;br /&gt;
*** Die Reihenfolge bestimmt man mit den grünen Pfeilen neben der Feldbezeichnung&lt;br /&gt;
*** Tree View (Ankreuzen wenn es eine baumartige Struktur sein soll, bzw. bei diesem Feld eine baumartige Struktur eingegeben wurde. Die Kindelemente reagieren dabei auf die Auswahl der Elternelemente)&lt;br /&gt;
*** None (default Wert -&amp;gt; es wird von diesem Feld kein Filter erstellt)&lt;br /&gt;
*** Links List (eine einfache Link Liste wird von dem Feld erstellt)&lt;br /&gt;
*** Radio Button (Eine Auswahl mittels Radio Button wird erstellt, so ist die Auswahl nur von einem Wert möglich)&lt;br /&gt;
*** Select drop-down (Eine Auswahl mittels einer Select-Box wird erstellt. Nur ein Wert kann ausgewählt werden.)&lt;br /&gt;
** Reveal tree view sequentially (Die Filter werden erst nach und nach eingeblendet. Die Reihenfolge bestimmt dabei die Einblendung. So wird der 2. Filter erst eingeblendet, wenn im ersten etwas ausgewählt wurde. Eine Möglichkeit wäre hier die Auswahl von Städten, die erst erscheint, wenn ein Bundesland ausgewählt wurde)&lt;br /&gt;
** Tags multiple select allowed (Wenn dieses Feld ausgewählt wurde, wird aus dem Radio Button eine Checkbox und aus der Select drop-down Liste eine Liste mit der Möglichkeit meherere auszuwählen.)&lt;br /&gt;
* Enables Range section (Hier können Felder ausgewählt werden, wo ein Minimum und Maximum eingegeben werden kann um darüber zu Filtern)&lt;br /&gt;
** Range Headline (Überschrift angeben)&lt;br /&gt;
** Range Fields (Auswahl der Felder für die ein Bereichsauswahl erstellt werden soll. Die Liste ist auch wieder sortierbar)&lt;br /&gt;
* Enables Date section (Hier können Felder ausgewählt werden, welche nach Datum zusammengefasst werden können)&lt;br /&gt;
** Dates Headline (Überschrift angeben)&lt;br /&gt;
** Date Filds (Hier sind nur Datumsfelder zur Auswahl angeboten. Man kann bestimmen, welches benutzt werden soll)&lt;br /&gt;
** Date Ranges (Hier kann angegeben werden, welche Auswahl der Besucher hat, um die Daten zu filtern):&lt;br /&gt;
*** Last year&lt;br /&gt;
*** Last 6 months&lt;br /&gt;
*** Last month&lt;br /&gt;
*** Last week&lt;br /&gt;
*** Yesterday&lt;br /&gt;
*** Today&lt;br /&gt;
*** Tomorrow&lt;br /&gt;
*** Next week&lt;br /&gt;
*** Next month&lt;br /&gt;
*** Next 6 months&lt;br /&gt;
*** Next year&lt;br /&gt;
* Enables Sort section (Hier wird eingestellt, welche Felder vom Besucher überhaupt sortierbar sind und wie das geschehen soll) &lt;br /&gt;
** Sort Headline (Überschrift angeben)&lt;br /&gt;
** Sort Fields (Hier muss angegeben werden, welche Felder sortierbar sein sollen. Die Reihenfolge kann wieder über die grünen Pfeile bestimmt werden)&lt;br /&gt;
** Sort form control type Hier wird festgelegt, wie die Besucher bestimmen können wie sortiert wird:&lt;br /&gt;
*** select (Über eine Select Auswahl)&lt;br /&gt;
*** list (Mit hilfe einer Linkliste)&lt;br /&gt;
*** radio (Über einen Radio Button)&lt;br /&gt;
* Enables Search Box (Eine Suchbox einschalten. Nur Text, langtext Felder werden unterstützt)&lt;br /&gt;
** Search Headline (Überschrift eingeben)&lt;br /&gt;
** Search Fields (Hier können die Felder ausgewählt werden, in denen gesucht werden soll)&lt;br /&gt;
* Use filter condition from lister on same page (Wenn auf derselben Seite auch eine List-Modul von dem Katalog eingesetzt wird und diese Liste mit conditions eingeschränkt ist, werden bei Auswahl dieses Feldes die Filter mit Berücksichtigung der conditions erstellt.)&lt;br /&gt;
&lt;br /&gt;
==Catalog Navigation==&lt;br /&gt;
Mit diesem Modul kann man eine Navigation durch einen Katalogs erstellen. Die Navigation besteht zum Beispiel aus Kategorien.&lt;br /&gt;
* Catalog -&amp;gt; für welchen Katalog soll diese Navigation genommen werden (es kann nur ein Katalog ausgewählt werden)&lt;br /&gt;
* Weiterleitungsseite (auf welche Seite soll bei Klick weitergeleitet werden. Üblicherweise ist das eine Seite mit dem Modul [[ModuleCatalogList|Katalog liste]], da hier dann nur noch die Items angezeigt werden, die zu der Kategorie passen)&lt;br /&gt;
* Navigations field -&amp;gt; Hier muss das Feld angegeben werden, aus dem die Navigation zusammengesetzt wird. Also ein Select- oder Tagfield aus dem gewählten Katalog.&lt;br /&gt;
* Alle anderen Einstellungen der Navigation funktionieren genau so wie beim normalen [[ModulNavigation|Navigationsmodul]]&lt;br /&gt;
&lt;br /&gt;
==Catalog Notify==&lt;br /&gt;
Hiermit wird ein Formular erstellt, welches zur schnellen Kontaktaufnahme bei einem einzelnen Item dargestellt wird. Z.B.: Möchten Sie nähere Informationen zu diesem Produkt? Dann schicken Sie uns bitte Ihre Kontaktdaten, damit wir uns bei Ihnen melden können.&lt;br /&gt;
* Catalog (Hier muss wieder der Katalog angegeben werden, in dem das Item dargestellt werden soll)&lt;br /&gt;
* Form Fields (Hier können Sie Felder angeben, die der Benutzer ausfüllen soll, damit Sie Kontakt zu ihm aufnehmen können)&lt;br /&gt;
* Sicherheitsfrage deaktivieren (nicht empfohlen! Nur sinnvoll, wenn die Benutzer schon in einem Bereich sind, in dem man sich anmelden muss)&lt;br /&gt;
* Subject (Betreff der Email, hier können spezielle Inserttags benutzt werden in der Art -&amp;gt; &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt;. Z.B. &amp;lt;nowiki&amp;gt;{{catalog::title}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Recipients List (Liste von Emailadressen, die eine Email mit dem Inhalt erhalten sollen)&lt;br /&gt;
* Body text (Text der Email. Auch hier sind die speziellen Inserttags &amp;lt;nowiki&amp;gt;{{catalog::Spaltenbezeichnung}}&amp;lt;/nowiki&amp;gt; möglich. Zusätzlich sind noch die Variablen ##catalog## und ##link## verfügbar. Wobei catalog durch den Katalog und link durch den direkten Link zu dem Item ersetzt werden.&lt;br /&gt;
* Catalog Template (Hier kann das passende Template angegeben werden um das Formular darzustellen. Default ist mod_catalognotify)&lt;br /&gt;
&lt;br /&gt;
==Catalog Featured==&lt;br /&gt;
Hiermit kann man eine Liste erstellen, die besondere Items darstellt. Die Liste wird per Zufall zusammengestellt.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
* Um spezielle Einträge anzulegen braucht nur ein extra Feld (checkbox) erstellt werden (z.B. hervorgehoben) und in der Condition können dann Items festgelegt werden, deren Wert 1 ist -&amp;gt; spalte_hervorgehoben=1&lt;br /&gt;
&lt;br /&gt;
==Catalog Related==&lt;br /&gt;
Hiermit erstellt man eine Liste von ähnlichen Items - einzusetzen auf einer Seite, auf der auch der Catalog Reader enthalten ist. Zufallsausgabe.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Related fields to match (Angabe der Felder, die bei den darzustellenden Items gleich sein sollen)&lt;br /&gt;
** Amount of tags that must be in common (Einstellen der Anzahl der Übereinstimmungen -&amp;gt; Minimumangabe. d.h. wenn 3 Felder angegeben wurden, die übereinstimmen sollen, kann bei einer Angabe von 1 auch ein Item angezeigt werden, welches nur eine Übereinstimmung hat und nicht alle 3)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Reference==&lt;br /&gt;
Hiermit erstellt man eine Liste von Items mit einer gleichen Eigenschaft. Diese muss zusammen mit dem Catalog Reader eingesetzt werden und ist für die Anzeige von Items aus einem '''anderen''' Katalog.&lt;br /&gt;
* Grundeinstellungen sind wie bei der Catalog-List&lt;br /&gt;
* Besonderheiten:&lt;br /&gt;
** Select the match field (Das Feld auswählen, welches die Verbindung zum anderen Katalog herstellt)&lt;br /&gt;
** Select reference catalog (Den zweiten Katalog auswählen, wo die anzuzeigenden Items enthalten sind)&lt;br /&gt;
** Select the reference field (Das Feld angeben, welches im 2. Katalog für die Identifizierung genutzt wird. Es soll dasselbe Feld angegeben werden, welchen auch schon für die Verknüpfung genommen wurde)&lt;br /&gt;
** Number of items (Hier kann die Anzahl der Items dargestellt werden. 0 zeigt alle)&lt;br /&gt;
** Custom ordering (Die Reihenfolge kann hier festgelegt werden)&lt;br /&gt;
&lt;br /&gt;
==Catalog Edit==&lt;br /&gt;
Um ein Item im Frontend editieren und erstellen zu können. Dieses Modul wird anstelle von Catalog Reader verwendet.&lt;br /&gt;
*Catalog (den Katalog auswählen, dessen Items im Frontend editierbar sein soll)&lt;br /&gt;
* Editable Fields (Angabe der Felder, die editierbar sein sollen. Mit den Pfeilen kann man diese in der Reihenfolge anordnen)&lt;br /&gt;
* Weiterleitungsseite (Seite die angezeigt werden soll, wenn das Formular abgesendet wurde. Meistens wird wieder zurück zu der Liste weitergeleitet)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (Nicht empfohlen! Es sei denn, nur angemeldete Benutzer haben Zugriff auf diese Seite)&lt;br /&gt;
* Restricted fields (Mit dieser Einstellung können Vorbelegungen, die _nicht_ geändert werden können, vorgenommen werden. Diese Felder sollten nicht als Editable Fields konfiguriert sein)&lt;br /&gt;
** Wählen Sie hier die Felder aus, welche vorbelegt sein sollen&lt;br /&gt;
** Restricted fields default values (Sind erst '''nach dem Speichern einstellbare Vorgaben''' für die Felder, die vorher ausgewählt wurden -&amp;gt; Jeder Feldtyp ist individuell einstellbar.)&lt;br /&gt;
** Beispiel für ein Restricted field: Ein Feld mit einer Checkbox, ob das Item online sein soll. 'online' bekommt als default Wert 'Nein'. Nun ist jedes Item, was über diesen Catalog Editor erstellt oder bearbeitet wird offline! So kann man im Frontend mit einer extra Gruppe, die dieses Feld bearbeiten kann und eben keine default Vorgabe hat die Items freischalten. Die 'normalen' Benutzer haben dieses Recht dann nicht.&lt;br /&gt;
&lt;br /&gt;
=Weitere Einstellungsmöglichkeiten=&lt;br /&gt;
&lt;br /&gt;
== Merkliste - Formulargenerator ==&lt;br /&gt;
Die Merkliste wird nicht als extra Modul erstellt, sondern in einem Formular mit dem Formulargenerator von Contao.&lt;br /&gt;
&lt;br /&gt;
Dazu gibt es ein neuen Feldtyp 'Merkliste' der zum Beispiel am Anfang positioniert werden kann.&lt;br /&gt;
Der Besucher kann später das Formular ausfüllen und so die Liste an den Emailempfänger versenden, um sich so zum Beispiel ein Angebot für die Items einzuholen.&lt;br /&gt;
&lt;br /&gt;
Einstellungen:&lt;br /&gt;
* Feldname (der Feldname für diesen Feldtyp)&lt;br /&gt;
* Feldbezeichnung (diese wird normalerweise für Felder als Label angezeigt und sollte daher hier '''leer''' gelassen werden)&lt;br /&gt;
* Text (Hier kann ein Text angegeben werden, der über der Liste der Items angezeigt wird)&lt;br /&gt;
* Katalog (Den Katalog angeben, der die Items enthält)&lt;br /&gt;
* Sichtbare Felder (Die anzuzeigenden Felder von den Items, die Liste ist auch hier wieder über die Pfeile sortierbar)&lt;br /&gt;
&lt;br /&gt;
=== Templates für die Merkliste ===&lt;br /&gt;
* form_catalognotelist.tpl (Template für die Liste im Formular)&lt;br /&gt;
* form_catalognotelist_mail.tpl (Template für die Email, welche die Items vom Merkzettel enthält. Hier kann genau festgelegt werden, welche Felder in der Email von einem Item angezeigt werden.)&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks zur Umsetzung=&lt;br /&gt;
&lt;br /&gt;
==Welche Variablen hat man in einem Template zur Verfügung?==&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;?php print_r($this-&amp;gt;entries); ?&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
Damit bekommt man das komplette Array ausgegeben.&lt;br /&gt;
&lt;br /&gt;
==Zeichenkette des Titels formatieren==&lt;br /&gt;
Warum wird bei mir nichts angezeigt, obwohl ich da etwas angegeben habe?&lt;br /&gt;
* Wichtig: man muss bei den Feldern die man später hier benutzen möchte folgendes Ankreuzen -&amp;gt; Anzeige-Einstellungen &amp;gt; Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
&lt;br /&gt;
==Wie kann man in der Detail Ansicht den meta-title so beeinflussen, das dieser den Namen von dem Item nimmt?==&lt;br /&gt;
* Einfach das Feld für den Namen mit title benennen (das ist die Fallback Methode, wenn die andere -&amp;gt; Page title field nicht benutzt wird). Der catalog wird dann automatisch dieses Feld benutzen um den meta-title zu generieren.&lt;br /&gt;
* Page title field beim Katalog sezten. Zu finden unter 'Search' in den Einstellungen vom Katalog.&lt;br /&gt;
&lt;br /&gt;
==Wie bekommt man ein Auge bei den Items? / on- offline Schalten von Items==&lt;br /&gt;
Zuerst muss man sich in Feld vom Typ 'Checkbox' anlegen. Zum Beispiel mit dem Namen 'online'.&lt;br /&gt;
Jetzt kann man den Katalog konfigurieren und bei '''Feld veröffentlichen''' (publish Field) das Checkbox-Feld auswählen.&lt;br /&gt;
Ab jetzt ist im Backend bei den Items eines Katalogs ein graues oder grünes Auge (je nach Zustand) sichtbar.&lt;br /&gt;
&lt;br /&gt;
==Detail Seiten in die sitemap.xml und ins Modul Sitemap bringen==&lt;br /&gt;
* sitemap.xml -&amp;gt; Den Katalog einfach für die Indexierung der Suche freigeben -&amp;gt; [http://tip.dasprojekt.org/Catalog_2#Erstellen_von_einem_Katalog_.28Backend.29 Searchable] (Achtung: eine Weiterleitungsseite muss auf jeden Fall angegeben sein beim Katalog selber. Diese Seite wird dann in der Sitemap benutzt um die Items darzustellen.)&lt;br /&gt;
* Modul Sitemap -&amp;gt; Hier werden die Detailseiten nicht integriert, da es bei einem normalen Katalog schon zu viele Einträge wären, um diese dort sinnvoll darzustellen.&lt;br /&gt;
&lt;br /&gt;
==Alias bei Links benutzen (anstelle der ID)==&lt;br /&gt;
Dazu brauchst man nur ein Pflichtfeld (Namen von dem Item) und erstellt dann noch ein Feld vom Typ Alias. Das Alias-Titel-Feld ist dann der Name des Items.&lt;br /&gt;
Bei dem Katalog selber muss noch ausgewählt werden, welches das Alias Feld ist.&lt;br /&gt;
Das Alias Feld ist genau so wie das Alias Feld von Seiten etc., man kann selbst etwas eintragen oder den Inhalt automatisch generieren lassen, wenn man das leer lässt.&lt;br /&gt;
Nachdem die Suche und die Seiten neu generiert wurden (Systemwartung) sollte der Alias bei der Suche und auch bei der Detailansicht (URL) genutzt werden.&lt;br /&gt;
'''Im Moment muss in der Liste das Alias Feld als 'Sichtbar' ausgewählt werden. Sonst funktioniert die Verlinkung nicht! (Sollte in der Endversion behoben sein)'''&lt;br /&gt;
&lt;br /&gt;
==Folder-URL und der catalog wollen nicht so recht==&lt;br /&gt;
&lt;br /&gt;
Unter Einstellungen kann unter Sicherheitseinstellungen eine Liste von Variablennamen angeben werden, welche von der Erweiterung Folder-URL als Parameter erkannt werden sollen. Hier muss &amp;quot;orderby,sort&amp;quot; angegeben werden. Dadurch 'ignoriert' Folderurl diese Parameter und der catalog ist wie immer nutzbar.&lt;br /&gt;
&lt;br /&gt;
Es sollten alle Schlüsselwörter der Filtermöglichkeiten hinzugefügt werden. Wenn man die Einträge des Kataloges nach z.B. &amp;quot;Ort&amp;quot; sortieren will, gibt es einen Fehler, wenn das Feld der Datenbanktabelle nicht bei den &amp;quot;URL Schlüsselworte&amp;quot; in den Einstellungen auftaucht.&lt;br /&gt;
&lt;br /&gt;
==Eine Liste im Frontend so sortieren wie im Backend==&lt;br /&gt;
Um eine Liste genau so zu sortieren wie im Backend braucht man einfach nur bei der Sortierung nach dem Feld 'sorting' zu sortieren (z.B. sorting ASC)&lt;br /&gt;
&lt;br /&gt;
==Items im Backend verschieben==&lt;br /&gt;
Damit man Items im Backend verschieben kann darf man '''nicht''' die Sortierungs Option bei einem Feld eingeschaltet haben (Backend Filter Einstellungen &amp;gt; Sortiereung-Dropdown aktivieren)&lt;br /&gt;
&lt;br /&gt;
==Bedingung bei Strings==&lt;br /&gt;
&lt;br /&gt;
Um eine Bedingung anzugeben, die innerhalb eines Strings vorhanden ist, reicht es ja nicht einfach nur einen Vergleich per SQL vorzunehmen.&lt;br /&gt;
Beispiel: Über den Feldtyp Tag sind Taxonomieen einem Produkt zugeordnet. Da das mehrere sein können muss man die Bedingung in der Liste wie folgt abfragen -&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;FIND_IN_SET(7, kategorie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
D.h.: es soll innerhlab von kategorie nach der ID 7 gesucht werden.&lt;br /&gt;
&lt;br /&gt;
==Formatierung von Zahlen in den Backend Einstellungen==&lt;br /&gt;
&lt;br /&gt;
Um Zahleneingaben zu formatieren, wird mit php gearbeitet.&lt;br /&gt;
&lt;br /&gt;
Hier finden sich Anleitungen dazu -&amp;gt; [http://php.net/manual/en/function.money-format.php]&lt;br /&gt;
&lt;br /&gt;
Beispiel: &lt;br /&gt;
* Zahleneingabe -&amp;gt; 1023934&lt;br /&gt;
* Formatierung -&amp;gt; &amp;lt;nowiki&amp;gt;2, ',', ' ' &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Ausgabe -&amp;gt; 10.239,34&lt;br /&gt;
&lt;br /&gt;
==Filtern nach Datum==&lt;br /&gt;
&lt;br /&gt;
Aufgabenstellung:&lt;br /&gt;
Das Datumsfeld ist in dem Format 'dd.mm.yyyy' vorhanden.&lt;br /&gt;
Es soll nun für das aktuelle Jahr eine Ausgabe erfolgen und für die vergangenen Jahre ein Archiv erstellt werden.&lt;br /&gt;
&lt;br /&gt;
Das Problem:&lt;br /&gt;
Die Datum Angaben werden als timestamp gespeichert und sind in einem char Feld.&lt;br /&gt;
&lt;br /&gt;
Lösungsansatz:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('{{date::Y}}-01-01') AND UNIX_TIMESTAMP('{{date::Y}}-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
So kommt man an die Daten des aktuellen Jahres, um die Daten von 2009 auszugeben:&lt;br /&gt;
&amp;lt;pre&amp;gt;meinedatumsvariable BETWEEN UNIX_TIMESTAMP('2009-01-01') AND UNIX_TIMESTAMP('2009-12-31')&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Mit DCA Felder besser einschränken==&lt;br /&gt;
Inzwischen ist es möglich Felder über DCA zu steuern. Der Vorteil: dadurch kann man wesendlich besser Fehleingaben abfangen.&lt;br /&gt;
Hier unter 'Felder' kann mna die Möglichkeiten der Konfiguration sehen -&amp;gt; [http://www.contao.org/referenz.html http://www.contao.org/referenz.html]&lt;br /&gt;
&lt;br /&gt;
Um ein Feld zum Beispiel nur für den Lesenden Zugriff freizugeben kann man diese Syntax nutzen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['readonly'] = true;&lt;br /&gt;
&lt;br /&gt;
Oder die Eingabe von einer E-Mail überprüfen:&lt;br /&gt;
 $GLOBALS['TL_DCA']['tabellenname']['fields']['spaltenname']['eval']['rgxp'] = 'email';&lt;br /&gt;
&lt;br /&gt;
=Video Tutorials aus dem Internet=&lt;br /&gt;
Ein paar Videos zu dem Catalog:&lt;br /&gt;
&lt;br /&gt;
{{#widget:YouTube|id=Dg55QT7uGEI}} {{#widget:YouTube|id=wwhuSCQ4Jb4}}&lt;br /&gt;
&lt;br /&gt;
=Tutorials=&lt;br /&gt;
* [[Catalog Merkzettel erstellen]]&lt;br /&gt;
* [[Catalog mit Frontend-Editing und Workflow erstellen]]&lt;br /&gt;
* [[Catalog Templates anpassen]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Toflar|Toflar]] 15:12, 15. Mai 2010 (UTC+1)&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:02, 5. Apr. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen</id>
		<title>Catalog mit Frontend-Editing und Workflow erstellen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Catalog_mit_Frontend-Editing_und_Workflow_erstellen"/>
				<updated>2010-07-04T11:12:02Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Katalog-Edit */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo&lt;br /&gt;
|TLVersion=ab 2.8&lt;br /&gt;
|Version=ab 2.9&lt;br /&gt;
|Ext1=Catalog ab 2.0beta1&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Catalog]]&lt;br /&gt;
&lt;br /&gt;
=Kurzbeschreibung=&lt;br /&gt;
Hier geht es darum, wie man Items im Frontend erstellen und bearbeiten kann. Anhand eines Immobilienkataloges wird auch noch die Einrichtung eines Workflows vorgestellt. Zum Schluss soll es dem Besucher der Seite noch möglich sein Kontakt zu dem Seitenbetreiber aufzunehmen (mithilfe eines Formulars bei dem Item).&lt;br /&gt;
Hier bei dem Beispiel werden exemplarisch zwei Arten von Immobilien angelegt (Haus zum Kaufen und Hotelzimmer).&lt;br /&gt;
Bei diesem Beispiel ist die Backend-Ansicht von den Items nicht wirklich wichtig und wurde auch vernachlässigt, da alle Items über das Frontend verwaltet werden.&lt;br /&gt;
&lt;br /&gt;
=Benötigte Erweiterungen=&lt;br /&gt;
* catalog&lt;br /&gt;
** backend_filterwiz&lt;br /&gt;
** backend_tabletree&lt;br /&gt;
** DC_DynamicTable&lt;br /&gt;
** taxonomy&lt;br /&gt;
* catalogitemuseridfield (für den Workflow wichtig, da damit die Items dem User zugewiesen werden)&lt;br /&gt;
* catalog_mailer (hier gibt es im Moment noch das Problem einer blöden abhängigkeit von catalog_ext. also noch nicht installieren!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Voraussetzungen für das Tutorial=&lt;br /&gt;
* wie ein Katalog erstellt wird sollte von anderen Tutorials klar sein und man sollte die Beschreibung der einzelnen Felder gelesen haben.&lt;br /&gt;
* Erstellung von Taxonomie&lt;br /&gt;
* der Umgang mit Contao sollte bekannt sein&lt;br /&gt;
** Seitenstruktur bearbeiten&lt;br /&gt;
** Module anlegen&lt;br /&gt;
** Templates bearbeiten&lt;br /&gt;
** Mitgliederbereich einrichten (für 2 Gruppen:Makler und Makler-Admins) &lt;br /&gt;
&lt;br /&gt;
=Erstellen der Grundlagen im Backend=&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Erstellung von neuen Seiten in der Seitenstruktur==&lt;br /&gt;
&lt;br /&gt;
* Startseite (Hier wird catalogfeatured eingesetzt)&lt;br /&gt;
** Immobilien Liste (Filter und Liste der Immobilien)&lt;br /&gt;
*** Immobilien Details (die Detailseite von einem Item)&lt;br /&gt;
* Geschützer Bereich&lt;br /&gt;
** Immobilien Anlegen (Für normale Makler)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
** Immobilien Anlegen Administration (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten&lt;br /&gt;
*** Hotelzimmer Liste&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-sitestructure.png|Cat Sitestructure]]&lt;br /&gt;
&lt;br /&gt;
==Taxonomie (Bedingung)==&lt;br /&gt;
&lt;br /&gt;
Die Taxonomien sind für die Kategorien und für die Gebiete der Items&lt;br /&gt;
&lt;br /&gt;
Man erstellt sich zuerst die Kategorien und die Optionen. Wobei man hier wie bei einem Baum Verschachtelungen vornimmt:&lt;br /&gt;
&lt;br /&gt;
* Immobilien&lt;br /&gt;
** Immo Art&lt;br /&gt;
*** Haus&lt;br /&gt;
**** Miethaus&lt;br /&gt;
**** Ferienhaus&lt;br /&gt;
**** Haus zum kaufen&lt;br /&gt;
*** Hotel&lt;br /&gt;
**** Hotelzimmer&lt;br /&gt;
** Immo Gebiete&lt;br /&gt;
*** Bizerte&lt;br /&gt;
*** Jendouba&lt;br /&gt;
*** Beja&lt;br /&gt;
*** etc.&lt;br /&gt;
&lt;br /&gt;
Das Ergebniss sollte ungefähr so aussehen wie auf diesem Bild:&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-taxonomy.png|Cat Taxonomy]]&lt;br /&gt;
&lt;br /&gt;
==Erstellen von einem Katalog mit Feldtypen==&lt;br /&gt;
&lt;br /&gt;
===Neuer Katalog===&lt;br /&gt;
&lt;br /&gt;
Zuerst erstellt man mit einem Klick auf Neuer Katalog einen neuen Katalog und stellt den wie folgt ein:&lt;br /&gt;
* Name von dem Katalog angeben&lt;br /&gt;
* einen Tabellennamen angeben (die Tabelle wird automatisch erzeugt). Bitte '''keine Tabellen mit tl_* anlgegen''', da diese dann von Contao immer als zu löschen vorgemerkt werden beim aktualisieren der Datenbank.&lt;br /&gt;
* Alias und Felder veröffentlichen kann erst später angegeben werden, wenn diese Felder vorhanden sind.&lt;br /&gt;
* Sprung zur Seite: Angabe der Detailansicht&lt;br /&gt;
* Suche - Suchbar -&amp;gt; aktivieren (keine Bedingung angeben)&lt;br /&gt;
* Alle weiteren Einstellungen werden erst später vorgenommen.&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat1.png|Cat erstellen Bild1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-newcat2.png|Cat erstellen Bild2]]&lt;br /&gt;
&lt;br /&gt;
===Felder definieren für den Katalog Merkzettel===&lt;br /&gt;
Es werden folgende Felder angelegt (Einstellungen die nicht vorgenommen werden, sind nicht aufgelistet):&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields1.png|Cat Felder erstellen]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-fields2.png|Cat Neues Feld]]&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;20&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|+ align=&amp;quot;bottom&amp;quot; style=&amp;quot;color:#e76700;&amp;quot; |''Feldtypen für die Items''&lt;br /&gt;
|-&lt;br /&gt;
!Bezeichnung&lt;br /&gt;
!Spaltenname&lt;br /&gt;
!Typ&lt;br /&gt;
!Einstellungen&lt;br /&gt;
|-&lt;br /&gt;
|Titel&lt;br /&gt;
|immo_titel&lt;br /&gt;
|text&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Sortierungs-Dropdown aktivieren&lt;br /&gt;
** Sortier-Modus -&amp;gt; Gruppieren anhand der ersten zwei Buschstaben und absteigend&lt;br /&gt;
** Backend-Suche aktivieren&lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Alias&lt;br /&gt;
|immo_alias_auto&lt;br /&gt;
|alias&lt;br /&gt;
| * Alias-Titel-Feld -&amp;gt; '''Titel'''&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Benutzer ID&lt;br /&gt;
|userid&lt;br /&gt;
|Frontend-Benutzer&lt;br /&gt;
|-&lt;br /&gt;
|Art&lt;br /&gt;
|immo_art&lt;br /&gt;
|Auswahl&lt;br /&gt;
| &lt;br /&gt;
* Pflichtfeld&lt;br /&gt;
* Tabelle für Optionen -&amp;gt; '''tl_taxonomy'''&lt;br /&gt;
* Option Spaltenwert -&amp;gt; '''name'''&lt;br /&gt;
* Option Sortierspalte -&amp;gt; name&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Die Optinsauswahl individualisieren&lt;br /&gt;
** Auswahl der Stamm-Einträge -&amp;gt; Immo Art&lt;br /&gt;
** Modus für Unter-Auswahl -&amp;gt; ''Zeigen Sie die Kindelemente von ausgewählten Einträgen ausgeklappt an.'''&lt;br /&gt;
** Filter des Elternelements -&amp;gt; leer lassen&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Umgebungsbeschreibung&lt;br /&gt;
|immo_umgebung&lt;br /&gt;
|langtext&lt;br /&gt;
| &lt;br /&gt;
* HTML erlauben&lt;br /&gt;
* Rich Text&lt;br /&gt;
* TinyMCE-Editor-Template -&amp;gt; tinyMCE&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bild&lt;br /&gt;
|immo_bild&lt;br /&gt;
|file&lt;br /&gt;
|&lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht -&amp;gt; aktivieren&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Produktbild&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Bildergalerie&lt;br /&gt;
|immo_bildergalerie&lt;br /&gt;
|file&lt;br /&gt;
| &lt;br /&gt;
* Mehrfach-Auswahl&lt;br /&gt;
* Anordnung nach Dateiname (aufsteigend)&lt;br /&gt;
* Format Einstellungen&lt;br /&gt;
** Als Bildfeld mit Miniaturansicht erstellen&lt;br /&gt;
** Bildbreite und -höhe -&amp;gt; 200 / 100 / Exaktes Format&lt;br /&gt;
** Links als Dateidownload oder Bilder-Lightbox erstellen -&amp;gt; aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Veröffentlichen&lt;br /&gt;
|immo_veroeffentlichen&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|-&lt;br /&gt;
|Online&lt;br /&gt;
|immo_online&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Hervorheben&lt;br /&gt;
|immo_besonders&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Makler-Admin'''&lt;br /&gt;
|-&lt;br /&gt;
|Immobilie entfernen&lt;br /&gt;
|immo_delete&lt;br /&gt;
|checkbox&lt;br /&gt;
| &lt;br /&gt;
* Sichtbar in der Backend-Listen-Ansicht&lt;br /&gt;
* Beschriftungsgruppe beginnen -&amp;gt; aktivieren&lt;br /&gt;
** Titel der Beschriftung -&amp;gt; Online&lt;br /&gt;
** Backend-Filter aktivieren&lt;br /&gt;
* '''Gruppen für Frontend-Bearbeitung'''&lt;br /&gt;
** '''Beide Gruppen auswählen'''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Erklärung====&lt;br /&gt;
* Natürlich sind hier noch viel mehr Felder und Feldtypen angelegt. Diese paar sollten aber reichen um das prinzip zu verdeutlichen.&lt;br /&gt;
** Jede Art hat da ihre eigenen Felder (z.B. ist die Grundstücksfläche für Hotelzimmer nicht wichtig und wird daher dann später nicht mit ausgegeben)&lt;br /&gt;
* Bild und die Galerie sind getrennt, damit später in der Listenansicht ein bestimmtes Bild ausgegeben werden kann.&lt;br /&gt;
* Die Checkboxen '''Veröffentlichen''', '''Online''', '''Hervorheben''' und '''Immobilien entfernen''' sind besonders wichtig für die Verwaltung der Immobilien.&lt;br /&gt;
** Nur Makler-Admins bekommen später die Möglichekeit Immobilien online zu stellen ('''Online''') und diese auf der Startseite anzuzeiben ('''Hervorheben''')&lt;br /&gt;
&lt;br /&gt;
===die Katalog Einstellungen noch einmal überarbeiten===&lt;br /&gt;
Da jetzt die Feldtypen definiert wurden, kann man im Katalog selbst noch weiter Einstellungen vornehmen:&lt;br /&gt;
* Alias-Feld -&amp;gt; Alias&lt;br /&gt;
* Feld veröffentlichen -&amp;gt; NICHTS '''hier nicht angeben, da die Makler im Frontend sonst ihre Items nicht sehen können!'''&lt;br /&gt;
* Meta-Title-Feld -&amp;gt; Titel&lt;br /&gt;
* Meta-Beschreibungs-Feld -&amp;gt; Umgebungsbeschreibung&lt;br /&gt;
* Zeichenkette des Titels formatieren -&amp;gt; &amp;lt;nowiki&amp;gt;{{immo_titel}} - {{immo_gebiet}} - {{immo_art}}&amp;lt;br /&amp;gt;&lt;br /&gt;
{{immo_bild::w=100&amp;amp;h=80}}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Einstellen von ein paar Items (Produkten)==&lt;br /&gt;
Nun können ein paar Immobilien erstellt werden. Zu beachten ist: diese Immobilien gehören erst einmal '''keinem''' Mitglied. Erst wenn ein Mitglied das Item bearbeitet und speichert ist es ihm Zugeordnet!&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item1.png|Cat new item1]]&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-new-item2.png|Cat new item2]]&lt;br /&gt;
&lt;br /&gt;
==Die nötigen Module==&lt;br /&gt;
&lt;br /&gt;
===Katalog-Filter===&lt;br /&gt;
Damit die Benutzer und die Mitglieder das angezeigt bekommen was sie wollen, sollte man mit einem Filter die Immobilien Einschränkbar machen.&lt;br /&gt;
Damit auch alle die passende Einstellung haben bei der Weiterleitungsseite muss man dieses Modul 3 mal anlegen und jeweils zur passenden Seite mit der Liste weiterleiten (eins anlegen und kopieren erleichtert einem die arbeit enorm *g*)&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Liste (je nachdem für welche Gruppe der Filter gerade erstellt wird)&lt;br /&gt;
* Benützen Sie Filterkonditionen des Listers auf der selben Seite -&amp;gt; aktivieren (dadurch sind nur die Filter aktiv, die auch passende Immobilien beinhalten)&lt;br /&gt;
* Filter pro Abschnitt aktivieren&lt;br /&gt;
** Gebiet -&amp;gt; Auswahlmenü&lt;br /&gt;
** Art -&amp;gt; Auswahlmenü&lt;br /&gt;
* Such-Filter&lt;br /&gt;
** Suchbox aktivieren -&amp;gt; aktivieren&lt;br /&gt;
** Kopfzeile suchen -&amp;gt; Suche (h3)&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** Alle Felder die man durchsuchbar haben möchte ankreuzen (z.B. Titel, Gebiet, Art, Umgebungsbeschreibung)&lt;br /&gt;
* Filter-Layout -&amp;gt; filter_default&lt;br /&gt;
&lt;br /&gt;
===Katalog-Liste===&lt;br /&gt;
Nun muss man mehrere Listenmodule anlegen. Einmal eine Liste für die Besucher. Dort sind alle Immobilien vorhanden, die online sind.&lt;br /&gt;
Für die Makler und Makler-Admins muss man nun für jede Art eine passende Liste erstellen.&lt;br /&gt;
Bei 5 verschiedenen Arten sind das also 5 Listen für Makler, 5 Listen für Makler-Admins.&lt;br /&gt;
Zusammengenommen also 11 Listen. Das ganze kann man sicher auch mittels PHP und MySQL etwas zusammenfassen. Hier geht es jedoch darum, das Prinzip aufzuzeigen und jedem zu ermöglichen so einen Katalog ohne viel Programmierkenntisse anzulegen.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Suchfelder&lt;br /&gt;
*** nach Bedarf anklicken&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung''' Je nach Liste etwas anders:&lt;br /&gt;
** Liste für Besucher der Seite: &amp;lt;nowiki&amp;gt;immo_online=1 and immo_freigeben=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items, die online sind, die freigegeben sind und die nicht Entfernt sind (also als solche Markiert)&lt;br /&gt;
** Liste für Makler &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1' AND (userid={{user::id}} OR userid=0)&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt wo die UserID gleich der eigenen oder keiner ist (alle Items von dem Mitglied und Items die noch keinem zugeordnet sind)&lt;br /&gt;
** Liste für Makler-Admin &amp;lt;nowiki&amp;gt;immo_art='136' and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet -&amp;gt; Zeige alle Items der Art 136 (ID der Taxonomie 'Haus zum kaufen'), und nicht Entfernt sind an. Hier wird nicht die UserID abgefangen! Dadurch können Makler-Admins alle Immobilien sehen.&lt;br /&gt;
** Elemente pro Seite -&amp;gt; 6&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_cataloglist&lt;br /&gt;
&lt;br /&gt;
===Katalog-Leser===&lt;br /&gt;
Hiervon gibt es nur ein Modul. Die Makler und Makler-Admins bekommen das Modul Katalog-Edit.&lt;br /&gt;
Die Ausgabe der verschiedenen Arten und deren besonderheit regel ich über das Teplate mit einer extra if-Abfrage (lasse also nur die Felder anzeigen, die überhaupt einen Inhalt haben).&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_full&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogreader&lt;br /&gt;
&lt;br /&gt;
===Katalog-Featured===&lt;br /&gt;
Hiermit werden die hervorgehobenen Items auf der Startseite dargestellt.&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Abfrage-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
** Tags-Modus -&amp;gt; Alle Treffer (AND) - so werden nur die Immobilien angezeigt, die der Region, der Art '''und''' der Suche entsprechen!&lt;br /&gt;
* '''Bedingung'''&lt;br /&gt;
** &amp;lt;nowiki&amp;gt;immo_online=1 and immo_besonders and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online, besonders und nicht Entfernt sind.&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogfeatured&lt;br /&gt;
&lt;br /&gt;
===Katalog-Related===&lt;br /&gt;
&lt;br /&gt;
Hiermit werden ähnliche Immobilien auf der Detailseite einer Immobilie angezeigt. Übereinstimmen muss in diesem Beispiel nur das Gebiet. Bei vielen Items sollte die Liste hier weiter eingeschränkt werden (Sinnvoll wäre zum Beispiel die Art der Immobilie)&lt;br /&gt;
&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Sichtbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Bild&lt;br /&gt;
** Art&lt;br /&gt;
* Standard-Link überschreiben (normalerweise wird ein Links 'Details' erzeugt. Ich möchte hier aber den Titel und das Bild verlinkt haben)&lt;br /&gt;
** Titel&lt;br /&gt;
** Bild&lt;br /&gt;
* Feld-Filter&lt;br /&gt;
** Betroffene Felder, die übereinstimmen müssen -&amp;gt; Gebiet&lt;br /&gt;
** Anzahl der Tags die zusammengehöhren müssen -&amp;gt; 0 (macht nur sinn bei mehreren. Dann werden nur Items angezeigt, die zum Beispiel 2 Gleiche Felder haben bei der Angabe von 2)&lt;br /&gt;
** '''Bedingung''' -&amp;gt; &amp;lt;nowiki&amp;gt;immo_online=1 and immo_delete!='1'&amp;lt;/nowiki&amp;gt; Das bedeutet, das hier nur Immobilien angezeigt werden, die Online und nicht Entfernt sind.&lt;br /&gt;
** Anzahl der Einträge -&amp;gt; 5&lt;br /&gt;
* Template-Einstellungen&lt;br /&gt;
** Katalog-Layout -&amp;gt; catalog_simple&lt;br /&gt;
** Katalog-Template -&amp;gt; mod_catalogrelated&lt;br /&gt;
&lt;br /&gt;
===Katalog-Edit===&lt;br /&gt;
Hier sind wieder mehrere Module nötig.&lt;br /&gt;
&lt;br /&gt;
Für Makler in jeder Art eins -&amp;gt; 5 &lt;br /&gt;
&lt;br /&gt;
Für Makler-Admins -&amp;gt; 5&lt;br /&gt;
&lt;br /&gt;
(für jede Art, da die sich ja wie oben genannt in den Feldern unterscheiden)&lt;br /&gt;
&lt;br /&gt;
'''Felder die einen Standardwert bekommen dürfen nicht bearbeitet werden können!'''&lt;br /&gt;
&lt;br /&gt;
Außerdem lasse ich das Alias Feld nicht bearbeiten, damit da keine unschönen Aliase generiert werden.&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Benutzer id [userid:useridfield]''' (Nur dadurch wird die ID des Maklers erfasst. Wird aber nicht im Frontend angezeigt)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
** '''Online -&amp;gt; nein'''&lt;br /&gt;
&lt;br /&gt;
'''Einstellungen für Makler-Admins:'''&lt;br /&gt;
* Modul-Konfiguration -&amp;gt; Katalog -&amp;gt; Immobilien (den gerade eben erstellen Katalog auswählen)&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; Immobilien Details&lt;br /&gt;
* Bearbeitbare Felder (in diesem Beispiel):&lt;br /&gt;
** Titel&lt;br /&gt;
** Gebiet&lt;br /&gt;
** Art&lt;br /&gt;
** Bild&lt;br /&gt;
** Bildergalerie&lt;br /&gt;
** Umgebungsbeschreibung&lt;br /&gt;
** Veröffentlichen&lt;br /&gt;
** Immobilie entfernen&lt;br /&gt;
** '''Online'''&lt;br /&gt;
** '''Hervorheben'''&lt;br /&gt;
* Weiterleitungsseite -&amp;gt; auf die jeweilige Liste (Makler oder Makler-Admin)&lt;br /&gt;
* Sicherheitsabfrage deaktivieren (da die Seiten ja nur von Mitgliedern benutzt werden können. Ist bei öffenltich Zugänglichen Catalog-Edit-Modulen nicht zu empfehlen!)&lt;br /&gt;
* Auf Standardwerte beschränken&lt;br /&gt;
** Eingeschränkte Felder -&amp;gt; aktivieren&lt;br /&gt;
*** Art&lt;br /&gt;
*** Online&lt;br /&gt;
** Standardwerte für eingeschränkte Felder&lt;br /&gt;
** Art -&amp;gt; Haus zum kaufen oder Hotelzimmer (kommt auf das Modul an welches man gerade anlegt)&lt;br /&gt;
&lt;br /&gt;
Mit diesen unterschiedlich eingestellten Katalog-Edit Modulen erreichen wir den Workflow: &lt;br /&gt;
&lt;br /&gt;
Makler können eine Immobilie bearbeiten und neu anlegen. Die Immobilie können Makler aber nicht online stellen oder hervorheben. Beim Bearbeiten wird durch den Standardwert Online=nein die Immobilie offline gestellt.&lt;br /&gt;
&lt;br /&gt;
Makler-Admins können Immobilien bearbeiten und neu anlegen. Die Immobilien können von Makler-Admins online gestellt werden und hervorgehoben werden (diese können ja die Felder sehen und bearbieten, die dafür zuständig sind).&lt;br /&gt;
&lt;br /&gt;
[[Datei:cat-fe-wf-modules.png|Cat Module]]&lt;br /&gt;
&lt;br /&gt;
==Die Module in Artikeln den passenden Seiten zuordnen==&lt;br /&gt;
Nun müssen die Module noch auf die jeweils passende Seite gebracht werden:&lt;br /&gt;
&lt;br /&gt;
* Startseite -&amp;gt; Catalog-Featured &lt;br /&gt;
** Immobilien Liste -&amp;gt; Catalog-Filter und Catalog Liste (für Besucher!)&lt;br /&gt;
*** Immobilien Details -&amp;gt; Catalog-Leser&lt;br /&gt;
* '''Geschützer Bereich'''&lt;br /&gt;
** Immobilien Anlegen -&amp;gt; mit Navigation für die Unterseiten (Für Makler und Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
** Immobilien Anlegen Administration -&amp;gt; mit Navigation für Unterseiten (Für Makler-Admins)&lt;br /&gt;
*** Haus zum kaufen Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Haus zum kaufen anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
*** Hotelzimmer Liste -&amp;gt; Catalog-Liste mit Verweis auf Catalog-Edit&lt;br /&gt;
**** Hotelzimmer anlegen / bearbeiten -&amp;gt; Catalog-Edit&lt;br /&gt;
&lt;br /&gt;
Ich kann nur aus eigener Erfahrung sprechen: Spätestens jetzt ist man froh, wenn man eine Eindeutige Benennung der Module vorgenommen hat! Hier muss man mit vielen ähnlichen Modulen arbeiten und da ist es auf dauer sehr mühselig, wenn man nicht auf den 1. Blick erkennen kann was es ist.&lt;br /&gt;
Ich selber benenne die Module daher zum Beispiel so: 'Katalog - Makler - Edit - Haus zum kaufen'&lt;br /&gt;
Dadurch ist die automatische Sortierung im Backend außreichend gut. Man sieht was für ein Modul es ist (Katalog) für welche Gruppe es ist (Makler) was genau es machen soll (Edit) und für welchen Bereich es gedacht und eingestellt ist (Haus zum kaufen).&lt;br /&gt;
&lt;br /&gt;
==Templates==&lt;br /&gt;
Tutorial zum Anpassen der Templates : [[Catalog_Templates_anpassen|Catalog Templates anpassen]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 14:52, 18. Mai 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Mootools_Aufklappmen%C3%BC_MenuMatic</id>
		<title>Mootools Aufklappmenü MenuMatic</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Mootools_Aufklappmen%C3%BC_MenuMatic"/>
				<updated>2010-06-29T20:06:32Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Vorgehen: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=2.8.x|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=Mootools Aufklappmenü MenuMatic in Contao benutzen=&lt;br /&gt;
&lt;br /&gt;
Da es immer viele Probleme mit Menüs gibt und sich viele Bewegende Menüs wünschen habe ich mal MenuMatic ( [http://greengeckodesign.com/menumatic http://greengeckodesign.com/menumatic] ) in Typolight eingebaut. Auf der Seite sind auch 2 Beispiele.&lt;br /&gt;
&lt;br /&gt;
==Voraussetzung:==&lt;br /&gt;
Mootools 1.2 (also TL ab 2.8)&lt;br /&gt;
Grundlegende Erfahrung mit TYPOlight und Seitenstruktur&lt;br /&gt;
gute CSS-Kentnisse um es genau anpassen zu können&lt;br /&gt;
für die Grundfunktion so wie es ist keine JavaScript-Kentnisse&lt;br /&gt;
&lt;br /&gt;
==Dazu ist eigenltich nicht viel nötig.==&lt;br /&gt;
Von der Seite ( [http://greengeckodesign.com/menumatic http://greengeckodesign.com/menumatic] ) ganz unten die Dateien herunterladen.&lt;br /&gt;
Da sind 2 Beispiele drinn:&lt;br /&gt;
* horizontal&lt;br /&gt;
* vertical&lt;br /&gt;
&lt;br /&gt;
==Vorgehen:==&lt;br /&gt;
'''1.''' Die benötigten CSS-Dateien importieren (entweder aus dem Ordner horizontal ode vertical, je nach Bedarf). Das CSS für den IE6 dann auch passend mit conditional Comment versehen.&lt;br /&gt;
Die JS-Datei hochladen (z.B. in den Ordner js). Diese Datei muss lesbar für alle sein.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Ein neues Navigation Template erstellen mit diesem Inhalt (nav_MenuMatic.tpl):&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;&amp;lt;ul &amp;lt;?php if ($this-&amp;gt;level == 'level_1'): ?&amp;gt;id=&amp;quot;nav&amp;quot;&amp;lt;?php endif; ?&amp;gt; class=&amp;quot;vlist &amp;lt;?php echo $this-&amp;gt;level; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach ($this-&amp;gt;items as $item): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if ($item['isActive']): ?&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;active&amp;lt;?php if ($item['class']): ?&amp;gt; &amp;lt;?php echo $item['class']; ?&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $item['href']; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?&amp;gt;&amp;quot;&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['accesskey'] != ''): ?&amp;gt; accesskey=&amp;quot;&amp;lt;?php echo $item['accesskey']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['tabindex']): ?&amp;gt; tabindex=&amp;quot;&amp;lt;?php echo $item['tabindex']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['nofollow']): ?&amp;gt; rel=&amp;quot;nofollow&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['target']; ?&amp;gt;&amp;gt;&amp;lt;em&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $item['href']; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?&amp;gt;&amp;quot;&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['accesskey'] != ''): ?&amp;gt; accesskey=&amp;quot;&amp;lt;?php echo $item['accesskey']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['tabindex']): ?&amp;gt; tabindex=&amp;quot;&amp;lt;?php echo $item['tabindex']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['nofollow']): ?&amp;gt; rel=&amp;quot;nofollow&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['target']; ?&amp;gt;&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
'''Anpassungen (2 Stück):'''&lt;br /&gt;
* Das erste &amp;lt;nowiki&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/nowiki&amp;gt; bekommt die ID 'nav' (darüber kann dann mit JavaScript das Menü angesprochen werden)&lt;br /&gt;
* Hier sind auch die aktiven Navi Punkte verlinkt und nicht mit einem span sondern mit em umschlossen. So werden die Beispiele nicht mehr davon beeinflusst und man kann es trotzdem gut mit CSS ansprechen.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Ein neues Navigationsmodul (genaueres kann hier nachgelesen werden zu dem Modul -&amp;gt; [http://de.contaowiki.org/ModulNavigation http://de.contaowiki.org/ModulNavigation]) :&lt;br /&gt;
* Startlevel 0&lt;br /&gt;
* Stoplevel 0&lt;br /&gt;
* Referenzseite (keine bzw. Startpunkt oder was man möchte)&lt;br /&gt;
* Navigationstemplate: (das von uns gerade erstellte) nav_MenuMatic.tpl&lt;br /&gt;
&lt;br /&gt;
'''4.''' Neues Seitenlayout:&lt;br /&gt;
* Navigationsmodul von gerade da hin packen wo man es haben möchte&lt;br /&gt;
* Eigener JavaScript-Code:&lt;br /&gt;
Code:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;&amp;lt;!-- Load the MenuMatic Class --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;js/MenuMatic_0.68.3.js&amp;quot; type=&amp;quot;text/javascript&amp;quot; charset=&amp;quot;utf-8&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Create a MenuMatic Instance --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; &amp;gt;&lt;br /&gt;
    window.addEvent('domready', function() {&lt;br /&gt;
    var myMenu = new MenuMatic();&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Damit initialisiert man das Menü und kann noch Parameter übergeben. Genaueres ist auf der oben verlinkten Seite zu finden)&lt;br /&gt;
&lt;br /&gt;
Cave: für das Vertikale Menü muss dieser JS-Code ergänzt werden an dieser Stelle:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;var myMenu = new MenuMatic({ orientation:'vertical' });&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CSS-Dateien auswählen:'''&lt;br /&gt;
* style.css (nur Beispiellayout, also nicht benutzen, wenn man ein eigenes hat!)&lt;br /&gt;
* MenuMatic.css (hier ist alles für die Navi, mit Suckerfish als Grundlage. Hier muss man dann selber die gewünschten Anpassungen vornehemn)&lt;br /&gt;
* MenuMatic-ie6.css (erklährt sich glaube ich von selber *g* - muss eventuell nach eigenen Bedürfnissen angepasst werden)&lt;br /&gt;
&lt;br /&gt;
Soviel zu dem kleinen Tutorial.&lt;br /&gt;
Natürlich muss das ganze Individuell angepasst werden. Aber das Beispiel Layout dürfte so nun jeder zum laufen bekommen ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link zum Thread im Forum: [http://www.contao-community.de/showthread.php?8719-Mootools-Aufklappmen%FC-MenuMatic-in-TYPOlight-benutzen&amp;amp;p=60633#post60633 Forum-Diskusionsthread]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:34, 20. Jun. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/Mootools_Aufklappmen%C3%BC_MenuMatic</id>
		<title>Mootools Aufklappmenü MenuMatic</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Mootools_Aufklappmen%C3%BC_MenuMatic"/>
				<updated>2010-06-29T20:06:09Z</updated>
		
		<summary type="html">&lt;p&gt;MacKP: /* Vorgehen: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AppliesTo|TLVersion=2.8.x|Version=ab 2.9}}&lt;br /&gt;
[[Category: Admin_HOWTOS]]&lt;br /&gt;
&lt;br /&gt;
=Mootools Aufklappmenü MenuMatic in Contao benutzen=&lt;br /&gt;
&lt;br /&gt;
Da es immer viele Probleme mit Menüs gibt und sich viele Bewegende Menüs wünschen habe ich mal MenuMatic ( [http://greengeckodesign.com/menumatic http://greengeckodesign.com/menumatic] ) in Typolight eingebaut. Auf der Seite sind auch 2 Beispiele.&lt;br /&gt;
&lt;br /&gt;
==Voraussetzung:==&lt;br /&gt;
Mootools 1.2 (also TL ab 2.8)&lt;br /&gt;
Grundlegende Erfahrung mit TYPOlight und Seitenstruktur&lt;br /&gt;
gute CSS-Kentnisse um es genau anpassen zu können&lt;br /&gt;
für die Grundfunktion so wie es ist keine JavaScript-Kentnisse&lt;br /&gt;
&lt;br /&gt;
==Dazu ist eigenltich nicht viel nötig.==&lt;br /&gt;
Von der Seite ( [http://greengeckodesign.com/menumatic http://greengeckodesign.com/menumatic] ) ganz unten die Dateien herunterladen.&lt;br /&gt;
Da sind 2 Beispiele drinn:&lt;br /&gt;
* horizontal&lt;br /&gt;
* vertical&lt;br /&gt;
&lt;br /&gt;
==Vorgehen:==&lt;br /&gt;
'''1.''' Die benötigten CSS-Dateien importieren (entweder aus dem Ordner horizontal ode vertical, je nach Bedarf). Das CSS für den IE6 dann auch passend mit conditional Comment versehen.&lt;br /&gt;
Die JS-Datei hochladen (z.B. in den Ordner js). Diese Datei muss lesbar für alle sein.&lt;br /&gt;
&lt;br /&gt;
'''2.''' Ein neues Navigation Template erstellen mit diesem Inhalt (nav_MenuMatic.tpl):&lt;br /&gt;
Code:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;&amp;lt;ul &amp;lt;?php if ($this-&amp;gt;level == 'level_1'): ?&amp;gt;id=&amp;quot;nav&amp;quot;&amp;lt;?php endif; ?&amp;gt; class=&amp;quot;vlist &amp;lt;?php echo $this-&amp;gt;level; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach ($this-&amp;gt;items as $item): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if ($item['isActive']): ?&amp;gt;&lt;br /&gt;
    &amp;lt;li class=&amp;quot;active&amp;lt;?php if ($item['class']): ?&amp;gt; &amp;lt;?php echo $item['class']; ?&amp;gt;&amp;lt;?php endif; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $item['href']; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?&amp;gt;&amp;quot;&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['accesskey'] != ''): ?&amp;gt; accesskey=&amp;quot;&amp;lt;?php echo $item['accesskey']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['tabindex']): ?&amp;gt; tabindex=&amp;quot;&amp;lt;?php echo $item['tabindex']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['nofollow']): ?&amp;gt; rel=&amp;quot;nofollow&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['target']; ?&amp;gt;&amp;gt;&amp;lt;em&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;/em&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;?php else: ?&amp;gt;&lt;br /&gt;
    &amp;lt;li&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php echo $item['href']; ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php echo $item['pageTitle'] ? $item['pageTitle'] : $item['title']; ?&amp;gt;&amp;quot;&amp;lt;?php if ($item['class']): ?&amp;gt; class=&amp;quot;&amp;lt;?php echo $item['class']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['accesskey'] != ''): ?&amp;gt; accesskey=&amp;quot;&amp;lt;?php echo $item['accesskey']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['tabindex']): ?&amp;gt; tabindex=&amp;quot;&amp;lt;?php echo $item['tabindex']; ?&amp;gt;&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php if ($item['nofollow']): ?&amp;gt; rel=&amp;quot;nofollow&amp;quot;&amp;lt;?php endif; ?&amp;gt;&amp;lt;?php echo $item['target']; ?&amp;gt;&amp;gt;&amp;lt;?php echo $item['link']; ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;?php echo $item['subitems']; ?&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
'''Anpassungen (2 Stück):'''&lt;br /&gt;
* Das erste &amp;lt;nowiki&amp;gt;&amp;lt;ul&amp;gt;&amp;lt;/nowiki&amp;gt; bekommt die ID 'nav' (darüber kann dann mit JavaScript das Menü angesprochen werden)&lt;br /&gt;
* Hier sind auch die aktiven Navi Punkte verlinkt und nicht mit einem span sondern mit em umschlossen. So werden die Beispiele nicht mehr davon beeinflusst und man kann es trotzdem gut mit CSS ansprechen.&lt;br /&gt;
&lt;br /&gt;
'''3.''' Ein neues Navigationsmodul (genaueres kann hier nachgelesen werden zu dem Modul -&amp;gt; [http://de.contaowiki.org/ModulNavigation http://de.contaowiki.org/ModulNavigation]) :&lt;br /&gt;
* Startlevel 0&lt;br /&gt;
* Stoplevel 0&lt;br /&gt;
* Referenzseite (keine bzw. Startpunkt oder was man möchte)&lt;br /&gt;
* Navigationstemplate: (das von uns gerade erstellte) nav_MenuMatic.tpl&lt;br /&gt;
&lt;br /&gt;
'''4.''' Neues Seitenlayout:&lt;br /&gt;
* Navigationsmodul von gerade da hin packen wo man es haben möchte&lt;br /&gt;
* Eigener JavaScript-Code:&lt;br /&gt;
Code:&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;&amp;lt;!-- Load the MenuMatic Class --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;js/MenuMatic_0.68.3.js&amp;quot; type=&amp;quot;text/javascript&amp;quot; charset=&amp;quot;utf-8&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Create a MenuMatic Instance --&amp;gt;&lt;br /&gt;
    &amp;lt;script type=&amp;quot;text/javascript&amp;quot; &amp;gt;&lt;br /&gt;
    window.addEvent('domready', function() {&lt;br /&gt;
    var myMenu = new MenuMatic();&lt;br /&gt;
    });&lt;br /&gt;
    &amp;lt;/script&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Damit initialisiert man das Menü und kann noch Parameter übergeben. Genaueres ist auf der oben verlinkten Seite zu finden)&lt;br /&gt;
&lt;br /&gt;
Cave: für das Vertikale Menü muss dieser JS-Code ergänzt werden an dieser Stelle:&lt;br /&gt;
&amp;lt;nowiki&amp;gt;var myMenu = new MenuMatic({ orientation:'vertical' });&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''CSS-Dateien auswählen:'''&lt;br /&gt;
* style.css (nur Beispiellayout, also nicht benutzen, wenn man ein eigenes hat!)&lt;br /&gt;
* MenuMatic.css (hier ist alles für die Navi, mit Suckerfish als Grundlage. Hier muss man dann selber die gewünschten Anpassungen vornehemn)&lt;br /&gt;
* MenuMatic-ie6.css (erklährt sich glaube ich von selber *g* - muss eventuell nach eigenen Bedürfnissen angepasst werden)&lt;br /&gt;
&lt;br /&gt;
Soviel zu dem kleinen Tutorial.&lt;br /&gt;
Natürlich muss das ganze Individuell angepasst werden. Aber das Beispiel Layout dürfte so nun jeder zum laufen bekommen ;-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Link zum Thread im Forum: [http://www.contao-community.de/showthread.php?8719-Mootools-Aufklappmen%FC-MenuMatic-in-TYPOlight-benutzen&amp;amp;p=60633#post60633 Forum-Diskusionsthread]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:MacKP|MacKP]] 13:34, 20. Jun. 2010 (UTC)&lt;/div&gt;</summary>
		<author><name>MacKP</name></author>	</entry>

	</feed>