MetaModels/Snippets: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(Werte im DCA vorbelegen)
K (GeShi)
 
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 13: Zeile 13:
 
Beispiel:
 
Beispiel:
  
'''$GLOBALS['TL_LANG']['MSC']['mm_meinmetamodel']['details'] = 'Mein Linktext';'''
+
<syntaxhighlight lang="php">$GLOBALS['TL_LANG']['MSC']['mm_meinmetamodel']['details'] = 'Mein Linktext';</syntaxhighlight>
  
=== Wert vorbelegen ==
+
=== Wert vorbelegen ===
  
Mit einem Eintrag in die /system/config/dcaconfig.php kann man Werte füt Eingabefelder im Backend vorbelegen - beispielsweise ein Datiumsfeld mit dem aktúellen Datum:
+
Mit einem Eintrag in die /system/config/dcaconfig.php kann man Werte für Eingabefelder im Backend vorbelegen - beispielsweise ein Datiumsfeld mit dem aktúellen Datum:
  
'''$GLOBALS['TL_DCA']['mm_meinmetamodel']['fields']['meinattribut']['default'] = time();'''
+
<syntaxhighlight lang="php">$GLOBALS['TL_DCA']['mm_meinmetamodel']['fields']['meinattribut']['default'] = time();</syntaxhighlight>
 +
 
 +
== Templates ==
 +
 
 +
=== Links im Template zusammenbauen ===
 +
 
 +
Oft kommt es vor, dass man Detaillinks anpassen möchte - zum Beispiel im Multidomainkontext, oder falls man von der Übersichtsseite eines MetaModels A auf die Detailseite des Metamodels B springen möchte.
 +
 
 +
Grundsätzlich stehen in Contao dazu eine Reihe von Systemvariablen oder Insert-Tags zur Verfügung, die mann ggf. auch noch mit eigenen Insert-Tags (oder selbstdefinierten Variablen) erweitern kann. Einen Detailink kann man daher auch gut aufbauen, wenn man das Feld Alias eines referenzierten Metamodels nutzt.
 +
 
 +
Grundaufbau eines Links könnte dann sein:
 +
 
 +
<syntaxhighlight lang="php"><a href="{{env::url}}/<sprachvariable>/<pfad/zur/detailseite>/<Alias-von-MetaModel-2>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a></syntaxhighlight>
 +
 
 +
Im Zusammenspiel beispielsweise mit der Erweiterung Inherit_Insert_Tags kann man dabei Variablen für das Sprachkürzel definieren oder einen individuellen Link zum Unterverzeichnis erstellen. Das Beispiel sieht dann wie folgt aus:
 +
 
 +
<syntaxhighlight lang="php"><a href="{{env::url}}/{{iit::langvar}}/{{iit::detailpath}}/<?php echo $tags['mein_aliastag']; ?>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a></syntaxhighlight>
 +
 
 +
=== Bildunterschrift (Caption) in einer Galerie mit ausgeben ===
 +
 
 +
Will man die Bildunterschriften aus der Dateiverwaltung in einer Galerie mit ausgeben, kann man folgende Ergänzung im Template "mm_attr_file.html5" eintragen:
 +
 
 +
<syntaxhighlight lang="php"><?php if (is_array($this->src)): ?>
 +
<ul>
 +
<?php foreach($this->src as $arrFile):
 +
$strTitle = ($arrFile['title']) ? $arrFile['title'] : (($arrFile['alt']) ? $arrFile['alt'] : $arrFile['file']);
 +
$strAlt  = ($arrFile['caption']) ? $arrFile['caption'] : '';
 +
?>
 +
<li class="<?php echo $arrFile['class']; ?>">
 +
<?php if ($this->settings->get('file_showLink')): ?>
 +
<?php if ($this->settings->get('file_showImage')): ?>
 +
<a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['file']; ?>">
 +
<?php else: ?>
 +
<a title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['url']; ?>">
 +
<?php endif; ?>
 +
<?php endif; ?>
 +
 +
<?php if ($this->settings->get('file_showImage')): ?>
 +
<?php if ($arrFile['isGdImage']): ?>
 +
<?php echo $this->generateImage($arrFile['src'], $strAlt); ?>
 +
<?php endif; ?>
 +
<?php else: ?>
 +
<img src="<?php echo $arrFile['icon']; ?>" alt="<?php echo $strAlt; ?>" /> <?php echo $strTitle; ?> <span class="size"><?php echo $arrFile['sizetext']; ?></span>
 +
<?php endif; ?>
 +
 +
<?php if ($this->settings->get('file_showLink')): ?>
 +
</a>
 +
<?php endif; ?>
 +
<figcaption><?php echo $arrFile['caption']; ?></figcaption>
 +
 
 +
</li>
 +
<?php endforeach; ?>
 +
</ul>
 +
<?php endif; ?>
 +
</syntaxhighlight>
 +
 
 +
Dieser Codesnippet '''<figcaption><?php echo $arrFile['caption']; ?></figcaption>''' wird vor dem schliessenden li integriert.
 +
Nun werden die Bildunterschriften in der Galerie mit ausgegeben.

Aktuelle Version vom 2. September 2014, 17:50 Uhr


Snippets

Eine Sammlung hilfreicher Codeschnipsel für MetaModels

Darstellung im Frontend

Individueller Detaillink

Mit einem Eintrag in die /system/langconfig.php ist es möglich, jedem MetaModel einen individuell angepassten Detaillink zu geben.

Beispiel:

$GLOBALS['TL_LANG']['MSC']['mm_meinmetamodel']['details'] = 'Mein Linktext';

Wert vorbelegen

Mit einem Eintrag in die /system/config/dcaconfig.php kann man Werte für Eingabefelder im Backend vorbelegen - beispielsweise ein Datiumsfeld mit dem aktúellen Datum:

$GLOBALS['TL_DCA']['mm_meinmetamodel']['fields']['meinattribut']['default'] = time();

Templates

Links im Template zusammenbauen

Oft kommt es vor, dass man Detaillinks anpassen möchte - zum Beispiel im Multidomainkontext, oder falls man von der Übersichtsseite eines MetaModels A auf die Detailseite des Metamodels B springen möchte.

Grundsätzlich stehen in Contao dazu eine Reihe von Systemvariablen oder Insert-Tags zur Verfügung, die mann ggf. auch noch mit eigenen Insert-Tags (oder selbstdefinierten Variablen) erweitern kann. Einen Detailink kann man daher auch gut aufbauen, wenn man das Feld Alias eines referenzierten Metamodels nutzt.

Grundaufbau eines Links könnte dann sein:

<a href="{{env::url}}/<sprachvariable>/<pfad/zur/detailseite>/<Alias-von-MetaModel-2>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a>

Im Zusammenspiel beispielsweise mit der Erweiterung Inherit_Insert_Tags kann man dabei Variablen für das Sprachkürzel definieren oder einen individuellen Link zum Unterverzeichnis erstellen. Das Beispiel sieht dann wie folgt aus:

<a href="{{env::url}}/{{iit::langvar}}/{{iit::detailpath}}/<?php echo $tags['mein_aliastag']; ?>.<?php echo $GLOBALS['TL_CONFIG']['urlSuffix']; ?> />Linktext</a>

Bildunterschrift (Caption) in einer Galerie mit ausgeben

Will man die Bildunterschriften aus der Dateiverwaltung in einer Galerie mit ausgeben, kann man folgende Ergänzung im Template "mm_attr_file.html5" eintragen:

<?php if (is_array($this->src)): ?>
<ul>
<?php foreach($this->src as $arrFile): 
$strTitle = ($arrFile['title']) ? $arrFile['title'] : (($arrFile['alt']) ? $arrFile['alt'] : $arrFile['file']);
$strAlt   = ($arrFile['caption']) ? $arrFile['caption'] : '';
?>	
<li class="<?php echo $arrFile['class']; ?>">
	<?php if ($this->settings->get('file_showLink')): ?>
		<?php if ($this->settings->get('file_showImage')): ?>
			<a class="cboxElement" data-lightbox="<?php echo $arrFile['lb']; ?>" title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['file']; ?>">
		<?php else: ?>
			<a title="<?php echo $strTitle; ?>" href="<?php echo $arrFile['url']; ?>">
		<?php endif; ?>
	<?php endif; ?>
 
	<?php if ($this->settings->get('file_showImage')): ?>
		<?php if ($arrFile['isGdImage']): ?>
			<?php echo $this->generateImage($arrFile['src'], $strAlt); ?>
		<?php endif; ?>
	<?php else: ?>
		<img src="<?php echo $arrFile['icon']; ?>" alt="<?php echo $strAlt; ?>" /> <?php echo $strTitle; ?> <span class="size"><?php echo $arrFile['sizetext']; ?></span>
	<?php endif; ?>
 
	<?php if ($this->settings->get('file_showLink')): ?>
		</a>
	<?php endif; ?>
<figcaption><?php echo $arrFile['caption']; ?></figcaption>
 
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>

Dieser Codesnippet <figcaption><?php echo $arrFile['caption']; ?></figcaption> wird vor dem schliessenden li integriert. Nun werden die Bildunterschriften in der Galerie mit ausgegeben.

Ansichten
Meine Werkzeuge

Contao Community Documentation

Nein, der Hangout ist noch nicht vorbei, wir schweigen nur. Es heisst ja auch hangout und nicht bryll out.

Christian Schiffler
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge