<?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=Zonky</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=Zonky"/>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/Spezial:Beitr%C3%A4ge/Zonky"/>
		<updated>2026-04-30T04:07:18Z</updated>
		<subtitle>Benutzerbeiträge</subtitle>
		<generator>MediaWiki 1.22.6</generator>

	<entry>
		<id>https://de.contaowiki.org/MetaPalettes</id>
		<title>MetaPalettes</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaPalettes"/>
				<updated>2018-04-26T21:04:51Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* MetaPalettes::appendFields(..) &amp;amp; MetaPalettes::prependFields(..) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Mit der Erweiterung MetaPalettes lassen sich die DCA Paletten in einem Array, statt einem String definieren. Dadurch wird es einfacher die Paletten später zu verändern.&lt;br /&gt;
[[Kategorie:Extensions]]&lt;br /&gt;
{{ExtInfo&lt;br /&gt;
| Dev=Contao Community Alliance&lt;br /&gt;
| ExtVersion=2.0.0&lt;br /&gt;
| Version=4.4+ (Version 1.11 ist sowohl mit Contao &amp;gt;= 3.5 und Contao 4.4 kompatibel)&lt;br /&gt;
| ERLink=http://www.contao.org/erweiterungsliste/view/metapalettes.de.html&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
MetaPalettes generiert aus einem Mehrdimensionalen-Array das im DCA festgelegt wird die Haupt- und Unterpaletten.&lt;br /&gt;
&lt;br /&gt;
=Anwendungsbeispiel=&lt;br /&gt;
&lt;br /&gt;
Beispiel für eine MetaPalette aus der Erweiterung [[htaccess]]:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_htaccess&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_htaccess'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'default' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'htaccess_settings' =&amp;gt; array(':hide', 'htaccess_load_settings'),&lt;br /&gt;
      'htaccess_base'     =&amp;gt; array('htaccess_template'),&lt;br /&gt;
      'htaccess_etag'     =&amp;gt; array('htaccess_etag_disable'),&lt;br /&gt;
      'htaccess_mime'     =&amp;gt; array('htaccess_mime_types'),&lt;br /&gt;
      'htaccess_deflate'  =&amp;gt; array('htaccess_deflate_files'),&lt;br /&gt;
      'htaccess_headers'  =&amp;gt; array(),&lt;br /&gt;
      'htaccess_expires'  =&amp;gt; array('htaccess_expires_default', 'htaccess_expires'),&lt;br /&gt;
      'htaccess_custom'   =&amp;gt; array('htaccess_custom'),&lt;br /&gt;
      'htaccess_rewrite'  =&amp;gt; array('htaccess_rewrite_rules', 'htaccess_rewrite_prepend_www', 'htaccess_rewrite_remove_www', 'htaccess_rewrite_gzip', 'htaccess_rewrite_suffix'),&lt;br /&gt;
      'htaccess_h5bp'     =&amp;gt; array('htaccess_h5bp_ie_x_ua_compatible', 'htaccess_h5bp_cross_domain_ajax', 'htaccess_h5bp_concatenation_include', 'htaccess_h5bp_ie_flicker_fix')&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;
Anstelle einer &amp;lt;code&amp;gt;palette&amp;lt;/code&amp;gt; wird ein Feld &amp;lt;code&amp;gt;metapalette&amp;lt;/code&amp;gt; definiert. Die Schlüssel für das Array definieren wie gewohnt die Palette, jedoch werden die einzelnen Abschnitte mit den Feldern nicht als Zeichenkette, sondern als Array definiert. Der Schlüssel aus dem Meta Array beschreibt den Abschnitt, darunter kommt wiederum als Array die Felder.&lt;br /&gt;
&lt;br /&gt;
=Paletten definieren=&lt;br /&gt;
&lt;br /&gt;
Am besten zeigt sich der Zusammenhang an einem kleinen Beispiel:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'default' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&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;
Daraus wird:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'palettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'default' =&amp;gt; '{chapter_one_legend},field_one,field_two;{chapter_two_legend:hide},field_three'&lt;br /&gt;
  )&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Array Key definieren jeweils die Legende für den Abschnitt, das '''_legend''' wird dabei automatisch hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
==:hide und andere Modifikatoren==&lt;br /&gt;
&lt;br /&gt;
Eine Palette kann versteckt angezeigt werden, wie oben chapter_two: &amp;lt;code&amp;gt;{chapter_two_legend:hide}&amp;lt;/code&amp;gt;.&lt;br /&gt;
Dazu muss einfach das Schlüsselwort &amp;lt;code&amp;gt;:hide&amp;lt;/code&amp;gt; in das Felder-Array hinzugefügt werden.&lt;br /&gt;
MetaPalettes betrachtet alle mit ''':''' beginnenden Felder als Modifikatoren, diese werden aus der Feldliste extrahiert.&lt;br /&gt;
Zur Zeit wird aber nur das Schlüsselwort &amp;lt;code&amp;gt;:hide&amp;lt;/code&amp;gt; unterstützt.&lt;br /&gt;
&lt;br /&gt;
=Subpaletten definieren=&lt;br /&gt;
&lt;br /&gt;
Auch Subpaletten lassen sich definieren:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'metasubpalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'field_three' =&amp;gt; array('field_four', 'field_five')&lt;br /&gt;
  )&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Daraus wird:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'palettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '__selector__' =&amp;gt; array('field_three'),&lt;br /&gt;
    ...&lt;br /&gt;
  ),&lt;br /&gt;
&lt;br /&gt;
  'subpalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'field_three' =&amp;gt; 'field_four,field_five'&lt;br /&gt;
  )&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das &amp;lt;code&amp;gt;__selector__&amp;lt;/code&amp;gt; Array wird automatisch gefüllt, es ist also nicht mehr notwendig dieses Array von Hand zu befüllen.&lt;br /&gt;
&lt;br /&gt;
=SubSelectpaletten definieren=&lt;br /&gt;
(seit Version 1.2.0)&lt;br /&gt;
&lt;br /&gt;
Normalerweise verwendet Contao &amp;lt;code&amp;gt;select&amp;lt;/code&amp;gt; Felder, die als Selectoren markiert sind dazu eine Palette auszuwählen. Das ist allerdings nicht immer sinnvoll, weil man dann viele Paletten definieren muss, die oft stark redundant sind. Mit SubSelectpaletten ist es möglich, ähnlich den Subpaletten einer Checkbox ''Untermengen'' von Feldern den einzelnen Select Werten zuzuordnen.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'default' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'example' =&amp;gt; array('subselect_field')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
  'metasubselectpalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'subselect_field' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'value1' =&amp;gt; array('value1_subfield1', 'value1_subfield2'),&lt;br /&gt;
      'value2' =&amp;gt; array('value2_subfield1'),&lt;br /&gt;
      'value3' =&amp;gt; array('value3_subfield1', 'value3_subfield2', 'value3_subfield3')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
  'fields' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'subselect_field' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'label'     =&amp;gt; array('SubSelect Example', 'Switch field and see how the subfields changing'),&lt;br /&gt;
      'inputType' =&amp;gt; 'select',&lt;br /&gt;
      'options'   =&amp;gt; array('value1', 'value2', 'value3'),&lt;br /&gt;
      'eval'      =&amp;gt; array('submitOnChange'=&amp;gt;true)&lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um die Definition einfacher zu gestalten, kann man mit einem '''!''' (Ausrufezeichen) vor dem Wert auch Negativ-Paletten definieren. Diese werden immer dann angezeigt, wenn ein Wert nicht ausgewählt ist.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'metasubselectpalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    'subselect_field' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'value1'  =&amp;gt; array('value1_subfield1', 'value1_subfield2'),&lt;br /&gt;
      '!value2' =&amp;gt; array('value2_subfield1'),&lt;br /&gt;
      'value3'  =&amp;gt; array('value3_subfield1', 'value3_subfield2', 'value3_subfield3')&lt;br /&gt;
    )&lt;br /&gt;
  )&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Das Feld '''value2_subfield1''' wird immer dann angezeigt, wenn '''value1''' oder '''value3''' ausgewählt sind.&lt;br /&gt;
&lt;br /&gt;
=Paletten ergänzen=&lt;br /&gt;
&lt;br /&gt;
Ab Version 1.1 kann man vorhandene Paletten ganz einfach ergänzen. Dazu stehen 3 '''statische''' Methoden zur Verfügung. Ab Version 1.11 ist die Klasse unter dem Namespace &amp;quot;ContaoCommunityAlliance\MetaPalettes\MetaPalettes&amp;quot; zu finden, der auch in Version 2.0 verwendet wird. Die alten Namespaces &amp;quot;MetaPalettes&amp;quot; und &amp;quot;Bit3\MetaPalettes\MetaPalettes&amp;quot; stehen in Version 2 nicht mehr zur Verfügung!&lt;br /&gt;
{{Hinweis|Um möglichst mit anderen Erweiterungen kompatibel zu sein, empfiehlt es sich sowohl Version 2 und 1 zu unterstützen. Mit der Versionsanforderung &amp;quot;^2.0 &amp;amp;#124;&amp;amp;#124; ^1.11&amp;quot; ist dies möglich. Selbstredend sollten dann nur Features verwendet werden, die in beiden Versionen funktionieren.}}&lt;br /&gt;
&lt;br /&gt;
==MetaPalettes::appendTo(..)==&lt;br /&gt;
&lt;br /&gt;
Fügt eine Meta Palette am Ende hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::appendTo('tl_settings', array(&lt;br /&gt;
  'my_custom_settings' =&amp;gt; array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt den Block '''my_custom_settings''' am Ende der '''default''' Palette von '''tl_settings''' hinzu.&lt;br /&gt;
&lt;br /&gt;
Wenn eine andere Palette gewünscht ist, kann diese als 2. Parameter angegeben werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::appendTo('tl_content', 'text', array(&lt;br /&gt;
  'my_custom_settings' =&amp;gt; array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt den Block '''my_custom_settings''' am Ende der '''text''' Palette von '''tl_content''' hinzu.&lt;br /&gt;
&lt;br /&gt;
==MetaPalettes::appendBefore(..) &amp;amp; MetaPalettes::appendAfter(..)==&lt;br /&gt;
&lt;br /&gt;
Fügt eine Meta Palette vor oder nach einem Block ein.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::appendBefore('tl_settings', 'title', array(&lt;br /&gt;
  'my_custom_settings' =&amp;gt; array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt den Block '''my_custom_settings''' vor den Block '''title_legend''' der '''default''' Palette von '''tl_settings''' hinzu.&lt;br /&gt;
&lt;br /&gt;
Wenn eine andere Palette gewünscht ist, kann diese als 3. Parameter angegeben werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::appendBefore('tl_content', 'published', 'text', array(&lt;br /&gt;
  'my_custom_settings' =&amp;gt; array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt den Block '''my_custom_settings''' vor den Block '''published_legend''' der '''text''' Palette von '''tl_content''' hinzu.&lt;br /&gt;
&lt;br /&gt;
Die Methode &amp;lt;code&amp;gt;MetaPalettes::appendAfter(..)&amp;lt;/code&amp;gt; verhält sich äquivalent zu &amp;lt;code&amp;gt;MetaPalettes::appendBefore(..)&amp;lt;/code&amp;gt;, nur dass der Block nicht vor, sondern nach dem anderen Block eingefügt wird.&lt;br /&gt;
{{Hinweis|Sollte der Block vor oder nach dem eingefügt werden soll nicht gefunden werden, wird die Palette am Ende hinzugefügt (wie bei &amp;lt;code&amp;gt;MetaPalettes::appendTo(..)&amp;lt;/code&amp;gt;)}}&lt;br /&gt;
&lt;br /&gt;
==MetaPalettes::appendFields(..) &amp;amp; MetaPalettes::prependFields(..)==&lt;br /&gt;
(seit Version 1.2.0)&lt;br /&gt;
&lt;br /&gt;
Fügt eine Felder am Anfang oder Ende eines Blocks hinzu.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::appendFields(&lt;br /&gt;
    'tl_settings',&lt;br /&gt;
    'title',&lt;br /&gt;
    array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt dem Block '''title_legend''' der '''default''' Palette die Felder '''my_custom_field1''', '''my_custom_field2''' und '''my_custom_field3''' hinzu.&lt;br /&gt;
&lt;br /&gt;
Wenn eine andere Palette gewünscht ist, kann diese als 2. Parameter angegeben werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
\ContaoCommunityAlliance\MetaPalettes\MetaPalettes::prependFields(&lt;br /&gt;
    'tl_content',&lt;br /&gt;
    'text',&lt;br /&gt;
    'title',&lt;br /&gt;
    array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Fügt dem Block '''title_legend''' der '''text''' Palette die Felder '''my_custom_field1''', '''my_custom_field2''' und '''my_custom_field3''' am Anfang hinzu.&lt;br /&gt;
&lt;br /&gt;
=Paletten vererben=&lt;br /&gt;
(seit Version 1.3.0)&lt;br /&gt;
&lt;br /&gt;
Paletten lassen sich mit einfachen regeln vererben, die ererbten Regeln &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_three' =&amp;gt; array('field_four', 'field_five')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
{{Hinweis|Die ''_X_'' Notation mit den Unterstrichen ist '''nicht''' obligatorisch. Sie soll nur zeigen, dass diese Palette niemals direkt verwendet wird sondern nur als Basis für eine andere Palette dient!}}&lt;br /&gt;
&lt;br /&gt;
Daraus wird:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  'palettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_'  =&amp;gt; '{chapter_one_legend},field_one,field_two;{chapter_two_legend:hide},field_three',&lt;br /&gt;
    'default' =&amp;gt; '{chapter_one_legend},field_one,field_two;{chapter_two_legend:hide},field_three;{chapter_three_legend},field_four,field_five'&lt;br /&gt;
  )&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Um eine Palette zu erben wird also die einfache Notation '''''&amp;lt;palette&amp;gt;'' extends ''&amp;lt;base&amp;gt;''''' verwendet.&lt;br /&gt;
&lt;br /&gt;
==fein granulare Vererbung==&lt;br /&gt;
&lt;br /&gt;
===Gruppe überschreiben===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_two' =&amp;gt; array('field_four')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; die Gruppe ''chapter_two'' enthält später das Feld ''field_four''.&lt;br /&gt;
&lt;br /&gt;
===Löschen von Gruppen===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_two' =&amp;gt; array()&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; die Gruppe ''chapter_two'' wird gelöscht (leer gesetzt und damit nicht angezeigt).&lt;br /&gt;
&lt;br /&gt;
===Gruppe positionieren===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_three before chapter_two' =&amp;gt; array('field_four')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; die Gruppe ''chapter_three'' wird vor der Gruppe ''chapter_two'' eingefügt. Mit dem ''after'' Schlüsselwort wird die Gruppe nach einer anderen Gruppe eingefügt.&lt;br /&gt;
&lt;br /&gt;
===Einzelne Felder hinzufügen===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      '+chapter_two' =&amp;gt; array('field_four')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; der Gruppe ''chapter_two'' wird das Feld ''field_four'' am Ende hinzugefügt.&lt;br /&gt;
&lt;br /&gt;
===Einzelne Felder entfernen===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      '-chapter_two' =&amp;gt; array('field_three')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; aus der Gruppe ''chapter_two'' wird das Feld ''field_three'' entfernt.&lt;br /&gt;
&lt;br /&gt;
===Felder an bestimmter Position hinzufügen und entfernen===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      '+chapter_one' =&amp;gt; array('field_four before field_one', '-field_two')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;amp;rarr; fügt der Gruppe ''chapter_two'' das Feld ''field_four'' vor dem Feld ''field_one'' hinzu und entfernt das Feld ''field_two''. Mit ''after'' kann ein Feld auch nach einem anderen hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
Der Operator (+/-) im Palettennamen definiert die Operation für alle Felder ohne eigenem Operator. Die Operatoren können also auch umgekehrt werden.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * DCA tl_example&lt;br /&gt;
 */&lt;br /&gt;
$GLOBALS['TL_DCA']['tl_example'] = array&lt;br /&gt;
(&lt;br /&gt;
...&lt;br /&gt;
  // meta pallettes&lt;br /&gt;
  'metapalettes' =&amp;gt; array&lt;br /&gt;
  (&lt;br /&gt;
    '_base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      'chapter_one' =&amp;gt; array('field_one', 'field_two'),&lt;br /&gt;
      'chapter_two' =&amp;gt; array(':hide', 'field_three')&lt;br /&gt;
    ),&lt;br /&gt;
    'default extends _base_' =&amp;gt; array&lt;br /&gt;
    (&lt;br /&gt;
      '-chapter_one' =&amp;gt; array('+field_four before field_one', 'field_two')&lt;br /&gt;
    )&lt;br /&gt;
  ),&lt;br /&gt;
...&lt;br /&gt;
);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Hat die gleiche Bedeutung wie im vorherigen Beispiel.&lt;br /&gt;
{{Hinweis|Wenn einzelne Felder hinzugefügt oder entfernt werden sollen, dann ist ein Operator (+/-) im Palettenname zwingend erforderlich, weil MetaPalettes sonst annimmt das die Palette überschrieben und nicht verändert werden soll!}}&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Insert-Tags</id>
		<title>MetaModels Insert-Tags</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Insert-Tags"/>
				<updated>2017-01-26T12:17:54Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
= Insert-Tags =&lt;br /&gt;
Der Aufbau der Insert-Tags ist relative simple. Als erste 'mm' um die Insert-Tags von MetaModels zu bekommen. Danach die gewünschte Funktion. Momentan gibt es 4 Funktionen, eine 5 befindet sich noch in der Entwicklung. Anschließen kann es 0 bzw. beliebig viele Parameter geben. Einige davon sind Pflicht andere Optional. &lt;br /&gt;
&lt;br /&gt;
Die folgenden Insert-Tags stehen in MetaModels zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Insert-Tags ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Diese Insert-Tags geben die gesamt Anzahl an gefunden Einträge für eine MetaModels Liste aus. &lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::*}} -&amp;gt; mm::total::mod::[ID]&lt;br /&gt;
{{mm::total::ce::*}} -&amp;gt; mm::total::ce::[ID]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;Parameter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Daten Type&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Optional&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| String&lt;br /&gt;
| Allgemeiner Aufruf für die MM Insert-Tags&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| total &lt;br /&gt;
| String   &lt;br /&gt;
| Funktionsname&lt;br /&gt;
| Nein&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| mod|ce&lt;br /&gt;
| String&lt;br /&gt;
| Ausgabe von einem Module(mod) oder einem Contentelement(ce)&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| */ID&lt;br /&gt;
| Integer&lt;br /&gt;
| ID vom Module|Contentelemen&lt;br /&gt;
| Nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::1}}&lt;br /&gt;
{{mm::total::ce::1}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
22&lt;br /&gt;
0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Itembasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::item::*::*::*}}   -&amp;gt; mm::item::[MM Name oder ID]::[Item ID oder ID,ID,ID]::[ID Rendersetting](::[Output raw|text|html5|..])&lt;br /&gt;
{{mm::detail::*::*::*}} -&amp;gt; mm::detail::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Output raw|text|html5|..]) // Not yet implemented&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributbasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::attribute::*::*::*::*}} -&amp;gt; mm::attribute::[MM Name oder ID]::[Item ID]::[Attribute Name oder ID](::[Output raw|text|html5|..])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weiterleitungen ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::jumpTo::*::*::*::*}} -&amp;gt; mm::jumpTo::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Parameter (Default:url)|label|page|params.attname])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quelle auf Github für MM 2.x==&lt;br /&gt;
https://github.com/MetaModels/core/blob/master/src/MetaModels/FrontendIntegration/InsertTags.php&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel_4</id>
		<title>MetaModels Beispiel 4</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel_4"/>
				<updated>2017-01-26T12:17:32Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
=Aufgabenstellung: Weiteres MetaModel einrichten=&lt;br /&gt;
Wer mit Catalog arbeitet, ist es gewohnt, Selects einzusetzen, um Datensätze zu kategorisieren. In unserem Fall wäre es z.B. sinnvoll, unsere Musikstücke bestimmten Stilrichtungen zuzuordnen. &amp;lt;br&amp;gt;&lt;br /&gt;
Bei Catalog wird hierfür die Erweiterung [https://contao.org/de/extension-list/view/taxonomy.10089.de.html Taxonomy] eingesetzt, um Hierarchien von Taxonomie-Bedingungen (oder besser bekannt als Tags) zu erstellen, die dann über ein Select bei der Datensatz-Erfassung abgerufen werden können. Im Wesentlichen wird über Taxonomy eine separate Tabelle mit den später abzurufenden Kategorien erfasst. &amp;lt;br&amp;gt;&lt;br /&gt;
Mit MetaModels entfällt der Rückgriff auf Taxonomy. Mit MetaModels kann man eigene Tabellen erfassen, die die Einträge der HTML-Selects enthalten.&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;
&lt;br /&gt;
=Neues MetaModel erstellen=&lt;br /&gt;
&lt;br /&gt;
==Leeres MetaModel==&lt;br /&gt;
[[File:mm_neues_metamodel.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Wir beginnen damit, dass wir unter MetaModels ein neues MetaModel anlegen:&lt;br /&gt;
* Klick auf '''Neues MetaModel'''&lt;br /&gt;
* Wir geben dem neuen MetaModel den Namen '''Musicbox - Stilrichtungen''' und den Tabellennamen '''mm_select_style'''&lt;br /&gt;
* Des weiteren aktivieren wir die '''Übersetzung''' setzen als Sprache '''Deutsch''' ein und aktivieren das '''Fallback'''&lt;br /&gt;
* Speichern und schliessen&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:mm_neues_metamodel2.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
* Nun steht uns ein neues, leeres MetaModel (mit null Datensätzen) zur Verfügung, das wir mit den Begriffen der benötigten Stilrichtungen füllen können.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;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;
Wir erfassen zuerst die benötigen Attribute für die Eingabe.&lt;br /&gt;
[[File:mm_neues_metamodel_attribute.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Hierzu geben wir folgende Felder ein:&lt;br /&gt;
* '''Stilrichtung'''&lt;br /&gt;
** Attribute Type= Text&lt;br /&gt;
** Column name= style&lt;br /&gt;
** Name (deutsch)= Stilrichtung&lt;br /&gt;
** Description (deutsch)= Pop, Rock, New Wave, Jazz, etc.&lt;br /&gt;
&lt;br /&gt;
* '''Alias'''&lt;br /&gt;
** Attribute Type= Alias&lt;br /&gt;
** Column name= alias&lt;br /&gt;
** Name (deutsch)= Alias&lt;br /&gt;
** Description (deutsch)= Wird für URL benötigt.&lt;br /&gt;
** Unique values= aktiviert&lt;br /&gt;
** Alias fields= Stilrichtung&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;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;
Es wird eine neue Ausgabevorgabe benötigt.&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_ausgabevorgaben.png|thumb|400px]]&lt;br /&gt;
* Auf '''Neu''' klicken&lt;br /&gt;
* Die neue Ausgabevorgabe mit '''BE Listenansicht''' benennen&lt;br /&gt;
* speichern und schließen&lt;br /&gt;
* über die Attributeinstellungen alle Attribute hinzufügen&lt;br /&gt;
* Sichtbarkeit(Auge) herstellen&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: Eingabemaske==&lt;br /&gt;
[[File:icons_paletteneinstellungen.png|left|32px]]&lt;br /&gt;
Es wird eine neue Eingabemaske benötigt.&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_eingabemaske.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
* Auf '''Neu''' klicken&lt;br /&gt;
* Die neue Eingabemaske mit '''BE Erfassung''' benennen&lt;br /&gt;
* Alle Attribute hinzufügen&lt;br /&gt;
* Speichern und schliessen&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: Filter==&lt;br /&gt;
[[File:icons_filter.png|left|32px]]&lt;br /&gt;
Es wird kein Filter benötigt.&lt;br /&gt;
&lt;br /&gt;
==MM Funktion: Ansichtseinstellungen==&lt;br /&gt;
[[File:icons_ansichtseinstellungen.png|left|32px]]&lt;br /&gt;
Es werden wie gewohnt die Zugriffsberechtigung zugewiesen, damit über die Backend-Navigation auf die Tabelle zugegriffen werden kann.&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_ansichtseinstellungen.png|thumb|400px]]&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;
=Neues MetaModel 'MyMusik - Stilrichtungen' steht zum Abfüllen bereit=&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_navi.png|left|600px]]&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_metamodel_navi2.png|left|600px]]&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;
==BE Liste==&lt;br /&gt;
[[File:mm_neues_metamodel_BE_liste.png|thumb|400px]]&lt;br /&gt;
* Über '''Neuer Datensatz''' wird die Liste befüllt&lt;br /&gt;
* Für unserem Fall werden nun die späteren Kategorien erfasst: Pop/Rock, Italo-Rock, New Wave, Fat Beat, Cantautore, Soul/Blues und Jazz&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_neues_metamodel_BE_formular.png|thumb|400px]]&lt;br /&gt;
* Das BE Formular sieht ziemlich simpel aus&lt;br /&gt;
* Ein separates Feld &amp;quot;ID&amp;quot; braucht nicht erfasst zu werden, denn dieses wird im Hintergrund automatisch generiert&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;
=Auswahlfeld bei 'Musicbox' hinzufügen=&lt;br /&gt;
Wir klicken unser altes MetaModel '''Musicbox''' an und wählen dort die MM-Funktion '''Attribute''' an.&lt;br /&gt;
==Neues Attribut 'Stilrichtung'==&lt;br /&gt;
[[File:mm_attribut_erfassen_style.png|thumb|400px]]&lt;br /&gt;
* Das neue Attribut ist vom Typ '''Auswahl'''&lt;br /&gt;
* Column name: style&lt;br /&gt;
* Name: Stilrichtung&lt;br /&gt;
* Description:... wie es euch gefällt&lt;br /&gt;
&lt;br /&gt;
Nun kommt der eigentlich wichtige Teil: Man stellt eine Verbindung zum neu geschaffenen MetaModel her&lt;br /&gt;
&lt;br /&gt;
* '''Source Table''': Hier erscheinen alle in der Contao-Installation verfügbaren Tabellen. Ausgewählt wird die neue Tabelle '''mm_select_style'''&lt;br /&gt;
* '''Value column''': Den Namen der Spalte '''style''' auswählen&lt;br /&gt;
* '''Id column''': '''id''' auswählen. Standardmässig führt jede Contao-Tabelle eine ID mit&lt;br /&gt;
* '''Alias column''': '''alias''' auswählen&lt;br /&gt;
* ''' Auswahl-Sortierung''':  Sortierkriterium auswählen&lt;br /&gt;
&lt;br /&gt;
Ergänzung:&lt;br /&gt;
&lt;br /&gt;
* In '''BE Listenansicht''' des ersten MetaModel Musicbox '''sollte''' das neue Attribut Stilrichtung mit aufgenommen werden damit es in der BE Listenansicht überhaupt angezeigt wird.&lt;br /&gt;
&lt;br /&gt;
* In der BE Eingabemaske '''BE Erfassung''' des ersten MetaModel Musicbox '''muss''' das neue Attribut Stilrichtung mit aufgenommen werden damit eine Bearbeitung überhgaupt möglich ist.&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;
&lt;br /&gt;
[[File:mm_neues_atribut_musicbox.png|thumb|400px]]&lt;br /&gt;
Ab sofort steht nun in der BE Erfassung von '''MyMusic''' ein neues Feld '''Stilrichtung''' mit einem Select zur Verfügung. Das Select enthält nun alle Werte, die unter '''MyMusic - Stilrichtungen''' erfasst wurden.&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;
=Zusätzlichen Select-Filter im Frontend definieren=&lt;br /&gt;
&lt;br /&gt;
==Filter bei MyMusic anpassen==&lt;br /&gt;
[[File:mm_neues_attribut_filter.png|thumb|400px]]&lt;br /&gt;
* Der bereits exisitierende Name des Filters '''FE Filter Published''' wird kurz zu &amp;quot;FE Filter Published/Selects&amp;quot; angepasst&lt;br /&gt;
* Der Filter '''FE Filter Published''' wird um weitere Einstellungen ergänzt, nämlich...&lt;br /&gt;
** eine Einzelauswahl für das Attribut (Stilrichtung)&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_neues_attribut_filter2.png|thumb|400px]]&lt;br /&gt;
* Nebenan die Anpassung der Einstellung '''Einzelauswahl''' für das Attribut '''Stilrichtung'''&lt;br /&gt;
* Standardmässig wird im Hintergrund einfach der '''URL-Parameter''' des Feldes (im obigen Beispiel 'country' und 'style') mitgegeben. Dieser lässt sich hier umdefinieren.&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;
==Frontend-Modul aktualisieren==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_neues_attribut_FE-Modul.png|thumb|400px]]&lt;br /&gt;
Das bereits existierende FE-Modul '''MM - MyMusik Filter''' muss noch angepasst werden:&lt;br /&gt;
* Anzuwendende Filtereinstellungen: Hier hat sich der Name des Filters bereits selbst aktualisiert&lt;br /&gt;
* Filterparameter(Attribute): den neu hinzugekommenen Parameter '''Stilrichtung''' anklicken&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;
=Frontend Ansicht=&lt;br /&gt;
Im Frontend wird ein weiteres Select angezeigt, aus dem zusätzlich auch die '''Stilrichtungen''' angewählt werden können. &lt;br /&gt;
Die darunter liegende Liste wird entsprechend den oben ausgewählten Kriterien eingegrenzt.&lt;br /&gt;
&lt;br /&gt;
[[Datei:mm_frontend_beispiel_2_selects.jpg|link=|700px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[MetaModels_Beispiel_3|Zurück zum Beispiel 3]] |&lt;br /&gt;
[[MetaModels_Beispielprojekt|Zurück zur Beispiel-Übersicht]]&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel_3</id>
		<title>MetaModels Beispiel 3</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel_3"/>
				<updated>2017-01-26T12:17:16Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
&lt;br /&gt;
=Aufgabenstellung: Weitere Filter einrichten=&lt;br /&gt;
Wir bauen einen Mechanismus ein, mit dem wir entscheiden können, welcher der im MetaModel '''Musikbox''' erfassten Datensätze im Frontend erscheinen soll und welcher nicht. Mit dem speziellen Attribut &amp;quot;Published State&amp;quot; lässt sich so was einrichten und über einen Filter im Frontend steuern.&lt;br /&gt;
Darüber hinaus möchten wir die Listenansicht im Frontend etwas interaktiver gestalten, indem wir einen Filter als HTML-Select im Frontend zur Verfügung stellen, der die Liste z.B. nach Länder ausfiltert.&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;
&lt;br /&gt;
=Published Filter im Backend einbauen=&lt;br /&gt;
&lt;br /&gt;
==Start==&lt;br /&gt;
[[File:mm_backend_anpassen0.png|thumb|400px]]&lt;br /&gt;
Die Übersichtsliste in unserer Musiksammlung '''MyMusic''' entspricht bisher in etwa dem nebenstehenden Screenshot.&lt;br /&gt;
&lt;br /&gt;
Hier möchten wir das Icon &amp;quot;Auge&amp;quot; (=&amp;gt; Eintrag veröffentlichen) einfügen, dass wir von anderen Contao-Backend Funktionen kennen.&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: Attribute anpassen==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_attribute.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Hier erfassen wir das neue Attribut (s. auch [[MetaModels_Backend:_Attribute|Doku zum Dialog]])&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_anpassen1.png|thumb|400px]]&lt;br /&gt;
* Wähle '''Neues Attribut'''&lt;br /&gt;
* Wähle als ''Attribut-Typ'' '''Checkbox''' aus gib als Spaltenname z.B. '''published''' ein&lt;br /&gt;
* Wichtig: '''Veröffentlichen''' muss angeklickt sein&lt;br /&gt;
* In der Attributsübersicht erscheint jetzt das neu angelegte Feld '''Veröffentlicht'''&lt;br /&gt;
&lt;br /&gt;
Nun kann man in den entsprechenden anderen MM-Backend-Funktionen, die weiteren Anpassung vornehmen.&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: Ausgabevorgaben anpassen==&lt;br /&gt;
{{msgError|Bitte korrigieren (Text, Bild und Icon ändern). Hier muss nur das Attribut zur BE-Erfassung hinzugefügt werden.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Andreas|Andreas Burg]] 16:49, 25. Apr. 2014 (CEST)}}&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|32px]]&lt;br /&gt;
Wir passen die Listendarstellung für das Backend an (s. [[MetaModels_Backend:_Ausgabevorgaben|Doku zum Dialog]])&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_anpassen2.png|thumb|400px]]&lt;br /&gt;
* Wir wählen die Attributseinstellungen von '''BE Listenansicht'''&lt;br /&gt;
* Wähle '''Alle hinzufügen''' aus&lt;br /&gt;
* Es gibt einen automatischen Check welche Attribute bereits in die Rendersettings geladen wurden und welche nicht. Das neue Attribut &amp;quot;Veröffendlicht&amp;quot; wird hinzugefügt&lt;br /&gt;
* Es wird am Ende der Attributsliste hinzugefügt&lt;br /&gt;
&lt;br /&gt;
Damit sind die eigentlichen Anpassungen für das Backend schon abgeschlossen.&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: Paletteneinstellung anpassen==&lt;br /&gt;
[[File:icons_paletteneinstellungen.png|left|32px]]&lt;br /&gt;
Wir passen die Paletteneinstellung für das Backend an (s. [[MetaModels_Backend:_Paletteneinstellungen|Doku zum Dialog]])&lt;br /&gt;
&lt;br /&gt;
Damit das gerade hinzugefügte Attribut auch im Backend wirksam wird, muss noch die Paletteneinstellung angepasst werden.&lt;br /&gt;
* Wir wählen für die Palette '''BE Erfassung''' das Icon ''Die Einstellungen der Palette ID xx bearbeiten''&lt;br /&gt;
* Dann ''Alle hinzufügen'' und zweimal bestätigen&lt;br /&gt;
&lt;br /&gt;
==Backendliste &amp;quot;MyMusik&amp;quot; nochmals prüfen==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_anpassen3.png|thumb|400px]]&lt;br /&gt;
Wenn wir jetzt unsere Übersichtsliste in unserer Musiksammlung &amp;quot;MyMusic&amp;quot; nochmals ansehen, entdecken wir das Icon &amp;quot;Auge&amp;quot;.&lt;br /&gt;
&amp;lt;br&amp;gt;Nun können wir im Backend steuern, ob ein Musikstück im Frontend angezeigt werden soll oder nicht.&lt;br /&gt;
&lt;br /&gt;
Damit das geschieht, müssen wir noch einen Filter erstellen, der den jeweiligen Frontend-Ansichten sagt, dass nur markierte Musikstücke veröffentlicht werden sollen.&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;
=Published Filter im Frontend einbauen=&lt;br /&gt;
Schaut man sich jetzt wiederholt die Frontend-Liste der Musicbox an während man im BE mit dem ''veröffentlicht-Auge'' herumspielt, so stellt man keine Veränderung fest.&amp;lt;br&amp;gt;Wir müssen daher in diversen MM-Backend-Funktionen Veränderungen vornehmen&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: [[MetaModels_Backend:_Filter|Filter definieren]]==&lt;br /&gt;
Wir erstellen einen neuen Filter: &amp;quot;FE Filter published&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_filter_anpassen1.png|thumb|400px]]&lt;br /&gt;
* Wir wählen &amp;quot;neu&amp;quot;, bestätigen mit weiter&lt;br /&gt;
* Wir wählen den Typ &amp;quot;Published state&amp;quot;, wählen hierzu das vorhin erfasste Attribut &amp;quot; Veröffentlicht [checkbox]&amp;quot; und aktivieren diesen neuen Filter &amp;quot;FE Filter published&lt;br /&gt;
* ... und kehren zurück zur Filter-Übersichtsliste&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;
==Frontend-Modul anpassen==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_filter_anpassen2.png|thumb|400px]]&lt;br /&gt;
* Wir gehen über die Themes zu unseren Frontend-Modulen&lt;br /&gt;
* Wir wählen hier das Modul, das für unsere Frontend-Ansicht zuständig ist. In unserem Fall das FE-Modul &amp;quot;MM - MyMusic Liste&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Dort nimmt man folgende Änderung vor:&lt;br /&gt;
&lt;br /&gt;
* Bei &amp;quot;Anzuwendende Filtereinstellungen&amp;quot; wählen wir den neu erstellen Filter &amp;quot;FE Filter Published&amp;quot; aus&lt;br /&gt;
&lt;br /&gt;
Ab sofort werden im Frontend nur noch die Datensätze angezeigt, die wir in unserer Backend-Liste &amp;quot;MyMusic&amp;quot; mit dem Icon &amp;quot;Auge&amp;quot; markiert haben.&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;
=Select Filter im Frontend einbauen=&lt;br /&gt;
Hier müssen wir in diversen MM-Backend-Funktionen diverse Veränderungen vornehmen.&lt;br /&gt;
{{Hinweis|Damit der Filter funktioniert, müssen jQuery oder MooTools im Seitenlayout aktiviert sein.}}&lt;br /&gt;
&lt;br /&gt;
==MM-Funktion: Filter definieren==&lt;br /&gt;
Wir nehmen den neuen Filter, ergänzen diesen und geben ihm einen neuen Namen &amp;quot;FE Filter published/Country&amp;quot;. Dieser angepasste Filter muss zwei Bedingungen erfüllen:&lt;br /&gt;
* Er soll wie bisher nur die publizierten Musikstücke anzeigen&lt;br /&gt;
* Er soll nur die Länder anzeigen, die wir über ein Select anwählen, das über der FE Liste angezeigt wird&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_filter_anpassen3.png|thumb|400px]]&lt;br /&gt;
* Wir wählen die Filtereinstellungen des &amp;quot;Filters FE Filter published&amp;quot;&lt;br /&gt;
* Wir wählen &amp;quot;neu&amp;quot; und setzen die neue Einstellung unterhalb der Einstellung &amp;quot;Published State&amp;quot; ein&lt;br /&gt;
* Wir nehmen den Typ &amp;quot;Einzelauswahl&amp;quot;, weisen das Attribut &amp;quot;Land [text]&amp;quot; zu und aktivieren diesen&lt;br /&gt;
* Optional wählen wir noch die Option &amp;quot;Leerer Wert&amp;quot; an. Dies bewirkt, dass im späteren Select überhalb unserer Länderauswahl ein leerer Eintrag generiert wird&lt;br /&gt;
* Wir &amp;quot;Speichern und schliessen&amp;quot; den Dialog&lt;br /&gt;
&lt;br /&gt;
Nun erscheint uns neu der Filter &amp;quot;FE Filter published&amp;quot; als eine Kombination von 2 Filtereinstellungen. Man kann sich nun leicht vorstellen, wie komplex man sich diesen Filter bauen kann, wenn man will.&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;
==Neues Frontend-Modul erstellen==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_filter_anpassen4.png|thumb|400px]]&lt;br /&gt;
* Wir gehen über die Themes zu unseren Frontend-Modulen&lt;br /&gt;
* Wir erstellen hier ein neues Frontend-Modul&lt;br /&gt;
* Wir wählen hierzu den Modultyp &amp;quot;MetaModels Filter&amp;quot; und geben ihm den Namen &amp;quot;MM - MyMusik Filter&amp;quot;&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;
==Bestehendes Frontend-Modul anpassen==&lt;br /&gt;
[[File:mm_backend_filter_anpassen5.png|thumb|400px]]&lt;br /&gt;
* Wir gehen über die Themes zu unseren Frontend-Modulen&lt;br /&gt;
* Wir nehmen das &amp;amp;nbsp;Frontend-Modul &amp;quot;MM - MyMusik Liste&amp;quot;&lt;br /&gt;
* Wir sortieren nach &amp;quot;Land&amp;quot; und &amp;quot;Aufsteigend&amp;quot;&lt;br /&gt;
* Neu ist nun, dass wir hier unter &amp;quot;anzuwendende Filtereinstellungen&amp;quot; den überarbeiteten Filter &amp;quot;FE Filter published&amp;quot; nehmen&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;
==Bestehenden Artikel anpassen==&lt;br /&gt;
[[File:mm_backend_filter_anpassen6.png|thumb|400px]]&lt;br /&gt;
* Wir gehen nun zu unserem Artikel, wo wir einst unser Frontend-Modul &amp;quot;MM - MyMusic Liste&amp;quot; verbaut haben&lt;br /&gt;
* Darüber erstellen wir neu ein weiteres Inhaltselement, ein weiteres Frontend-Modul. Diesmal das neu erstellte FE-Modul &amp;quot;MM - MyMusic Filter&amp;quot;&lt;br /&gt;
* to be continued&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;
=Frontend Ansicht=&lt;br /&gt;
Die FE-Liste erscheint nun neu mit einem HTML-Select. Über die Auswahl lässt sich nun die darunterliegende Liste länderspezifisch verkürzen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:mm_frontend_beispiel_filter.png|link=|900px]]&lt;br /&gt;
&lt;br /&gt;
[[MetaModels_Beispiel_2|Zurück zur Beispiel 2]] | [[MetaModels_Beispiel_4|Weiter Beispiel 4: Weiter MetaModels hinzufügen]]&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel_2</id>
		<title>MetaModels Beispiel 2</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel_2"/>
				<updated>2017-01-26T12:16:50Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
=Aufgabenstellung: Frontend einrichten=&lt;br /&gt;
Wir haben im Backend bereits ein paar Daten (Musikstücke) erfasst und möchten diese nun im Frontend anzeigen lassen. Hierfür benötigen wir eine Übersichtseite (Liste) und eine Detailsansicht. Plus noch eine minimale Navigation, um zwischen Liste und Detailansicht hin- und herklicken zu können.&lt;br /&gt;
Hierbei werden wir auch die Filtertechnik von MetaModels einsetzen.&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;
&lt;br /&gt;
=Seiterstruktur anpassen=&lt;br /&gt;
== In der Seitenstruktur zwei leere Seiten einrichten==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_seitenstruktur_einrichten.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Zuerst richten wir in der Seitenstruktur zwei neue (leere) Seiten ein.&lt;br /&gt;
&lt;br /&gt;
* '''Musicbox''' (diese Seite wird die Listenansicht aufnehmen)&lt;br /&gt;
* '''Music''' (diese Seite wird für die Darstellung der Detailansicht verantwortlich sein)&lt;br /&gt;
&lt;br /&gt;
Sowohl MetaModels als auch die später benötigten Frontend-Module werden auf diese Seiten zugreifen müssen, deswegen richten wir diese vorab ein, auch wenn noch kein Inhalt definiert ist.&lt;br /&gt;
&lt;br /&gt;
==Einfachen Filter erstellen==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_filter.png|left|32px]]&lt;br /&gt;
&lt;br /&gt;
Wir steigen nun wieder bei MetaModels bei '''Musicbox''' ein und gehen zur [[MetaModels_Backend:_Filter|MM-Backend Funktion: Filter]]&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_filter_einrichten.png|thumb|400px]]&lt;br /&gt;
Hier müssen wir thematisch etwas vorausgreifen, und ein Instrument bereitstellen, das bei der Einrichtung der Frontend-Ansichten in MetaModels benötigt wird: '''Wir brauchen einen Filter'''.&lt;br /&gt;
Bei MetaModels haben Filter eine breitere Bedeutung als dies umgangssprachlich der Fall ist. Filter steuern jede Art von Ansichtsdarstellung, sowohl im Backend als auch im Frontend.&amp;amp;nbsp;Aus der Sicht von MetaModels gibt es nicht eine Listen- und eine separate Archivansicht, wie man das z.B. von News oder Catalog her kennt. Für MetaModels ist jede Ansicht eine Listenansicht. Es ist der Filter, der bestimmt ob n Datensätze (aka Liste) oder nur 1 Datensatz (aka Detailansicht) angezeigt wird. Mit anderen Worten: Der Filter und nicht das Frontend-Modul macht den Unterschied.&lt;br /&gt;
&lt;br /&gt;
* Die Filterübersicht ist noch leer (Keine Einträge gefunden)&lt;br /&gt;
* Auf '''Neu''' klicken&lt;br /&gt;
* Den Namen eingeben, z.B. &amp;quot;FE Link Detail&amp;quot; (FE steht für Frontend) und speichern&lt;br /&gt;
* Die Filterübersicht zeigt nun diesen Eintrag. Wähle das rechte Icon ''Filterattribute für Filtereinstellung definieren''.&lt;br /&gt;
* Auf '''Neu''' klicken und das Icon (mit Pfeil) für '''einsetzen''' wählen&lt;br /&gt;
* Nun kann man den Typ '''Einfache Abfrage''' auswählen&lt;br /&gt;
* Einen Haken bei dem Kästchen '''Aktiviert''' setzen&lt;br /&gt;
* Das '''Attribut''' Alias auswählen und den URL-Parameter '''auto_item''' eingeben&lt;br /&gt;
* Alle weiteren Optionen bleiben leer oder nicht angeklickt. Als '''Template''' den Standard '''mm_filteritem_default''' auswählen&lt;br /&gt;
* Speichern und Schliessen&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;
===URL-Parameter auto_item===&lt;br /&gt;
[[File:mm_backend_filter_einrichten2.png|thumb|400px]]&lt;br /&gt;
Der URL-Parameter '''auto_item''' ist in Kombination mit dem Attribut '''Alias''' dann interessant, wenn man in der URL das '/alias' raushaben möchte.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
aus...&lt;br /&gt;
meineDomain.com/album/alias/born-to-die.html&lt;br /&gt;
wird...&lt;br /&gt;
meineDomain.com/album/born-to-die.html&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn der URL-Parameter '''auto_item''' verwendet werden soll, dann muss in den System-Einstellungen im BE im Abschnitt ''Frontend-Einstellungen'' die Option '''Den auto_item-Parameter verwenden''' angehakt sein, sonst erfolgt keine Ausgabe des Details ( =&amp;gt;There are no items matching your search.)&lt;br /&gt;
&lt;br /&gt;
'''Fazit'''&amp;lt;br&amp;gt;&lt;br /&gt;
Der Filter &amp;quot;FE Link Detail&amp;quot; besteht nun aus einer einzigen Definition. Wir werden in einem späteren Beispiel sehen, dass ein Filter auch aus mehreren Definitionen bestehen kann. Das ist eine weitere Neuerung in MetaModels, nämlich, dass man sich im Wesentlichen seine eigenen Filter zusammenbauen kann.&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;
==Listenansicht erstellen==&lt;br /&gt;
&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|32px]]&lt;br /&gt;
Wähle die MM-Backend-Funktion [[MetaModels_Backend:_Ausgabevorgaben|&amp;quot;Ausgabevorgaben&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_FE_Listenansicht_einrichten.png|thumb|400px]]&lt;br /&gt;
* Die Übersichtsseite zeigt dir bereits einen Eintrag &amp;quot;BE Listenansicht&amp;quot; an. Auf '''Neu''' klicken.&lt;br /&gt;
* Den Namen '''FE Listenansicht''' eingeben&lt;br /&gt;
* Als Template '''metamodel_prerendered (global scope)&amp;quot; wählen&lt;br /&gt;
* Als '''Zielseite''' die vorhin definierte Seite &amp;quot;Music&amp;quot; angeben. Klicke hierzu auf das Icon &amp;quot;Globus&amp;quot; und wähle die Seite aus dem Pulldown-Menu aus.{ {link_url::xx} } wird dann automatisch eingesetzt.&lt;br /&gt;
* Unter '''Filtereinstellungen''' wählen wir den vorhin definierten Filter &amp;quot;FE Link Detail&amp;quot;.&amp;lt;br&amp;gt;(''sollte der Filter zunächst nicht angezeigt werden, dann hilft =&amp;gt;speichern weiter'')&lt;br /&gt;
* Speichern und schliessen&lt;br /&gt;
* Nun erscheinen zwei Einträge in der Liste der Ausgabevorgaben&lt;br /&gt;
&lt;br /&gt;
Mit diesen Einstellungen legt man grob fest, welches Aussehen (Template) die Seite haben soll, wohin die Reise gehen wird (Zielseite) und was bei dieser Zielseite angezeigt werden soll (was durch den Filter bestimmt wird).&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Hinweis'''&amp;lt;br&amp;gt;&lt;br /&gt;
Wenn man hier kein Filter angibt, wird später im Frontend kein '''Details'''-Link erscheinen.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Infos zum Details-Link siehe [[MetaModels_Beispiel_2#Detail-Link_anpassen|unten]]&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;
==Attribute zur Listenansicht hinzufügen==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_FE_Listenansicht_einrichten2.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
* Klick auf das Icon rechts '''Attribute hinzufügen'''&lt;br /&gt;
* Wähle '''Alle hinzufügen''' (geht schneller und einfacher als alle über &amp;quot;Neu&amp;quot; hinzufügen)&lt;br /&gt;
* Bestätige die folgenden Screens&lt;br /&gt;
* Lege fest, welche Attribute in der Listenansicht angezeigt werden sollen (Icon &amp;quot;Auge&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Man kann auch die Einstellung der Attribute anschauen, wie im letzten Screen angezeigt. Standardmäßig wird jedem Attribut zusätzlich ein Template mitgegeben. In unserem Beispiel analog dem Typ das Template &amp;quot;mm_attr_text (global scope)&amp;quot;.&lt;br /&gt;
Man erkennt hier schon im Ansatz, dass in MetaModels praktisch jedes Detail über ein Template gesteuert wird. Was für eine mögliche Individualisierung letztlich heißt, dass man in der freien Gestaltung potentiell unendliche viele Möglichkeiten zur Verfügung gestellt bekommt.&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;
==Detailansicht erstellen==&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|32px]]&lt;br /&gt;
Wähle die MM-Backend-Funktion [[MetaModels_Backend:_Ausgabevorgaben|&amp;quot;Ausgabevorgaben&amp;quot;]] (aka Rendereinstellungen).&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_FE_Detailansicht_einrichten.png|thumb|400px]]&lt;br /&gt;
* Die Übersichtsseite zeigt dir die Einträge &amp;quot;BE Listenansicht&amp;quot; und &amp;quot;FE Listenansicht&amp;quot; an.&lt;br /&gt;
* Wir klicken auf &amp;quot;neu&amp;quot;&lt;br /&gt;
* Gib den Namen &amp;quot;FE Detailansicht&amp;quot; an&lt;br /&gt;
* Als Template wähen wir &amp;quot;metamodel_prerendered (global scope) an.&lt;br /&gt;
* In diesem Fall brauchen wir weder eine Zielseite noch ein Filtersettting anzugeben, denn bis hierher und nicht weiter wollen wir gelangen&lt;br /&gt;
* Optional kann auch eine Weiterleitungsseite definiert und ein Filter angegeben werden, wenn man einen Link &amp;quot;Zurück&amp;quot; generieren will&lt;br /&gt;
* Speichern und schliessen&lt;br /&gt;
&lt;br /&gt;
'''Tipp'''&amp;lt;br&amp;gt;&lt;br /&gt;
Weitere Infos wie man einen Zurück-Link erstellt, siehe [[MetaModels_Beispiel_2#Detail-Link_anpassen|unten]]&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_backend_FE_Detailansicht_einrichten_liste.png|thumb|400px]]&lt;br /&gt;
Es erscheinen nun drei Einträge in der Liste der Ausgabevorgaben.&lt;br /&gt;
* BE Listenansicht&lt;br /&gt;
* FE Detailansicht&lt;br /&gt;
* FE Listenansicht&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;
==Attribute zur Detailansicht hinzufügen==&lt;br /&gt;
&lt;br /&gt;
[[File:mm_backend_FE_Detailansicht_einrichten2.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Das Vorgehen ist analog zum Punkt 4 zu verstehen. Einzig, dass wir hier am Ende alle Attribute anzeigen lassen (inkl. Bild und Beschreibung).&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
{{Anmerkung|&lt;br /&gt;
Das Drag &amp;amp; Drop eines Attributes auf den 1. Platz funktioniert momentan nicht. Ein Ticket dazu ist in Bearbeitung. https://github.com/MetaModels/core/issues/259&lt;br /&gt;
Man kann das Attribut auf den 2. Platz schieben und dann das von dem 1. Platz runter auf den 2.&lt;br /&gt;
&lt;br /&gt;
--[[Benutzer:Andreas|Andreas Burg]] ([[Benutzer Diskussion:Andreas|Diskussion]]) 01:40, 5. Jun. 2014 (CEST)}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Das Problem ist mittlerweile behoben. Man kann Attribute per Drag and Drop an die erste Stelle bewegen.&lt;br /&gt;
&lt;br /&gt;
==Frontend-Module erstellen==&lt;br /&gt;
{{Hinweis|Einige Einstellmöglichkeiten in den nachstehend beschriebenen Modulen sind erst nach einer Zwischenspeicherung des Moduls erreichbar.}}&lt;br /&gt;
[[File:mm_backend_FE-Module_Liste.png|thumb|400px]]&lt;br /&gt;
&lt;br /&gt;
Frontend-Modul für Listenansicht einrichten:&lt;br /&gt;
&lt;br /&gt;
* Wähle den ''Modultyp'' &amp;quot;MetaModels-Liste&amp;quot; aus&lt;br /&gt;
* Wähle das entsprechend ''MetaModel'' aus, in unserem Fall &amp;quot;Musicbox&amp;quot;&lt;br /&gt;
* Bei ''Sortieren nach'' und ''Sortierreihenfolge'' das gewünschte Attribut festlegen bzw. ob auf- oder absteigend sortiert werden soll&lt;br /&gt;
* ''Anzuwendende Filtereinstellungen'' bleibt vorläuftig leer. Das heißt soviel wie, dass wir in unserer Liste alle Datensätze (Musikstücke), die wir in unserer Musicbox erfasst haben, in der Liste anzeigen möchten&lt;br /&gt;
* Bei ''Eigenes Template für Datensatzliste auswählen'' den vorgegebenen Default &amp;quot;mod_metamodel_list&amp;quot; nehmen&lt;br /&gt;
* Bei ''Anzuwendende Rendereinstellung'' nehmen wir nun die zuvor definierte Ausgabevoreinstellung &amp;quot;FE Listenansicht&amp;quot;. Damit werden nur die Daten der Felder ausgegeben, die wir unter Punkt 9 als sichtbar gekennzeichnet haben, und zwar in der dort definierten Reihenfolge&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_backend_FE-Module_Detail.png|thumb|400px]]&lt;br /&gt;
Frontend-Modul für Detailansicht einrichten:&lt;br /&gt;
&lt;br /&gt;
Dieses FE-Modul richten wir analog dem FE-Modul der Listenansicht ein, allerdings mit zwei wichtigen Unterschieden:&lt;br /&gt;
&lt;br /&gt;
* Bei ''Anzuwendende Filtereinstellungen'' muss nun der Filter &amp;quot;FE Link Detail&amp;quot; angewählt werden. Dieser bewirkt, dass man hier, in der Detailansicht, auch nur den Datenansatz angezeigt bekommt, den man in der Listenansicht angeklickt hatte.&lt;br /&gt;
* Bei ''Anzuwendende Rendereinstellungen'' wählen wir die in den Ansichtsdarstellungen definierte Einstellung &amp;quot;FE Detailansicht&amp;quot;. Hier werden alle Daten angezeigt, die wir unter Punkt ... als sichtbar angegeben haben. In diesem Falle alle.&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;
==Frontend-Module einbinden und Seitenvorschau==&lt;br /&gt;
[[File:mm_backend_FE-Module_einsetzen.png|thumb|400px]]&lt;br /&gt;
Zum Schluss bindet man die beiden Frontend-Module in den gewünschten Artikel ein.&lt;br /&gt;
Done.&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;
== Detail-Link anpassen==&lt;br /&gt;
Wenn der Rendereinstellung für die FE-Ansicht der passende Filter mitgegeben wurde, wird am Ende des Items standardmässig ein Link namens '''Details''' generiert. &lt;br /&gt;
Im Standard-Template '''metamodel_prerendered.html5''' sieht der PHP-Code, wo der Link vorkommt, so aus:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php if ($arrItem['jumpTo']['deep']): ?&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;&amp;lt;?php echo $arrItem['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $this-&amp;gt;details; ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Die Bezeichnung des Links lässt sich umbenennen, ohne in das Template eingreifen zu müssen.&amp;lt;br&amp;gt;&lt;br /&gt;
Hierzu kann man bei '/system/config/'''langconfig.php'''' folgende Anpassungen machen. 3 Beipiele...&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$GLOBALS['TL_LANG']['MSC']['details'] = '...mehr Details';&lt;br /&gt;
$GLOBALS['TL_LANG']['MSC']['mm_meineTabelle']['details'] = 'weiter...';&lt;br /&gt;
$GLOBALS['TL_LANG']['MSC']['mm_meineTabelle'][id]['details'] = 'Zurück zur Liste';&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
'''1. Fal'''l: Jeder Link in MetaModels wird zu '... mehr Details' umbenannt&amp;lt;br&amp;gt;&lt;br /&gt;
'''2. Fall''': Nur die Links in der MetaModel-Tabelle 'mm_meineTabelle' werden zu 'weiter...' umbeannt&amp;lt;br&amp;gt;&lt;br /&gt;
'''3. Fall''': Interessant, wenn man von der FE Detailansicht zurück zur FE Listenansicht gelangen will. In diesem Fall kann man nicht nur die MM Tabelle angeben, sondern auch die '''id''' der [[MetaModels_Backend:_Ausgabevorgaben#Einstieg|Rendereinstellung]] angeben. &lt;br /&gt;
&lt;br /&gt;
Beispiel für langconfig.php:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
/* Put your custom configuration here */ &lt;br /&gt;
$GLOBALS['TL_LANG']['MSC']['mm_musicbox']['details'] = 'weiter...';&lt;br /&gt;
$GLOBALS['TL_LANG']['MSC']['mm_musicbox'][4]['details'] = 'Zurück zur Liste';&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Mögliches Endresultat=&lt;br /&gt;
&lt;br /&gt;
==Frontend Ansicht==&lt;br /&gt;
Und so könnte es aussehen&lt;br /&gt;
* links: Die Daten werden standardmässig in kompakter Form ausgegeben&lt;br /&gt;
* rechts: mit etwas CSS lassen sich die Daten sowohl in der Listen- wie Detailsicht gut formatieren&lt;br /&gt;
* die Labels lassen sich auch ausschalten. Siehe [[MetaModels_Backend:_Eingabemaske#Backend_Liste_gestalten|hier]]&lt;br /&gt;
[[File:mm_frontend_beispiel.png|link=|900px]]&lt;br /&gt;
&lt;br /&gt;
==HTML-Konstrukt==&lt;br /&gt;
Die Daten werden über das Template &amp;quot;metamodel_prerendered.html5&amp;quot; ausgegeben. Jeder Datensatz wird als '''item''' ausgegeben, dieser besteht aus den Attributen, die in den Rendereinstellungen definiert wurden. Bei jedem Attribut wird standardmässig '''label''' und '''value''' ausgegeben.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html4strict&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;field attribut1&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;Titel des attributs1&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;Wert des attribut1&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;field attribut2&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;label&amp;quot;&amp;gt;Titel des attribut2&amp;lt;/span&amp;gt;&lt;br /&gt;
    &amp;lt;span class=&amp;quot;value&amp;quot;&amp;gt;Wert des attribut2&amp;lt;/span&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;div class=&amp;quot;field attribut3&amp;quot;&amp;gt;&lt;br /&gt;
  ...&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[MetaModels_Beispiel_1|Zurück zur Beispiel 1]] | [[MetaModels_Beispiel_3|Weiter zum Beispiel 3: Weitere Filter hinzufügen]]&lt;/div&gt;</summary>
		<author><name>Zonky</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>2017-01-26T12:16:28Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels|B]]&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;
&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;
* In unserem Beispiel aktivieren wir die Mehrsprachigkeit, um nachträglich weitere Sprachen anlegen zu können. Falls man im Vorfeld weiß, dass man keine weiteren Sprachen benötigt, muss der Haken nicht gesetzt werden. MetaModels ist auch ohne Mehrprachigkeit komplett funktionstüchtig.&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 bei 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 (aka Render-Einstellungen)==&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;
* Auf '''neu''' klicken&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;
&lt;br /&gt;
Nun wurde eine Eingabemaske namens '''BE Erfassung''' erstellt. Im Folgenden wird nun das Erfassungs-Formular ein wenig gestaltet.&amp;lt;br&amp;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;
{{Hinweis|Mit der Erweiterung '''MetaModels Boilerplate''' (Nightly Build) kann man die MetaModels in einem separaten '''Backend-Bereich''' in der BE-Navigation unterbringen.}}{{Hinweis|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;
&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 kann 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>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2017-01-26T12:15:09Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Hinweis Handbuch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zur Länge des Dateinamens: der Dateiname kann über das BE nur eine bestimmte Länge haben - bis Contao 3.3.x sind das 32 Zeichen und ab 3.4.x 64 Zeichen.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
In dem Array gibt es (z.Z.) drei verschiedene Knoten, die sich anhand der Ausgabevarianten ergeben. Das sind [raw], [text] und [html5] - in [raw] werden alle vorhanden Attribute ausgegeben und in [text] und [html5] nur die vorhanden Attribute, die auf &amp;quot;Sichtbar&amp;quot; (Auge grün) gestellt sind.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items</id>
		<title>MetaModels Beispiel: Referenced items</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items"/>
				<updated>2017-01-26T12:14:32Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Hinweis Handbuch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:MetaModels|T2]]&lt;br /&gt;
=MetaModels miteinander verknüpfen=&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
Es gibt ein MetaModel mit &amp;quot;Kunden&amp;quot; (mm_customers) und eines mit &amp;quot;Projekte&amp;quot; (mm_projects). mm_projects enthält ein Attribut &amp;quot;customer&amp;quot; vom Typ &amp;quot;select&amp;quot;, welches die in mm_customer erfassten Kunden anzeigt. Über dieses Feld wird das Projekt mit dem Kunden verknüpft.&lt;br /&gt;
==Aufgabenstellung==&lt;br /&gt;
Man möchte, dass auf der Detailansicht des Kunden, auch die jeweils dazu gehörigen Projekte angezeigt werden. Von dort möchte man auch per Link auf die Detailansicht des spezifischen Projektes springen können.&lt;br /&gt;
&lt;br /&gt;
==Lösungsansatz==&lt;br /&gt;
Nebst den spezifischen Kunden-Detailinformationen sollen die Projekte gelistet darunter erscheinen. Die Projekte werden jeweils mit einem Titel-Link (h3), einer Kurzbeschreibung und der dazu gehörigen Bildgalerie angezeigt. Die Projekte werden überdies über einen Filter sortiert: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array()); &amp;lt;/source&amp;gt;&lt;br /&gt;
In diesem Fall ist '10' die ID des Filters im MetaModels 'mm_projects'. Der Filter sorgt dafür, dass die Projekte chronologisch aufgelistet werden.&lt;br /&gt;
&lt;br /&gt;
Das MetaModels-Template könnte wie folgt aussehen:&lt;br /&gt;
{{Hinweis|Beachte das in der TNG Version MetaModels auch auf Namespace umgestellt wurde und die Factory Aufrufe entsprechend anders lauten müssen: \MetaModels\Factory s.u.}}&lt;br /&gt;
&lt;br /&gt;
'''Quelltext ohne Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = MetaModelFactory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new MetaModelFilterRuleSearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Quelltext mit Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = \MetaModels\Factory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_%C3%9Cbersetzter_select</id>
		<title>MetaModels Beispiel: Übersetzter select</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_%C3%9Cbersetzter_select"/>
				<updated>2017-01-26T12:14:03Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Hinweis Handbuch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Admin HOWTOS]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
=Aufgabenstellung: Übersetzter select einrichten=&lt;br /&gt;
Es soll ein &amp;quot;Übersetzter select&amp;quot;-Attribut eingerichtet werden.&lt;br /&gt;
&lt;br /&gt;
==Voraussetzung==&lt;br /&gt;
Es wird von Vorwissen aus den anderen Basics-Beispielen ausgegangen!&lt;br /&gt;
&lt;br /&gt;
=Neue MetaModels erstellen=&lt;br /&gt;
[[File:Mm_translatedselect_Ubersicht.png|thumb|400px]]&lt;br /&gt;
Wir legen zwei neue MetaModels an:&lt;br /&gt;
# enthält die übersetzten Einträge für das select Feld (Hier: Mehrsprachige Einträge)&lt;br /&gt;
# zur Anwendung des select Feldes (Hier: Data)&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;
== MM für die mehrsprachigen Einträge ==&lt;br /&gt;
[[File:Mm_translatedselect_entriestable.png|thumb|400px]]&lt;br /&gt;
Erst legen wir das MetaModel an.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mm_translatedselect_entriesattribute.png|thumb|400px]]&lt;br /&gt;
In diesem erzeugen wir ein &amp;quot;Übersetzter Text&amp;quot; Attribut.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mm_translatedselect_entrie1de.png|thumb|200px]]&lt;br /&gt;
[[File:Mm_translatedselect_entrie1en.png|thumb|200px]]&lt;br /&gt;
[[File:Mm_translatedselect_entries.png|thumb|400px]]&lt;br /&gt;
Nach dem Bearbeiten der Eingabemasken und Rendereinstellungen (Wie in den anderen Beispielen) fügen wir die gewünschten Einträge in den gewünschten Sprachen hinzu. &lt;br /&gt;
Hier wurden zwei Einträge in jeweils zwei Sprachen benutzt.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mm_translatedselect_phpmyadmin.png|thumb|400px]]&lt;br /&gt;
Anschließend gehen wir auf den mysql server und betrachten die Tabelle &amp;quot;tl_metamodel_translatedtext&amp;quot;. Dort suchen wir die gerade erstellten Einträge und merken uns den Wert &amp;quot;att_id&amp;quot;.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==  MM zur Anwendung des select Feldes ==&lt;br /&gt;
[[File:Mm_translatedselect_datatable.png|thumb|400px]]&lt;br /&gt;
Erst legen wir das MetaModel an.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mm_translatedselect_dataattribute.png|thumb|400px]]&lt;br /&gt;
[[File:Mm_translatedselect_dataattributes.png|thumb|400px]]&lt;br /&gt;
In diesem erzeugen wir ein &amp;quot;Übersetzter Select&amp;quot; Attribut.&lt;br /&gt;
Wir wählen die Tabelle &amp;quot;tl_metamodel_translatedtext&amp;quot; aus.&lt;br /&gt;
Bei der Bedingung wird &amp;quot;att_id=[Der Wert von oben]&amp;quot; eingetragen.&lt;br /&gt;
Wenn die Sortierung eine Rolle spielt kann die Spalte &amp;quot;sorting&amp;quot; aus der Tabelle aus dem ersten MetaModel benutzt werden.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
[[File:Mm_translatedselect_data1de.png|thumb|400px]]&lt;br /&gt;
Nach dem Bearbeiten der Eingabemasken und Rendereinstellungen (Wie in den anderen Beispielen) fügen wir ein Datenelement hinzu. Bei der Auswahl erscheinen immer die Einträge aus der BE-Sprache (Hier Deutsch). Das ist unabhängig von der Sprache die wir gerade bearbeiten.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
=Frontend Ansicht=&lt;br /&gt;
[[File:Mm_translatedselect_FEoutput.png|thumb|400px]]&lt;br /&gt;
Wenn wir das zweite MM im Frontend ausgeben lassen, erscheinen nun die Dateneinträge mit dem jeweiligen selektierten Wert in der richtigen FE-Sprache.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels</id>
		<title>MetaModels</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels"/>
				<updated>2017-01-26T12:13:01Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Hinweis Handbuch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hinweis|Die Angaben, Beschreibungen und Screenshot beziehen sich auf MetaModels bis etwa Mitte 2016 und sind nicht aktuell!&lt;br /&gt;
Im [http://metamodels.readthedocs.io/de/latest/ MetaModels-Handbuch] sind aktuelle Angaben zu finden.}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
{{ExtInfo&lt;br /&gt;
| Dev=Metamodels Team&lt;br /&gt;
| DevSite=&lt;br /&gt;
| Version=ab 2.11.X&lt;br /&gt;
| ERLink=&lt;br /&gt;
| VCSLink=https://github.com/MetaModels/core&lt;br /&gt;
| TrackerLink=https://github.com/MetaModels/core/issues&lt;br /&gt;
| Depending=[[DC_General]] [[Justtextwidgets]] [[MultiColumnWizard]] [[MetaPalettes]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Vorwort: Wiki-Dokumentation der Erweiterung MetaModels (Nachfolger des Catalog)=&lt;br /&gt;
Die Erweiterung MetaModels ist der Nachfolger der Catalog-Extension. Der Code wurde komplett neu entwickelt. Eine Kompatibilität zum Catalog besteht nicht.&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;
&lt;br /&gt;
=Download &amp;amp; Installation=&lt;br /&gt;
&lt;br /&gt;
==Download von der Demosite==&lt;br /&gt;
[[Datei:logo-metamodels.png|link=|left|105px]]&lt;br /&gt;
Unter der URL [http://now.metamodel.me now.metamodel.me] findet sich die Webseite zur Extension mit einer Frontentdemo und der Möglichkeit, Installationsarchive in den Formaten '''tgz''', '''tbz''' und '''zip''' mit so genannten Nightly Builds zu laden. Diese Archive beinhalten die MetaModels-Dateien, Attribute, Filter sowie sämtliche anderen Erweiterungen, die für den Betrieb nötig sind und ansonsten separat heruntergeladen und installiert werden müssen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation via Composer==&lt;br /&gt;
&lt;br /&gt;
MetaModels kann vollständig über [http://de.contaowiki.org/Composer Composer] installiert werden. Alle Attribute liegen auf [https://packagist.org/ Packagist] und werden vom offiziellen MetaModels Team betreut. Für die Installation von MetaModels über Composer muss man lediglich nach &amp;quot;metamodels&amp;quot; suchen, alle verfügbaren Pakete werden danach aufgelistet.&lt;br /&gt;
&lt;br /&gt;
==Download aus dem Entwicklungsrepository GitHub==&lt;br /&gt;
&lt;br /&gt;
[[Datei:logo-github.png|link=|left|105px]]&lt;br /&gt;
Zu finden ist die Erweiterung MetaModels auf GitHub:&lt;br /&gt;
[https://github.com/MetaModels github.com/Metamodels]&amp;lt;br&amp;gt;&lt;br /&gt;
Aktuell können das Core, dazu abhängige weitere Erweiterungen und alle weiteren MetaModels Attribute/Filter manuell installiert werden.&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;
===Core===&lt;br /&gt;
* [https://github.com/MetaModels/core MetaModels (Das Core-Modul)]&lt;br /&gt;
* [https://github.com/MetaModels/boilerplate Boilerplate (Erzeugt einen separaten Bereich in der Backend-Navigation)]&lt;br /&gt;
&lt;br /&gt;
===Abhängigkeiten===&lt;br /&gt;
Benötigt werden folgende Erweiterungen:&lt;br /&gt;
* [https://github.com/MetaModels DC_General]&lt;br /&gt;
* [https://contao.org/de/extension-list/view/MetaPalettes.html MetaPalettes]&lt;br /&gt;
* [http://www.contao.org/erweiterungsliste/view/MultiColumnWizard.html MultiColumnWizard]&lt;br /&gt;
* [https://github.com/Discordier/justtextwidgets justtextwidgets]&lt;br /&gt;
* [https://contao.org/de/extension-list/view/geoprotection.de.html geoprotection] (wird nur für das Attribut '''Geoprotection''' benötigt)&lt;br /&gt;
&lt;br /&gt;
===Verfügbare Attribute und Filter===&lt;br /&gt;
Sobald der Core und alle benötigten sonstigen Erweiterungen installiert sind, werden die weiteren Attributs- und Filterextensions des MetaModels benötigt.&lt;br /&gt;
Dazu gehören:&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Attribute''' !! '''Attribute (translated)''' !! '''Filter'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/attribute_alias Attribut: Alias]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_checkbox Attribut: Checkbox (Kontrollkästchen)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_combinedvalues Attribut: Combined Values (Kombinierte Einträge)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_color Attribut: Color (Farbe)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_country Attribut: Country (Land)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_decimal Attribut: Decimal (Dezimal)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_file Attribut: File (Datei)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_geoprotection Attribut: Geoprotection (Länderzuordnung)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_langcode Attribut: Langcode (Sprachschlüssel)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_longtext Attribut: Longtext (Langtext, Textarea)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_select Attribut: Select (Auswahl)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_numeric Attribut: Numeric (Numerisch)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_rating Attribut: Rating (Bewertung)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_tags Attribut: Tags  (Mehrfachauswahl)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_text Attribut: Text]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_timestamp Attribut: Timestamp (Datum)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_url Attribut: URL]&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedalias Attribut: Translated Alias]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedfile Attribut: Translated File]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedlongtext Attribut: Translated Longtext]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedselect Attribut: Translated Select]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedtags Attribut: Translated Tags]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedtext Attribut: Translated Text]&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/filter_checkbox Filter: Checkbox]&lt;br /&gt;
* [https://github.com/MetaModels/filter_fromto Filter: FromTo]&lt;br /&gt;
* [https://github.com/MetaModels/filter_range Filter: Range]&lt;br /&gt;
* [https://github.com/MetaModels/filter_select Filter: Select]&lt;br /&gt;
* [https://github.com/MetaModels/filter_tags Filter: Tags]&lt;br /&gt;
* [https://github.com/MetaModels/filter_text Filter: Text]&lt;br /&gt;
|}&lt;br /&gt;
Attribut- und Filterextensions werden für den Betrieb von MetaModels benötigt. Welche dieser Erweiterungen in einem Projekt zu Einsatz kommen sollen ist abhängig von den benötigten Funktionen.&lt;br /&gt;
{{Hinweis|Das Attribut [https://packagist.org/packages/metamodels/attribute_geoprotection '''Geoprotection'''] ist nicht mehr Teil der Nightly Builds. Es kann aber jederzeit über den oben angegeben Link separat geladen werden.}}{{Hinweis|Das Attribut [https://packagist.org/packages/metamodels/attribute_rating '''Rating'''] benötigt die Extension [https://packagist.org/packages/leounglaub/contao-simple-ajax '''SimpleAjax'''] von leo-unglaub. Das Rating Attribut wird seit einiger Zeit nicht mehr in der Nightly ausgeliefert.}}&lt;br /&gt;
&lt;br /&gt;
==Download via git und Kommandozeile==&lt;br /&gt;
In einer bash (Linux Kommandozeile bzw. cygwin Kommandozeile) kann man sich auch alle Unterprojekte der MetaModels via git clonen. Man sollte jedoch vorher in den Ordner wechseln, wohin die Projekte heruntergeladen werden sollen.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Linux'''  !! '''MacOS'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
In Benutzerverzeichnis wechseln und für den Pull ein Verzeichniss anlegen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir MetaModels&lt;br /&gt;
cd MetaModels&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
In Benutzerverzeichnis wechseln und für den Pull ein Verzeichniss anlegen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir MetaModels&lt;br /&gt;
cd MetaModels&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Alle MetaModel Repos holen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `wget -qO- https://api.github.com/orgs/MetaModels/repos | \&lt;br /&gt;
grep clone_url | \&lt;br /&gt;
cut -d \&amp;quot; -f4`; do \&lt;br /&gt;
git clone $i; \&lt;br /&gt;
done;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
Alle MetaModel Repos holen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `curl https://api.github.com/orgs/MetaModels/repos | \&lt;br /&gt;
grep clone_url | \&lt;br /&gt;
cut -d \&amp;quot; -f4`; do \&lt;br /&gt;
git clone $i; \&lt;br /&gt;
done;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Die zu installieren Ordner und Dateien müssen zur Installation im Contao-System wie folgt hochgeladen werden:&lt;br /&gt;
{| style=&amp;quot;width:80%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Module''' (/system/modules) !! '''Drivers''' (/system/drivers)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* generalDriver&lt;br /&gt;
* justtextwidgets&lt;br /&gt;
* metamodels&lt;br /&gt;
* metamodels_boilerplate&lt;br /&gt;
* metamodelsattribute_alias&lt;br /&gt;
* metamodelsattribute_checkbox&lt;br /&gt;
* metamodelsattribute_combinedvalues&lt;br /&gt;
* metamodelsattribute_color&lt;br /&gt;
* metamodelsattribute_country&lt;br /&gt;
* metamodelsattribute_decimal&lt;br /&gt;
* metamodelsattribute_file&lt;br /&gt;
* metamodelsattribute_geoprotection&lt;br /&gt;
* metamodelsattribute_langcode&lt;br /&gt;
* metamodelsattribute_longtext&lt;br /&gt;
* metamodelsattribute_numeric&lt;br /&gt;
* metamodelsattribute_rating&lt;br /&gt;
* metamodelsattribute_select&lt;br /&gt;
* metamodelsattribute_tags&lt;br /&gt;
* metamodelsattribute_text&lt;br /&gt;
* metamodelsattribute_timestamp&lt;br /&gt;
* metamodelsattribute_translatedalias&lt;br /&gt;
* metamodelsattribute_translatedfile&lt;br /&gt;
* metamodelsattribute_translatedlongtext&lt;br /&gt;
* metamodelsattribute_translatedselect&lt;br /&gt;
* metamodelsattribute_translatedtags&lt;br /&gt;
* metamodelsattribute_translatedtext&lt;br /&gt;
* metamodelsattribute_url&lt;br /&gt;
* metamodelsfilter_checkbox&lt;br /&gt;
* metamodelsfilter_fromto&lt;br /&gt;
* metamodelsfilter_range&lt;br /&gt;
* metamodelsfilter_select&lt;br /&gt;
* metamodelsfilter_tags&lt;br /&gt;
* metamodelsfilter_text&lt;br /&gt;
* metapalettes&lt;br /&gt;
* multicolumnwizard&lt;br /&gt;
|&lt;br /&gt;
* DC_General.php&lt;br /&gt;
|}&lt;br /&gt;
Danach muss mittels des Installtools ein Update der Datenbank gemacht werden.&lt;br /&gt;
&lt;br /&gt;
=Backend Ansichten=&lt;br /&gt;
&lt;br /&gt;
===Leeres MetaModel===&lt;br /&gt;
[[Datei:MetaModels_Backend_System.png|right|600px]]&lt;br /&gt;
Nach Aktualisierung der Datenbank erscheint '''MetaModels''' neu als eigenständige Einstellung in der Backend-Navigation links.&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;
===Erweiterungsverwaltung===&lt;br /&gt;
[[Datei:MetaModels_Backend_System_ER.png|right|600px]]&lt;br /&gt;
In der Erweiterungsverwaltung findet sich hingegen nichts, was auf MetaModels hinweist. Aber das ist gut so (Stand Mai 2013).&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;
===MetaModel mit null Datensätzen===&lt;br /&gt;
[[Datei:MetaModels_Backend_System_Beispiel.png|right|600px]]&lt;br /&gt;
Nachdem ein erstes neues MetaModel erstellt wurde, erscheint folgende Darstellung:&lt;br /&gt;
Weiterführende Informationen zu einem einfachen Praxisbeispiel findet man unter [[MetaModels_Beispielprojekt|MetaModels Beispielprojekt]]&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;
=Konfiguration=&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Attribute===&lt;br /&gt;
[[File:icons_attribute.png|left|link=|32px]]&lt;br /&gt;
Zur  [[MetaModels_Backend:_Attribute|Dokumentation der Attribute]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Ausgabevorgaben===&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|link=|32px]]&lt;br /&gt;
Den Überblick findest du [[MetaModels_Backend:_Ausgabevorgaben|hier]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Eingabemaske (fka Paletteneinstellungen)===&lt;br /&gt;
[[File:icons_paletteneinstellungen.png|left|link=|32px]]&lt;br /&gt;
Den Überblick findest du [[MetaModels_Backend:_Eingabemaske|hier]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Filter===&lt;br /&gt;
[[File:icons_filter.png|left|link=|32px]]&lt;br /&gt;
Zum [[MetaModels_Backend:_Filter|Überblick über die Filter]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Ansichtseinstellungen===&lt;br /&gt;
[[File:icons_ansichtseinstellungen.png|left|link=|32px]]&lt;br /&gt;
Zum [[MetaModels_Backend:_Ansichtseinstellungen|Überblick der Ansichtseinstellungen]].&lt;br /&gt;
&lt;br /&gt;
=Basics=&lt;br /&gt;
Einführende Beispiele, wie man MetaModels einrichten und konfigurieren kann, findet man hier:&lt;br /&gt;
# [[MetaModels_Beispiel_1| Backend einrichten]] - am Beispiel einer Musiksammlung, Eingeben der Sammlung&lt;br /&gt;
# [[MetaModels_Beispiel_2| Frontend einrichten]] - Die Inhalte im Frontend anzeigen (Liste und Detail)&lt;br /&gt;
# [[MetaModels_Beispiel_3| Weitere Filter einrichten]] – Inhalte auf Published setzen, einfache Select-Filter&lt;br /&gt;
# [[MetaModels_Beispiel_4| Weiteres MetaModels einrichten]] - komplexe Select-Filter einsetzen&lt;br /&gt;
# [[MetaModels Insert-Tags| Insert-Tags]] - Insert-Tags in MetaModels&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks=&lt;br /&gt;
Umsetzung-Beispiele, wie man MetaModels ausbauen kann, findet man hier:&lt;br /&gt;
# [[MetaModels_Beispiel:_Übersetzter_select| Übersetzer select]] - &amp;quot;Übersetzter select&amp;quot;-Attribut eingerichtet werden.&lt;br /&gt;
# [[MetaModels_Beispiel:_Referenced_items| Referenced items]] - MetaModels miteinder verknüpfen&lt;br /&gt;
# [[MetaModels_Beispiel:_FE-Template_anpassen| FE-Template anpassen]] - FE-Template anpassen&lt;br /&gt;
&lt;br /&gt;
=Frontendausgabe=&lt;br /&gt;
{{Hinweis|Die Dokumentation sollte in eine andere Seite ausgelagert werden}}&lt;br /&gt;
----&lt;br /&gt;
started by: [[Benutzer:Planepix|Planepix]] 00:49, 28. Nov. 2012 (CET)&amp;lt;br&amp;gt;&lt;br /&gt;
completed by [[Benutzer:Luis|Luis]], [[Benutzer:lucina|Lucina]]&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Insert-Tags</id>
		<title>MetaModels Insert-Tags</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Insert-Tags"/>
				<updated>2015-09-01T11:26:41Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Formatierung&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
= Insert-Tags =&lt;br /&gt;
Der Aufbau der Insert-Tags ist relative simple. Als erste 'mm' um die Insert-Tags von MetaModels zu bekommen. Danach die gewünschte Funktion. Momentan gibt es 4 Funktionen, eine 5 befindet sich noch in der Entwicklung. Anschließen kann es 0 bzw. beliebig viele Parameter geben. Einige davon sind Pflicht andere Optional. &lt;br /&gt;
&lt;br /&gt;
Die folgenden Insert-Tags stehen in MetaModels zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Insert-Tags ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Diese Insert-Tags geben die gesamt Anzahl an gefunden Einträge für eine MetaModels Liste aus. &lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::*}} -&amp;gt; mm::total::mod::[ID]&lt;br /&gt;
{{mm::total::ce::*}} -&amp;gt; mm::total::ce::[ID]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;Parameter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Daten Type&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Optional&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| String&lt;br /&gt;
| Allgemeiner Aufruf für die MM Insert-Tags&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| total &lt;br /&gt;
| String   &lt;br /&gt;
| Funktionsname&lt;br /&gt;
| Nein&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| mod|ce&lt;br /&gt;
| String&lt;br /&gt;
| Ausgabe von einem Module(mod) oder einem Contentelement(ce)&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| */ID&lt;br /&gt;
| Integer&lt;br /&gt;
| ID vom Module|Contentelemen&lt;br /&gt;
| Nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::1}}&lt;br /&gt;
{{mm::total::ce::1}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
22&lt;br /&gt;
0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Itembasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::item::*::*::*}}   -&amp;gt; mm::item::[MM Name oder ID]::[Item ID oder ID,ID,ID]::[ID Rendersetting](::[Output raw|text|html5|..])&lt;br /&gt;
{{mm::detail::*::*::*}} -&amp;gt; mm::detail::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Output raw|text|html5|..]) // Not yet implemented&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributbasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::attribute::*::*::*::*}} -&amp;gt; mm::attribute::[MM Name oder ID]::[Item ID]::[Attribute Name oder ID](::[Output raw|text|html5|..])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weiterleitungen ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::jumpTo::*::*::*::*}} -&amp;gt; mm::jumpTo::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Parameter (Default:url)|label|page|params.attname])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quelle auf Github für MM 2.x==&lt;br /&gt;
https://github.com/MetaModels/core/blob/master/src/MetaModels/FrontendIntegration/InsertTags.php&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Insert-Tags</id>
		<title>MetaModels Insert-Tags</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Insert-Tags"/>
				<updated>2015-09-01T11:23:58Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Update URL&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
= Insert-Tags =&lt;br /&gt;
Der Aufbau der Insert-Tags ist relative simple. Als erste 'mm' um die Insert-Tags von MetaModels zu bekommen. Danach die gewünschte Funktion. Momentan gibt es 4 Funktionen, eine 5 befindet sich noch in der Entwicklung. Anschließen kann es 0 bzw. beliebig viele Parameter geben. Einige davon sind Pflicht andere Optional. &lt;br /&gt;
&lt;br /&gt;
Die folgenden Insert-Tags stehen in MetaModels zur Verfügung:&lt;br /&gt;
&lt;br /&gt;
== Allgemeine Insert-Tags ==&lt;br /&gt;
=== Beschreibung ===&lt;br /&gt;
Diese Insert-Tags geben die gesamt Anzahl an gefunden Einträge für eine MetaModels Liste aus. &lt;br /&gt;
&lt;br /&gt;
=== Parameter ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::*}} -&amp;gt; mm::total::mod::[ID]&lt;br /&gt;
{{mm::total::ce::*}} -&amp;gt; mm::total::ce::[ID]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;Parameter&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Daten Type&lt;br /&gt;
! Beschreibung&lt;br /&gt;
! Optional&lt;br /&gt;
|-&lt;br /&gt;
| mm&lt;br /&gt;
| String&lt;br /&gt;
| Allgemeiner Aufruf für die MM Insert-Tags&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| total &lt;br /&gt;
| String   &lt;br /&gt;
| Funktionsname&lt;br /&gt;
| Nein&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| mod|ce&lt;br /&gt;
| String&lt;br /&gt;
| Ausgabe von einem Module(mod) oder einem Contentelement(ce)&lt;br /&gt;
| Nein&lt;br /&gt;
|-&lt;br /&gt;
| */ID&lt;br /&gt;
| Integer&lt;br /&gt;
| ID vom Module|Contentelemen&lt;br /&gt;
| Nein&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Beispiel ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::total::mod::1}}&lt;br /&gt;
{{mm::total::ce::1}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ausgabe ===&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
22&lt;br /&gt;
0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Itembasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::item::*::*::*}} -&amp;gt; mm::item::[MM Name oder ID]::[Item ID oder ID,ID,ID]::[ID Rendersetting](::[Output raw|text|html5|..])&lt;br /&gt;
{{mm::detail::*::*::*}} -&amp;gt; mm::detail::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Output raw|text|html5|..]) // Not yet implemented&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attributbasierte Insert-Tags ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::attribute::*::*::*::*}} -&amp;gt; mm::attribute::[MM Name oder ID]::[Item ID]::[Attribute Name oder ID](::[Output raw|text|html5|..])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weiterleitungen ==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
{{mm::jumpTo::*::*::*::*}} -&amp;gt; mm::jumpTo::[MM Name oder ID]::[Item ID]::[ID Rendersetting](::[Parameter (Default:url)|label|page|params.attname])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Quelle auf Github für MM 2.x==&lt;br /&gt;
https://github.com/MetaModels/core/blob/master/src/MetaModels/FrontendIntegration/InsertTags.php&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-19T09:11:29Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zur Länge des Dateinamens: der Dateiname kann über das BE nur eine bestimmte Länge haben - bis Contao 3.3.x sind das 32 Zeichen und ab 3.4.x 64 Zeichen.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
In dem Array gibt es (z.Z.) drei verschiedene Knoten, die sich anhand der Ausgabevarianten ergeben. Das sind [raw], [text] und [html5] - in [raw] werden alle vorhanden Attribute ausgegeben und in [text] und [html5] nur die vorhanden Attribute, die auf &amp;quot;Sichtbar&amp;quot; (Auge grün) gestellt sind.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-19T09:10:51Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zur Länge des Dateinamens: der Dateiname kann über das BE nur eine bestimmte Länge haben - bis Contao 3.3.x sind das 32 Zeichen und ab 3.4.x 64 Zeichen.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
In dem Array gibt es (z.Z.) drei verschiedene Knoten, die sich anhand der Ausgabevarianten ergenen. Das sind [raw], [text] und [html5] - in [raw] werden alle vorhanden Attribute ausgegeben und in [text] und [html5] nur die vorhanden Attribute, die auf &amp;quot;Sichtbar&amp;quot; (Auge grün) gestellt sind.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-19T09:09:44Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zur Länge des Dateinamens: der Dateiname kann über das BE nur eine bestimmte Länge haben - bis Contao 3.3.x sind das 32 Zeichen und ab 3.4.x 64 Zeichen.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden. In dem Array gibt es (z.Z.) drei verschiedene Knoten, die sich anhand der Ausgabevarianten ergenen. Das sind [raw], [text] und [html5] - in [raw] werden alle vorhanden Attribute ausgegeben und in [text] und [html5] nur die vorhanden Attribute, die auf &amp;quot;Sichtbar&amp;quot; (Auge grün) gestellt sind.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-19T08:09:32Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 1. Wo finde ich das Template? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Hinweis zur Länge des Dateinamens: der Dateiname kann über das BE nur eine bestimmte Länge haben - bis Contao 3.3.x sind das 32 Zeichen und ab 3.4.x 64 Zeichen.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-03T07:06:15Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden (unbedingt als &amp;quot;Quelltext&amp;quot; formatieren) oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-03T07:04:40Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* 2. Wie sehe ich, was alles an Attributen zur Verfügung steht? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen (Werten) zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-02T21:42:38Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|T]]&lt;br /&gt;
MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimmte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffnen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-02T09:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
'''Voraussetzung:''' das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffenen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das ausgegebene Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-02T09:02:26Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
== 1. Wo finde ich das Template? ==&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 2. Wie sehe ich, was alles an Attributen zur Verfügung steht? ==&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffenen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen werden und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im [https://community.contao.org/de/forumdisplay.php?149-MetaModels Forum] kann die Ausgabe - oder Teile davon - gepostet werden oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen</id>
		<title>MetaModels Beispiel: FE-Template anpassen</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_FE-Template_anpassen"/>
				<updated>2014-12-02T08:55:24Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: Debug der Items im HTML-Quelltext&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;MetaModels (MM) bringt für die Ausgabe einer Liste ein Standard-Template mit. Mit diesem Template lassen sich alle Attribute ausgeben und prüfen. Für viele Anwendungen wird man das Template aber anpassen müssen z.B. um die HTML-Struktur umzubauen, Attribute doppelt auszugeben, bestimte Formatierungen vorzunehmen, Daten aus weiteren MetaModels zu beziehen u.v.a.m.&lt;br /&gt;
&lt;br /&gt;
Im Folgenden sollen eine Tipps den Einstieg in die Bearbeitung des Templates erleichtern.&lt;br /&gt;
&lt;br /&gt;
Voraussetzung: das oder die MetaModels sind angelegt, mit einigen (Test-) Daten gefüllt und über das Content-Element &amp;quot;MetaModel-Liste&amp;quot; werden die Daten (Attribute) im Frontend (FE) ausgegeben.&lt;br /&gt;
&lt;br /&gt;
1. Wo finde ich das Template?&lt;br /&gt;
&lt;br /&gt;
In dem Content-Element &amp;quot;MetaModel-Liste&amp;quot; kann ein FE unter &amp;quot; MetaModel-Rendering&amp;quot; ausgewählt werden (ce_metamodel_list). An der Stelle hat man Zugriff auf die Überschrift und Paginierung der Liste - um die Ausgabe der Items zu beeinflussen, muss man einen Schritt &amp;quot;vorher einsteigen&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste kann in den &amp;quot;Grundeinstellungen&amp;quot; ein eigenes Template ausgewählt werden (metamodel_prerendered). Um ein eigens Template anzulegen, wechseln wir zu Layout &amp;gt; Template und legen eine Kopie von &amp;quot;metamodel_prerendered&amp;quot; an. Der Dateiname kann individuell angepasst werden - starten muss der Dateiname mit &amp;quot;metamodel_&amp;quot;. Zum Beispiel kann die Datei als &amp;quot;metamodel_pr_spezialliste&amp;quot; bezeichnet werden.&lt;br /&gt;
&lt;br /&gt;
Anschließend muss das erstellte Template wieder in den MetaModels-Einstellungen &amp;gt; Rendereinstellungen des MM &amp;gt; Eigenschaften (Stift) der FE-Liste &amp;gt; Grundeinstellungen ausgewählt werden.&lt;br /&gt;
&lt;br /&gt;
Damit ist die Vorbereitung in diesem Punkt abgeschlossen und das Template kann an die individuellen Wünsche angepasst werden.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Wie sehe ich, was alles an Attributen zur Verfügung steht?&lt;br /&gt;
&lt;br /&gt;
Für das &amp;quot;Debugging&amp;quot; der Listenausgabe gibt es verschiedene Möglichkeiten - eine einfache Methode ist eine &amp;quot;Echo-Ausgabe&amp;quot; in den HTML-Quelltext. Dazu gehen wir zu den Templates und öffenen das neu angelegte Template &amp;quot;metamodel_pr_spezialliste&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In den Quelltext fügen wir ein &amp;quot;print_r&amp;quot; ein (Zeile 6 bis 10):&lt;br /&gt;
&lt;br /&gt;
[code]&lt;br /&gt;
&amp;lt;?php $strRendersettings = isset($this-&amp;gt;settings)? 'settings' : 'view'; ?&amp;gt;&lt;br /&gt;
&amp;lt;?php if (count($this-&amp;gt;data)): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;layout_full&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
echo &amp;quot;&amp;lt;!-- \n&amp;quot;;&lt;br /&gt;
print_r($this-&amp;gt;items-&amp;gt;parseAll($this-&amp;gt;getFormat(), $this-&amp;gt;view)); &lt;br /&gt;
echo &amp;quot;\n --&amp;gt;&amp;quot;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;item &amp;lt;?php echo $arrItem['class']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php foreach ($arrItem['attributes'] as $field =&amp;gt; $strName): ?&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
[/code]&lt;br /&gt;
&lt;br /&gt;
Anschließend kann die Seite in der FE-Ausgabe neu geladen werden und im HTML-Quelltext (Shortcut FF und IE: Strg-u) das Array analysiert werden.&lt;br /&gt;
&lt;br /&gt;
Für Fragen im Forum kann die Ausgabe - oder Teile davon - gepostet werden oder man stellt einen Link zur Testseite zur Verfügung mit dem Hinweis, auf die Quelltext-Ausgabe.&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels</id>
		<title>MetaModels</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels"/>
				<updated>2014-12-02T08:05:19Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* Tipps und Tricks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Extensions]]&lt;br /&gt;
[[Category:MetaModels|B]]&lt;br /&gt;
{{ExtInfo&lt;br /&gt;
| Dev=Metamodels Team&lt;br /&gt;
| DevSite=&lt;br /&gt;
| Version=ab 2.11.X&lt;br /&gt;
| ERLink=&lt;br /&gt;
| VCSLink=https://github.com/MetaModels/core&lt;br /&gt;
| TrackerLink=https://github.com/MetaModels/core/issues&lt;br /&gt;
| Depending=[[DC_General]] [[Justtextwidgets]] [[MultiColumnWizard]] [[MetaPalettes]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=Vorwort: Wiki-Dokumentation der Erweiterung MetaModels (Nachfolger des Catalog)=&lt;br /&gt;
Die Erweiterung MetaModels ist der Nachfolger der Catalog-Extension. Der Code wurde komplett neu entwickelt. Eine Kompatibilität zum Catalog besteht nicht.&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;
&lt;br /&gt;
=Download &amp;amp; Installation=&lt;br /&gt;
&lt;br /&gt;
==Download von der Demosite==&lt;br /&gt;
[[Datei:logo-metamodels.png|link=|left|105px]]&lt;br /&gt;
Unter der URL [http://now.metamodel.me now.metamodel.me] findet sich die Webseite zur Extension mit einer Frontentdemo und der Möglichkeit, Installationsarchive in den Formaten '''tgz''', '''tbz''' und '''zip''' mit so genannten Nightly Builds zu laden. Diese Archive beinhalten die MetaModels-Dateien, Attribute, Filter sowie sämtliche anderen Erweiterungen, die für den Betrieb nötig sind und ansonsten separat heruntergeladen und installiert werden müssen.&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Installation via Composer==&lt;br /&gt;
&lt;br /&gt;
MetaModels kann vollständig über [http://de.contaowiki.org/Composer Composer] installiert werden. Alle Attribute liegen auf [https://packagist.org/ Packagist] und werden vom offiziellen MetaModels Team betreut. Für die Installation von MetaModels über Composer muss man lediglich nach &amp;quot;metamodels&amp;quot; suchen, alle verfügbaren Pakete werden danach aufgelistet.&lt;br /&gt;
&lt;br /&gt;
==Download aus dem Entwicklungsrepository GitHub==&lt;br /&gt;
&lt;br /&gt;
[[Datei:logo-github.png|link=|left|105px]]&lt;br /&gt;
Zu finden ist die Erweiterung MetaModels auf GitHub:&lt;br /&gt;
[https://github.com/MetaModels github.com/Metamodels]&amp;lt;br&amp;gt;&lt;br /&gt;
Aktuell können das Core, dazu abhängige weitere Erweiterungen und alle weiteren MetaModels Attribute/Filter manuell installiert werden.&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;
===Core===&lt;br /&gt;
* [https://github.com/MetaModels/core MetaModels (Das Core-Modul)]&lt;br /&gt;
* [https://github.com/MetaModels/boilerplate Boilerplate (Erzeugt einen separaten Bereich in der Backend-Navigation)]&lt;br /&gt;
&lt;br /&gt;
===Abhängigkeiten===&lt;br /&gt;
Benötigt werden folgende Erweiterungen:&lt;br /&gt;
* [https://github.com/MetaModels DC_General]&lt;br /&gt;
* [https://contao.org/de/extension-list/view/MetaPalettes.html MetaPalettes]&lt;br /&gt;
* [http://www.contao.org/erweiterungsliste/view/MultiColumnWizard.html MultiColumnWizard]&lt;br /&gt;
* [https://github.com/Discordier/justtextwidgets justtextwidgets]&lt;br /&gt;
* [https://contao.org/de/extension-list/view/geoprotection.de.html geoprotection] (wird nur für das Attribut '''Geoprotection''' benötigt)&lt;br /&gt;
&lt;br /&gt;
===Verfügbare Attribute und Filter===&lt;br /&gt;
Sobald der Core und alle benötigten sonstigen Erweiterungen installiert sind, werden die weiteren Attributs- und Filterextensions des MetaModels benötigt.&lt;br /&gt;
Dazu gehören:&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Attribute''' !! '''Attribute (translated)''' !! '''Filter'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/attribute_alias Attribut: Alias]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_checkbox Attribut: Checkbox (Kontrollkästchen)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_combinedvalues Attribut: Combined Values (Kombinierte Einträge)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_color Attribut: Color (Farbe)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_country Attribut: Country (Land)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_decimal Attribut: Decimal (Dezimal)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_file Attribut: File (Datei)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_geoprotection Attribut: Geoprotection (Länderzuordnung)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_langcode Attribut: Langcode (Sprachschlüssel)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_longtext Attribut: Longtext (Langtext, Textarea)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_select Attribut: Select (Auswahl)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_numeric Attribut: Numeric (Numerisch)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_rating Attribut: Rating (Bewertung)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_tags Attribut: Tags  (Mehrfachauswahl)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_text Attribut: Text]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_timestamp Attribut: Timestamp (Datum)]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_url Attribut: URL]&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedalias Attribut: Translated Alias]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedfile Attribut: Translated File]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedlongtext Attribut: Translated Longtext]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedselect Attribut: Translated Select]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedtags Attribut: Translated Tags]&lt;br /&gt;
* [https://github.com/MetaModels/attribute_translatedtext Attribut: Translated Text]&lt;br /&gt;
|&lt;br /&gt;
* [https://github.com/MetaModels/filter_checkbox Filter: Checkbox]&lt;br /&gt;
* [https://github.com/MetaModels/filter_fromto Filter: FromTo]&lt;br /&gt;
* [https://github.com/MetaModels/filter_range Filter: Range]&lt;br /&gt;
* [https://github.com/MetaModels/filter_select Filter: Select]&lt;br /&gt;
* [https://github.com/MetaModels/filter_tags Filter: Tags]&lt;br /&gt;
* [https://github.com/MetaModels/filter_text Filter: Text]&lt;br /&gt;
|}&lt;br /&gt;
Attribut- und Filterextensions werden für den Betrieb von MetaModels benötigt. Welche dieser Erweiterungen in einem Projekt zu Einsatz kommen sollen ist abhängig von den benötigten Funktionen.&lt;br /&gt;
{{Hinweis|Das Attribut [https://packagist.org/packages/metamodels/attribute_geoprotection '''Geoprotection'''] ist nicht mehr Teil der Nightly Builds. Es kann aber jederzeit über den oben angegeben Link separat geladen werden.}}{{Hinweis|Das Attribut [https://packagist.org/packages/metamodels/attribute_rating '''Rating'''] benötigt die Extension [https://packagist.org/packages/leounglaub/contao-simple-ajax '''SimpleAjax'''] von leo-unglaub. Das Rating Attribut wird seit einiger Zeit nicht mehr in der Nightly ausgeliefert.}}&lt;br /&gt;
&lt;br /&gt;
==Download via git und Kommandozeile==&lt;br /&gt;
In einer bash (Linux Kommandozeile bzw. cygwin Kommandozeile) kann man sich auch alle Unterprojekte der MetaModels via git clonen. Man sollte jedoch vorher in den Ordner wechseln, wohin die Projekte heruntergeladen werden sollen.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Linux'''  !! '''MacOS'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
In Benutzerverzeichnis wechseln und für den Pull ein Verzeichniss anlegen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir MetaModels&lt;br /&gt;
cd MetaModels&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
In Benutzerverzeichnis wechseln und für den Pull ein Verzeichniss anlegen.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ~&lt;br /&gt;
mkdir MetaModels&lt;br /&gt;
cd MetaModels&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Alle MetaModel Repos holen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `wget -qO- https://api.github.com/orgs/MetaModels/repos | \&lt;br /&gt;
grep clone_url | \&lt;br /&gt;
cut -d \&amp;quot; -f4`; do \&lt;br /&gt;
git clone $i; \&lt;br /&gt;
done;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
Alle MetaModel Repos holen&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `curl https://api.github.com/orgs/MetaModels/repos | \&lt;br /&gt;
grep clone_url | \&lt;br /&gt;
cut -d \&amp;quot; -f4`; do \&lt;br /&gt;
git clone $i; \&lt;br /&gt;
done;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Installation=&lt;br /&gt;
Die zu installieren Ordner und Dateien müssen zur Installation im Contao-System wie folgt hochgeladen werden:&lt;br /&gt;
{| style=&amp;quot;width:80%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! '''Module''' (/system/modules) !! '''Drivers''' (/system/drivers)&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* generalDriver&lt;br /&gt;
* justtextwidgets&lt;br /&gt;
* metamodels&lt;br /&gt;
* metamodels_boilerplate&lt;br /&gt;
* metamodelsattribute_alias&lt;br /&gt;
* metamodelsattribute_checkbox&lt;br /&gt;
* metamodelsattribute_combinedvalues&lt;br /&gt;
* metamodelsattribute_color&lt;br /&gt;
* metamodelsattribute_country&lt;br /&gt;
* metamodelsattribute_decimal&lt;br /&gt;
* metamodelsattribute_file&lt;br /&gt;
* metamodelsattribute_geoprotection&lt;br /&gt;
* metamodelsattribute_langcode&lt;br /&gt;
* metamodelsattribute_longtext&lt;br /&gt;
* metamodelsattribute_numeric&lt;br /&gt;
* metamodelsattribute_rating&lt;br /&gt;
* metamodelsattribute_select&lt;br /&gt;
* metamodelsattribute_tags&lt;br /&gt;
* metamodelsattribute_text&lt;br /&gt;
* metamodelsattribute_timestamp&lt;br /&gt;
* metamodelsattribute_translatedalias&lt;br /&gt;
* metamodelsattribute_translatedfile&lt;br /&gt;
* metamodelsattribute_translatedlongtext&lt;br /&gt;
* metamodelsattribute_translatedselect&lt;br /&gt;
* metamodelsattribute_translatedtags&lt;br /&gt;
* metamodelsattribute_translatedtext&lt;br /&gt;
* metamodelsattribute_url&lt;br /&gt;
* metamodelsfilter_checkbox&lt;br /&gt;
* metamodelsfilter_fromto&lt;br /&gt;
* metamodelsfilter_range&lt;br /&gt;
* metamodelsfilter_select&lt;br /&gt;
* metamodelsfilter_tags&lt;br /&gt;
* metamodelsfilter_text&lt;br /&gt;
* metapalettes&lt;br /&gt;
* multicolumnwizard&lt;br /&gt;
|&lt;br /&gt;
* DC_General.php&lt;br /&gt;
|}&lt;br /&gt;
Danach muss mittels des Installtools ein Update der Datenbank gemacht werden.&lt;br /&gt;
&lt;br /&gt;
=Backend Ansichten=&lt;br /&gt;
&lt;br /&gt;
===Leeres MetaModel===&lt;br /&gt;
[[Datei:MetaModels_Backend_System.png|right|600px]]&lt;br /&gt;
Nach Aktualisierung der Datenbank erscheint '''MetaModels''' neu als eigenständige Einstellung in der Backend-Navigation links.&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;
===Erweiterungsverwaltung===&lt;br /&gt;
[[Datei:MetaModels_Backend_System_ER.png|right|600px]]&lt;br /&gt;
In der Erweiterungsverwaltung findet sich hingegen nichts, was auf MetaModels hinweist. Aber das ist gut so (Stand Mai 2013).&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;
===MetaModel mit null Datensätzen===&lt;br /&gt;
[[Datei:MetaModels_Backend_System_Beispiel.png|right|600px]]&lt;br /&gt;
Nachdem ein erstes neues MetaModel erstellt wurde, erscheint folgende Darstellung:&lt;br /&gt;
Weiterführende Informationen zu einem einfachen Praxisbeispiel findet man unter [[MetaModels_Beispielprojekt|MetaModels Beispielprojekt]]&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;
=Konfiguration=&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Attribute===&lt;br /&gt;
[[File:icons_attribute.png|left|link=|32px]]&lt;br /&gt;
Zur  [[MetaModels_Backend:_Attribute|Dokumentation der Attribute]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Ausgabevorgaben===&lt;br /&gt;
[[File:icons_ausgabevorgaben.png|left|link=|32px]]&lt;br /&gt;
Den Überblick findest du [[MetaModels_Backend:_Ausgabevorgaben|hier]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Eingabemaske (fka Paletteneinstellungen)===&lt;br /&gt;
[[File:icons_paletteneinstellungen.png|left|link=|32px]]&lt;br /&gt;
Den Überblick findest du [[MetaModels_Backend:_Eingabemaske|hier]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Filter===&lt;br /&gt;
[[File:icons_filter.png|left|link=|32px]]&lt;br /&gt;
Zum [[MetaModels_Backend:_Filter|Überblick über die Filter]].&lt;br /&gt;
&lt;br /&gt;
===Dokumentation der Ansichtseinstellungen===&lt;br /&gt;
[[File:icons_ansichtseinstellungen.png|left|link=|32px]]&lt;br /&gt;
Zum [[MetaModels_Backend:_Ansichtseinstellungen|Überblick der Ansichtseinstellungen]].&lt;br /&gt;
&lt;br /&gt;
=Basics=&lt;br /&gt;
Einführende Beispiele, wie man MetaModels einrichten und konfigurieren kann, findet man hier:&lt;br /&gt;
# [[MetaModels_Beispiel_1| Backend einrichten]] - am Beispiel einer Musiksammlung, Eingeben der Sammlung&lt;br /&gt;
# [[MetaModels_Beispiel_2| Frontend einrichten]] - Die Inhalte im Frontend anzeigen (Liste und Detail)&lt;br /&gt;
# [[MetaModels_Beispiel_3| Weitere Filter einrichten]] – Inhalte auf Published setzen, einfache Select-Filter&lt;br /&gt;
# [[MetaModels_Beispiel_4| Weiteres MetaModels einrichten]] - komplexe Select-Filter einsetzen&lt;br /&gt;
# [[MetaModels Insert-Tags| Insert-Tags]] - Insert-Tags in MetaModels&lt;br /&gt;
&lt;br /&gt;
=Tipps und Tricks=&lt;br /&gt;
Umsetzung-Beispiele, wie man MetaModels ausbauen kann, findet man hier:&lt;br /&gt;
# [[MetaModels_Beispiel:_Übersetzter_select| Übersetzer select]] - &amp;quot;Übersetzter select&amp;quot;-Attribut eingerichtet werden.&lt;br /&gt;
# [[MetaModels_Beispiel:_Referenced_items| Referenced items]] - MetaModels miteinder verknüpfen&lt;br /&gt;
# [[MetaModels_Beispiel:_FE-Template_anpassen| FE-Template anpassen]] - FE-Template anpassen&lt;br /&gt;
&lt;br /&gt;
=Frontendausgabe=&lt;br /&gt;
{{Hinweis|Die Dokumentation sollte in eine andere Seite ausgelagert werden}}&lt;br /&gt;
----&lt;br /&gt;
started by: [[Benutzer:Planepix|Planepix]] 00:49, 28. Nov. 2012 (CET)&amp;lt;br&amp;gt;&lt;br /&gt;
completed by [[Benutzer:Luis|Luis]], [[Benutzer:lucina|Lucina]]&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items</id>
		<title>MetaModels Beispiel: Referenced items</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items"/>
				<updated>2014-11-26T11:53:59Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* Lösungsansatz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MetaModels|T2]]&lt;br /&gt;
=MetaModels miteinander verknüpfen=&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
Es gibt ein MetaModel mit &amp;quot;Kunden&amp;quot; (mm_customers) und eines mit &amp;quot;Projekte&amp;quot; (mm_projects). mm_projects enthält ein Attribut &amp;quot;customer&amp;quot; vom Typ &amp;quot;select&amp;quot;, welches die in mm_customer erfassten Kunden anzeigt. Über dieses Feld wird das Projekt mit dem Kunden verknüpft.&lt;br /&gt;
==Aufgabenstellung==&lt;br /&gt;
Man möchte, dass auf der Detailansicht des Kunden, auch die jeweils dazu gehörigen Projekte angezeigt werden. Von dort möchte man auch per Link auf die Detailansicht des spezifischen Projektes springen können.&lt;br /&gt;
&lt;br /&gt;
==Lösungsansatz==&lt;br /&gt;
Nebst den spezifischen Kunden-Detailinformationen sollen die Projekte gelistet darunter erscheinen. Die Projekte werden jeweils mit einem Titel-Link (h3), einer Kurzbeschreibung und der dazu gehörigen Bildgalerie angezeigt. Die Projekte werden überdies über einen Filter sortiert: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array()); &amp;lt;/source&amp;gt;&lt;br /&gt;
In diesem Fall ist '10' die ID des Filters im MetaModels 'mm_projects'. Der Filter sorgt dafür, dass die Projekte chronologisch aufgelistet werden.&lt;br /&gt;
&lt;br /&gt;
Das MetaModels-Template könnte wie folgt aussehen:&lt;br /&gt;
{{Hinweis|Beachte das in der TNG Version MetaModels auch auf Namespace umgestellt wurde und die Factory Aufrufe entsprechend anders lauten müssen: \MetaModels\Factory s.u.}}&lt;br /&gt;
&lt;br /&gt;
'''Quelltext ohne Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = MetaModelFactory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new MetaModelFilterRuleSearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Quelltext mit Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = \MetaModels\Factory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	<entry>
		<id>https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items</id>
		<title>MetaModels Beispiel: Referenced items</title>
		<link rel="alternate" type="text/html" href="https://de.contaowiki.org/MetaModels_Beispiel:_Referenced_items"/>
				<updated>2014-11-17T15:49:24Z</updated>
		
		<summary type="html">&lt;p&gt;Zonky: /* Lösungsansatz */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:MetaModels|T2]]&lt;br /&gt;
=MetaModels miteinander verknüpfen=&lt;br /&gt;
==Ausgangslage==&lt;br /&gt;
Es gibt ein MetaModel mit &amp;quot;Kunden&amp;quot; (mm_customers) und eines mit &amp;quot;Projekte&amp;quot; (mm_projects). mm_projects enthält ein Attribut &amp;quot;customer&amp;quot; vom Typ &amp;quot;select&amp;quot;, welches die in mm_customer erfassten Kunden anzeigt. Über dieses Feld wird das Projekt mit dem Kunden verknüpft.&lt;br /&gt;
==Aufgabenstellung==&lt;br /&gt;
Man möchte, dass auf der Detailansicht des Kunden, auch die jeweils dazu gehörigen Projekte angezeigt werden. Von dort möchte man auch per Link auf die Detailansicht des spezifischen Projektes springen können.&lt;br /&gt;
&lt;br /&gt;
==Lösungsansatz==&lt;br /&gt;
Nebst den spezifischen Kunden-Detailinformationen sollen die Projekte gelistet darunter erscheinen. Die Projekte werden jeweils mit einem Titel-Link (h3), einer Kurzbeschreibung und der dazu gehörigen Bildgalerie angezeigt. Die Projekte werden überdies über einen Filter sortiert: &lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;$objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array()); &amp;lt;/source&amp;gt;&lt;br /&gt;
In diesem Fall ist '10' die ID des Filters im MetaModels 'mm_projects'. Der Filter sorgt dafür, dass die Projekte chronologisch aufgelistet werden.&lt;br /&gt;
&lt;br /&gt;
Das MetaModels-Template könnte wie folgt aussehen:&lt;br /&gt;
{{Hinweis|Beachte das in der TNG Version MetaModels auch auf Namespace umgestellt wurde und die Factory Aufrufe entsprechend anders lauten müssen: \MetaModels\Factory s.u.}}&lt;br /&gt;
&lt;br /&gt;
'''Quelltext ohne Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = MetaModelFactory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new MetaModelFilterRuleSearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Quelltext mit Namespace:'''&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
function getProjectsByCustomer($strAlias, $format='html5')&lt;br /&gt;
{&lt;br /&gt;
  $objMetaModel = \MetaModel\Factory::byTableName('mm_projects');&lt;br /&gt;
  $objFilter = $objMetaModel-&amp;gt;prepareFilter(10, array());&lt;br /&gt;
  $objFilter-&amp;gt;addFilterRule(new \MetaModels\Filter\Rules\SearchAttribute($objMetaModel-&amp;gt;getAttribute('customer'), $strAlias, $objMetaModel-&amp;gt;getAvailableLanguages()));&lt;br /&gt;
  $objItems = $objMetaModel-&amp;gt;findByFilter($objFilter);&lt;br /&gt;
  return $objItems-&amp;gt;parseAll($format, $objMetaModel-&amp;gt;getView(3));&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;customer_detailview&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?php foreach ($this-&amp;gt;data as $arrItem): ?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;detailview&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1 class=&amp;quot;ce_headline&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['customer']; ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;description&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['description']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;year&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['text']['year']; ?&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p class=&amp;quot;url&amp;quot;&amp;gt;&amp;lt;?php echo $arrItem['html5']['url']; ?&amp;gt;&amp;lt;/p&amp;gt; &lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;div class=&amp;quot;referenced_projects&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;Projekte&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;?php foreach (getProjectsByCustomer($arrItem['raw']['alias']) as $arrProjects): ?&amp;gt;&lt;br /&gt;
    &amp;lt;?php if(!empty($arrProjects['raw']['images'])): ?&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;project&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;h3&amp;gt;&lt;br /&gt;
        &amp;lt;a href=&amp;quot;{{env::path}}&amp;lt;?php echo $arrProjects['jumpTo']['url']; ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['project_name']; ?&amp;gt; &lt;br /&gt;
        &amp;lt;/a&amp;gt;&lt;br /&gt;
      &amp;lt;/h3&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['description']; ?&amp;gt;&lt;br /&gt;
      &amp;lt;?php echo $arrProjects[$this-&amp;gt;getFormat()]['images']; ?&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;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Zonky</name></author>	</entry>

	</feed>