MetaModels Beispielprojekt: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Attribute beschrieben)
(Voraussetzungen: added information about alpha version for Contao3)
 
(95 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
{{stub}}
 
 
[[Category:Admin HOWTOS]]
 
[[Category:Admin HOWTOS]]
 
[[Category:Extensions]]
 
[[Category:Extensions]]
[[Category:MetaModels]]
+
[[Category:MetaModels|B]]
=Beispielprojekt mit MetaModels (aka Catalog 3)=
+
{{msgInfo|Hier entsteht anhand eines Beispielprojektes die Beschreibung der wichtigsten Möglichkeiten der neuen [[MetaModels|MetaModels]] in einem Contao 2.11.6ff.<br/>
+
Die Bedienung und Administration von Contao sollte bekannt sein.<br/>
+
Bezüglich der MetaModels werden keinerlei Vorkenntnisse vorausgesetzt.
+
  
Dieser Beitrag entsteht 'learning by doing'. Er enthält also immer den aktuellen Wissensstand des/der Autoren. Auftretende Fragen werden hier vermerkt und ebenso [https://community.contao.org/de/showthread.php?36679-MetaModels-erste-Versuche-im-Wiki im Community-Forum] gestellt. Sobald eine Lösung gefunden wurde, wird die Frage hier im Wiki durch eine passende Beschreibung ersetzt.}}
+
=MetaModels (aka Catalog 3) lernen an Beispielprojekten=
 +
==Voraussetzungen==
 +
* MetaModels ist der Nachfolger von Catalog. Der Code wurde komplett neu entwickelt. Eine Kompatibilität zu Catalog besteht nicht
 +
* Die Bedienung und Administration von Contao sollte bekannt sein
 +
* <span style="color:red">MetaModels setzt Contao 2.11.x voraus</span>.  
 +
* MetaModels läuft in einer Alpha-Version unter Contao 3.x (Stand Oktober 2013), die auf der Projekt-Webseite zur Verfügung steht
 +
* <span style="color:red">MetaModels benötigt mindestens PHP 5.3</span>
 +
* Bezüglich MetaModels werden keinerlei Vorkenntnisse vorausgesetzt
  
==Die Aufgabenstellung==
+
==Download & Installation==
Wir möchten eine Sammlung traditioneller Folkmusik aufbauen, die im BE durch Redakteure gepflegt werden kann, (die sich nicht mit MetaModels auseinandersetzen müssen). Im FE soll man die Sammlung nach unterschiedlichen Kriterien filtern und durchsuchen können.  
+
* MetaModels kann (noch) nicht über die Erweiterungsverwaltung geladen werden
In der Detail-Ansicht werden alle verfügbaren Informationen zu einem Stück angezeigt.
+
* Unter der URL [http://now.metamodel.me now.metamodel.me] findet sich die Möglichkeit, Installationsarchive in den Formaten '''tgz''', '''tbz''' und '''zip''' mit so genannten '''Nightly Builds''' zu laden.  
 +
* Die '''Nightly Builds''' werden stündlich mit dem aktuellsten Stand von MetaModels zum Download bereitgestellt
 +
* Detaillierte Infos zum Download und zur Installation findet man unter [[MetaModels|MetaModels]].
  
==Vorbereitungen==
+
==Umsetzungsbeispiele==
Wir gehen davon aus, dass Contao 2.11.6 (oder eine neuere 2.11) installiert ist.
+
Wir werden eine Verwaltung unserer Musiksammlung erstellen und uns in mehreren Beispielen schrittweise von einer einfachen zu komplexeren Anwendungen vorarbeiten.
 
+
# [[MetaModels_Beispiel_1|Backend einrichten]] - Eingeben der Sammlung
Aktuell gibt es MetaModels noch nicht im Extension Repository. Man muss sich darum den Code von GitHub laden.
+
# [[MetaModels_Beispiel_2|Frontend einrichten]] - Die Inhalte im Frontend anzeigen (Liste und Detail)
Dies geht am einfachsten auf einem Linux-Rechner mit lokalem Webserver für die Tests oder auf einem Linux-Server mit Shell-Zugang.<br/>
+
# [[MetaModels_Beispiel_3|Weitere Filter einrichten]] – Inhalte auf Published setzen, einfache Select-Filter
Unter Windows kann dasselbe mit cygwin erreicht werden, oder man verwendet einen Git-Client für Windows und kopiert die erhaltenen Quelldateien in die Contao-Installation.
+
# [[MetaModels_Beispiel_4|Weiteres MetaModels einrichten]] - komplexe Select-Filter einsetzen
 
+
# [[MetaModels_Beispiel:_Übersetzter_select|Weiteres Beispiel: Übersetzter select]] - Mehrsprachiges Select-Attribut einrichten
Zunächst legt man sich einen Ordner an, in den die Quellen herunter geladen werden sollen und wechselt dahin.
+
<source lang="bash">
+
cd ~
+
mkdir MetaModels
+
cd MetaModels
+
</source>
+
Dann wird MetaModels einschließlich aller Unterprojekte heruntergeladen:
+
<source lang="bash">
+
for i in `wget -qO- https://api.github.com/orgs/MetaModels/repos | \
+
grep clone_url | \
+
cut -d \" -f4`; do \
+
git clone $i; \
+
done;
+
</source>
+
Die erzeugten Ordnerstrukturen enthalten jeweils (bis auf '''DC_General''') einen Ordner '''src'''. Darin befindet sich der Teil der Quellen, die in die Contao-Installation übernommen werden müssen. In '''DC_General''' befindet sich direkt der Ordner '''system'''.
+
 
+
Die '''system'''-Ordner müssen jeweils in die Contao-Installation kopiert werden ('''contao''' ersetzen durch Pfad zum Contao-Installationsordner):
+
<source lang="bash">
+
for i in `ls -d attr*`; do cp -r $i/src/* contao/; done;
+
cp -r core/src/* contao/
+
cp -r DC_General/* contao/
+
</source>
+
 
+
Jetzt muss noch im Contao-Backend die Datenbank aktualisiert werden: '''Erweiterungsverwaltung | Datenbank aktualisieren'''
+
 
+
==Unser Datenmodell==
+
Jetzt geht es wirklich los!
+
 
+
Im Backend unter '''System''' befindet sich ein neuer Eintrag '''MetaModels''', über den ein neues MetaModel angelegt wird.<br/>
+
Für unsere Aufgabenstellung wählen wir<br/>
+
* Name: '''TuneBook'''<br/>
+
* TabellenName: '''mm_tunebook'''
+
 
+
Da noch nicht klar ist, ob die Seite vielleicht einmal mehrsprachig wird, bereiten wir das MetaModel direkt auf diesen Fall vor:<br/>
+
* Übersetzung '''anhaken'''<br/>
+
* Eine Sprache '''Deutsch''' legen wir dann auch an und machen sie zum Fallback.
+
{{msgInfo | Unter den 'Experteneinstellungen' befindet sich noch eine Option '''Varianten aktivieren''',<br/>
+
deren Bedeutung sich auch mit der angezeigten Erklärung einem Neuling nicht erschließt.<br/>
+
Wir aktivieren sie zunächst nicht.}}
+
Jetzt werden die Attribute definiert, die eines der Musikstücke in unserer Sammlung ausmachen: [[Datei:MetaModels_Tools_Attribute.png]]
+
 
+
'''Titel'''
+
* Attribute Type = Text
+
* Column name = title
+
* Name (deutsch) = Titel
+
* Description (deutsch) = Name des Stücks
+
'''Typ'''
+
* Attribute Type = Text
+
* Column name = type
+
* Name (deutsch) = Typ
+
* Description (deutsch) = Rhythmus / Tanzart
+
'''Herkunftsland'''
+
* Attribute Type = Text
+
* Column name = country
+
* Name (deutsch) = Herkunftsland
+
* Description (deutsch) =
+
'''Region'''
+
* Attribute Type = Text
+
* Column name = region
+
* Name (deutsch) = Region
+
* Description (deutsch) =
+
'''Quelle'''
+
* Attribute Type = Text
+
* Column name = source
+
* Name (deutsch) = Quelle
+
* Description (deutsch) = Notenbuch / Sammlung / Kurs
+
'''Komponist/Urheber'''
+
* Attribute Type = Text
+
* Column name = composer
+
* Name (deutsch) = Titel
+
* Description (deutsch) =
+
'''ABC-Notation'''
+
* Attribute Type = Longtext
+
* Column name = abc
+
* Name (deutsch) = ABC-Notation
+
* Description (deutsch) =
+
'''Zusatz-Informationen'''
+
* Attribute Type = Übersetzter Longtext
+
* Column name = info
+
* Name (deutsch) = Zusatz-Informationen
+
* Description (deutsch) =
+
 
+
Man soll die Veröffentlichung von Einträgen steuern können. Also wird ein weiteres Attribut angelegt:
+
 
+
'''Veröffentlicht'''
+
* Attribute Type = Checkbox
+
* Column name = published
+
* Name (deutsch) = Veröffentlicht
+
* Description (deutsch) =
+
* check publish = aktiviert (vermutlich erzeugt diese Option die gewünschte Funktionalität)
+
 
+
Bis jetzt wurde bei keinem der Attribute die Option '''Unique values''' aktiviert.<br/>
+
Um die Einträge eindeutig identifizieren zu können, wird zusätzlich ein Alias-Attribut erzeugt:
+
 
+
'''Alias'''
+
* Attribute Type = Alias
+
* Column name = alias
+
* Name (deutsch) = Alias
+
* Description (deutsch) =
+
* Unique values = aktiviert
+
* Force alias regenerating = aktiviert
+
* Alias fields = Titel
+
 
+
{{msgInfo | Trotz der möglichen Mehrsprachigkeit wurden die meisten Attribute vom Typ '''Text''' und nicht '''Übersetzter Text''' angelegt.<br/> Nur für die '''Zusatz-Informationen''' wurde ein übersetztes Attribut gewählt, da die Beschreibung eines Stücks ggf. in eine andere Sprache übersetzt wird.
+
 
+
Ist diese Überlegung richtig?}}
+
 
+
==Backend für Redakteure einrichten==
+
 
+
==Anzeige-Templates für Frontend und Backend==
+
 
+
==Filter==
+

Aktuelle Version vom 26. September 2013, 06:05 Uhr


MetaModels (aka Catalog 3) lernen an Beispielprojekten

Voraussetzungen

  • MetaModels ist der Nachfolger von Catalog. Der Code wurde komplett neu entwickelt. Eine Kompatibilität zu Catalog besteht nicht
  • Die Bedienung und Administration von Contao sollte bekannt sein
  • MetaModels setzt Contao 2.11.x voraus.
  • MetaModels läuft in einer Alpha-Version unter Contao 3.x (Stand Oktober 2013), die auf der Projekt-Webseite zur Verfügung steht
  • MetaModels benötigt mindestens PHP 5.3
  • Bezüglich MetaModels werden keinerlei Vorkenntnisse vorausgesetzt

Download & Installation

  • MetaModels kann (noch) nicht über die Erweiterungsverwaltung geladen werden
  • Unter der URL now.metamodel.me findet sich die Möglichkeit, Installationsarchive in den Formaten tgz, tbz und zip mit so genannten Nightly Builds zu laden.
  • Die Nightly Builds werden stündlich mit dem aktuellsten Stand von MetaModels zum Download bereitgestellt
  • Detaillierte Infos zum Download und zur Installation findet man unter MetaModels.

Umsetzungsbeispiele

Wir werden eine Verwaltung unserer Musiksammlung erstellen und uns in mehreren Beispielen schrittweise von einer einfachen zu komplexeren Anwendungen vorarbeiten.

  1. Backend einrichten - Eingeben der Sammlung
  2. Frontend einrichten - Die Inhalte im Frontend anzeigen (Liste und Detail)
  3. Weitere Filter einrichten – Inhalte auf Published setzen, einfache Select-Filter
  4. Weiteres MetaModels einrichten - komplexe Select-Filter einsetzen
  5. Weiteres Beispiel: Übersetzter select - Mehrsprachiges Select-Attribut einrichten
Ansichten
Meine Werkzeuge

Contao Community Documentation

<user> Kann es sein, dass sich SyncCto bei Sync->Client anders verhält als umgegekehrt also Sync->Server ?
<xtra> ja, da laufen die Daten in die andere Richtung *scnr*

Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge