Ergebnis 1 bis 6 von 6

Thema: tags als CSS-Klassen verwenden

  1. #1
    Contao-Nutzer
    Registriert seit
    23.06.2009.
    Beiträge
    173

    Standard tags als CSS-Klassen verwenden

    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!

  2. #2
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    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.)

    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 &ndash; $endTimeHuman Uhr</span>"
                        }
                    }
                } else {
                    if ((
    $endTimeHuman == $oneMinuteToMidnight) || $startTimeHuman == $endTimeHuman) {
                    
    // Multiple day, no times or whole days
                    
    echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman &ndash; $endDateHuman</span>";
                    } else {
                    
    // Multiple day with times
                    
    echo "<strong>$zeitpunkt</strong> <span class='date'>$startDateHuman <span class='time'>($startTimeHuman Uhr)</span> 
                    &ndash; 
    $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>
    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:
    <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)

  3. #3
    Contao-Nutzer
    Registriert seit
    23.06.2009.
    Beiträge
    173

    HTML

    Hallo pyretta,

    vielen Dank für die Tipps.

    Ich komme leider nicht sofort zum Testen, aber das sieht sehr vielversprechend aus!

  4. #4
    Contao-Nutzer
    Registriert seit
    25.05.2010.
    Beiträge
    211

    Standard

    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

  5. #5
    Contao-Nutzer
    Registriert seit
    25.09.2011.
    Ort
    München
    Beiträge
    18

    Beitrag Lösung für Module "Eventliste"

    Ich habe unter Contao 3.2.7 mit der Erweiterung Tags Version 3.2.2 das template event_default_tags.hml5 erweitert:

    PHP-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?>">
    ..
    ..
    es wird in der class Definition nach der Erstellung nur zusätzlich
    PHP-Code:
     echo $tagsammel
    eingebunden.

    Damit erhalte ich alle tags als zusätzliche CSS class pro event.

  6. #6
    Contao-Fan
    Registriert seit
    27.06.2012.
    Beiträge
    600

    Standard

    statt den ganzen zeichenersetzungen kannst du auch die funktion standardize() verwenden

    Gesendet von meinem GT-I9505 mit Tapatalk

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •