Guten Tag,
ich möchte in einem angepassten Event-Template die zu einem Event vergebenen tags als CSS-Klassen ausgeben.
Wie kann ich die Tags zum Event per PHP aufrufen (um sie dann ins Frontend schreiben lassen)?
1000 Dank für Tipps!
Guten Tag,
ich möchte in einem angepassten Event-Template die zu einem Event vergebenen tags als CSS-Klassen ausgeben.
Wie kann ich die Tags zum Event per PHP aufrufen (um sie dann ins Frontend schreiben lassen)?
1000 Dank für Tipps!
Hallo brain1965,
hoffe die Antwort kommt nicht zu spät und kann Dir noch ein wenig helfen.
Also erst mal, gibt es eine hervorragende Anleitung zur Erweiterung "tags" im Contao-Wiki.
Also hier: http://de.contaowiki.org/Tags#Weiter...eine_Tag_Cloud
Dort wird z.B. ein Inserttag vorgeschlagen "{{tags_event::event_id}}".
Hier mal ein Vorschlag, wie ein Event-Template mit dem oben genannten Inserttag aussehen könnte:
(Habe als kleine Zugabe noch das Datum formatiert.)
Dann um den einzelnen Tags noch Klassen zu geben, muss das Template für den Inserttag (tags_inserttag.html5) noch wie folgt angepasst werden:PHP-Code:
<div class="event layout_list<?php echo $this->classList; ?>">
<h2><a href="<?php echo $this->href; ?>" title="<?php echo $this->title; ?> (<?php if ($this->day): echo $this->day; ?>, <?php endif; echo $this->date; if ($this->time): ?>, <?php echo $this->time; endif; ?>)"<?php echo $this->target; ?>><?php echo $this->link; ?></a></h2>
<?php if ($this->time || $this->span): ?>
<div class="info">
<!-- HIER WIRD DAS DATUM FORMATIERT AUSGEGEBEN -->
<div class="date">
<?php
$dateFormatHuman = "d.m.Y";
$timeFormatHuman = "H:i";
$oneMinuteToMidnight = date_format(date_create('2000-01-01 23:59:01'), $timeFormatHuman);
$startDateHuman = $this->parseDate($dateFormatHuman,$this->startTime);
$startTimeHuman=$this->parseDate($timeFormatHuman,$this->startTime);
$endDateHuman=$this->parseDate($dateFormatHuman,$this->endTime);
$endTimeHuman=$this->parseDate($timeFormatHuman,$this->endTime);
$zeitpunkt = "Zeitpunkt:";
if ($startDateHuman == $endDateHuman) {
if ($endTimeHuman == $oneMinuteToMidnight) {
// Single day, no times
echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman</span>";
} else {
if ($startTimeHuman == $endTimeHuman) {
// Single day with start time only
echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman</span> um <span class='time'>$startTimeHuman Uhr</span>";
} else {
// Single day with start and end times
echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman</span> um <span class='time'>$startTimeHuman – $endTimeHuman Uhr</span>";
}
}
} else {
if (($endTimeHuman == $oneMinuteToMidnight) || $startTimeHuman == $endTimeHuman) {
// Multiple day, no times or whole days
echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman – $endDateHuman</span>";
} else {
// Multiple day with times
echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman <span class='time'>($startTimeHuman Uhr)</span>
– $endDateHuman <span class='time'>($endTimeHuman Uhr)</span></span>";
}
};?>
</div>
<!-- HIER WERDEN DIE TAGS ZUM JEWEILIGEN EVENT EINGEFÜGT ANHAND DER EVENT-ID -->
<div class="tags"><span>Tags:</span> {{tags_event::<?php echo $this->id ?>}}</div>
</div>
<?php endif; ?>
<!-- HIER WIRD DER ORT AN DEM DER EVENT STATTFINDET EINGEFÜGT -->
<?php if ($this->location): ?>
<span class="location"><strong>Ort:</strong> <?php echo $this->location; ?></span>
<?php endif; ?>
<!-- HIER WIRD EIN "WEITERLESEN-LINK" EINGEFÜGT -->
<br /><span class="more"><a href="<?php echo $this->href; ?>" title="<?php echo $this->title; ?> (<?php if ($this->day): echo $this->day; ?>, <?php endif; echo $this->date; if ($this->time): ?>, <?php echo $this->time; endif; ?>)"<?php echo $this->target; ?>>Mehr Informationen...</a></span>
</div>
PHP-Code:
<ul class="tagged">
<?php foreach ($this->tags as $tag): ?>
<?php
//UMLAUTE IN DEN TAGS ERSETZTEN BEVOR SIE ALS KLASSE EINGESETZT WERDEN
$umlaute = array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
$replace = array("ae","oe","ue","Ae","Oe","Ue","ss");
$tagname = htmlspecialchars($tag['tag']);
$tagname_class = preg_replace($umlaute, $replace, $tagname);
$tagname_class = strtolower($tagname_class);
?>
<li class="<?php echo $tagname_class ?>"><?php if (strlen($tag['url'])): ?><a href="<?php echo $tag['url']; ?>" alt="<?php echo htmlspecialchars($tag['tag']) . ' (' . $tag['tagcount'] . ')' ?>" title="<?php echo htmlspecialchars($tag['tag']) . ' (' . $tag['tagcount'] . ')' ?>"><?php endif; ?><?php echo $tag['tag']; ?><?php if (strlen($tag['url'])): ?></a><?php endif; ?></li>
<?php endforeach; ?>
</ul>
Geändert von pyretta (03.06.2013 um 13:36 Uhr)
Hallo pyretta,
vielen Dank für die Tipps.
Ich komme leider nicht sofort zum Testen, aber das sieht sehr vielversprechend aus!
Bitte sehr, helfe gerne wenn ich kann.
Wenn Du es getestet hast, kannst Du Dich ja nochmal melden, und sagen ob es geklappt hat.
Ich habe es bis jetzt nur mit den News ausprobiert. Aber mit den Events sollte es prinzipiell genau so gehen, daher dachte ich, teile ich Dir meine Lösung mit und adaptiere es auf Events.
Grüße,
pyretta
Ich habe unter Contao 3.2.7 mit der Erweiterung Tags Version 3.2.2 das template event_default_tags.hml5 erweitert:
es wird in der class Definition nach der Erstellung nur zusätzlichPHP-Code:
<!-- Tags als CSS class mit einbinden -->
<?php $tagsammel =""; ?>
<?php foreach ($this->taglist as $tag): ?>
<?php
//UMLAUTE IN DEN TAGS ERSETZTEN BEVOR SIE ALS KLASSE EINGESETZT WERDEN
$umlaute = array("/ä/","/ö/","/ü/","/Ä/","/Ö/","/Ü/","/ß/");
$replace = array("ae","oe","ue","Ae","Oe","Ue","ss");
$tagname = htmlspecialchars($tag[tag]);
$tagname_class = preg_replace($umlaute, $replace, $tagname);
$tagname_class = strtolower($tagname_class);
$tagsammel .= " ".$tagname_class;
?>
<?php endforeach; ?>
<!-- Tags als CSS class mit einbinden ENDE Aufbereitung -->
<div class="event block<?php echo $tagsammel; echo $this->class; ?>">
..
..eingebunden.PHP-Code:
echo $tagsammel;
Damit erhalte ich alle tags als zusätzliche CSS class pro event.
statt den ganzen zeichenersetzungen kannst du auch die funktion standardize() verwenden
Gesendet von meinem GT-I9505 mit Tapatalk
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Lesezeichen