In einem MetaModel wurde ein Attribut angelegt, mit dem Events verknüpft werden können. Wie kann ich nun in dem Template des MetaModels die Events mit seiner Detailseite verlinken?
Wäre schön, wenn mir da jemand weiterhelfen könnte?
Druckbare Version
In einem MetaModel wurde ein Attribut angelegt, mit dem Events verknüpft werden können. Wie kann ich nun in dem Template des MetaModels die Events mit seiner Detailseite verlinken?
Wäre schön, wenn mir da jemand weiterhelfen könnte?
Weißt du denn bereits, wie du im Template an die Variablen kommst? Siehe z.B. hier https://readthedocs.org/projects/met...ds/pdf/latest/ 3.1.8 Debug Templates
Versuche mal
Wenn dort Variablen für die Events fehlen, kannst du dir das passende über die Models holen, z.B. Feld jumpTo aus tl_calendar.PHP-Code:
<?php
dump($this->data);
?>
Aktuell sieht es so aus. Das Array liefert mir nur die ID des Events. Wie kann ich daraus den Link zum Detail bekommen? Gibt es da in Contao eine Methode?PHP-Code:
<?php if ( $arrItem['raw']['events_reference'] ): ?>
<div class="ce_accordion">
<div class="toggler">
<div class="inside">
<h3>Termine</h3>
</div>
</div>
<div class="accordion">
<div class="container">
<div class="inside">
<ul>
<?php foreach ( $arrItem['raw']['events_reference'] as $eventReference ) { ?>
<li>
<pre><?php print_r($eventReference); ?></pre>
<?php echo $this->parseDate( 'd.M. Y', $eventReference['startDate'] ); ?>
<?php if ( $eventReference['location'] ): echo ' - ' . $eventReference['location']; endif; ?>
</li>
<?php } ?>
</ul>
</div>
</div>
</div>
</div>
<?php endif; ?>
Da kann dir mm wenig helfen... Bau dir eine kleine Funktion in dein Template, welche eine dB-Abfrage bei tl_events macht in dort das jumpTo rausfischt...
Da kann dir mm wenig helfen... Bau dir eine kleine Funktion in dein Template, welche eine dB-Abfrage bei tl_events macht in dort das jumpTo rausfischt...
@Andreas: ich denke der Link zur Webseite ist effektiver als das gesamte PDF...
Jo, hatte ich nur gerade bei Google gefunden und kopiert. Hier zur Doku http://metamodels.readthedocs.io/de/...templates.html
Mit den Models ist das bestimmt einfacher als mit ner DB-Abfrage, aber ich kenne da auch nicht alle Tricks. Das Archive würde man so bekommen denke ich.
PHP-Code:
$eventReaderPageId = \CalendarEventsModel::findById([deineEventId])->jumpTo;
Oder so.. die Frage war ja, ob MM da was in petto hat..
So was suche ich gerade :)
Müsste das dann nicht funktionieren?PHP-Code:
<?php foreach ( $arrItem['raw']['events_reference'] as $eventReference ) { ?>
<li>
<pre><?php /* print_r($eventReference); */ ?></pre>
<?php echo $this->parseDate( 'd.M. Y', $eventReference['startDate'] ); ?>
<?php if ( $eventReference['location'] ): echo ' - ' . $eventReference['location']; endif; ?>
<?php $eventReaderPageId = \CalendarEventsModel::findById([$eventReference['id']])->jumpTo; ?>
<pre><?php echo $eventReaderPageId; ?></pre>
</li>
<?php } ?>
Sorry, du brauchst die ID von tl_calendar.jumpTo (und diese nur, wenn tl_calendar.source auf default steht). Du musst also erst das Archiv des Events rausfinden und dort findest du die jumpTo-Seiten-Id.
Das geht evtl. auch einfacher, bin da aber im Moment leider überfragt. Mach mal das dump($this->data), damit siehst du vielleicht mehr Variablen und es ist schon irgendwas dabei, was du gebrauchen kannst.PHP-Code:
$eventArchiveJumpTo = \CalendarModel::findById([deineEventPid])->jumpTo;
$readerPageAlias = \PageModel::findById($eventArchiveJumpTo)->alias;
$eventUrl = $readerPageAlias.'/'.deinEventAlias.'.html';
ps Nimm dump(), das ist einfacher als print_r(), weil du damit schon das PRE als Wrapper bekommst https://github.com/contao/core/blob/...tions.php#L464
Das mit dem dump() ist super. Mein Problem ist ja leider, dass mir $this->data bei dem jeweiligen Event in dem dazugehörigen Array keinen direkten Link liefert. So weit mein Verständnis ist, werde ich scheinbar mit Hilfe der gelieferten ID dann via eigener Funktion die entsprechenden Link bauen müssen. Da ist meine Hoffnung, dass mir jemand sagen kann, wie ich anhand einer Event-ID den entsprechenden Detail-Link generieren kann. Da hast Du ja schon einen super Ansatz gegeben, den ich testen werden.
... m.E. gibt es noch eine Tabellenspalte für den Typ, d.h. ob intern oder extern
Ja, das ist tl_calendar_events.source, welches default auf "default" steht mit den anderen Optionen intern, extern, article.