Contao-Camp 2024
Ergebnis 1 bis 5 von 5

Thema: tl_calendar_events.php - Endzeit nur anzeigen, wenn eingegeben

  1. #1
    Contao-Nutzer Avatar von mandrael
    Registriert seit
    29.06.2009.
    Ort
    Salzburg, Austria
    Beiträge
    224

    Standard tl_calendar_events.php - Endzeit nur anzeigen, wenn eingegeben

    Hallo,

    in tl_calendar_events.php befindet sich folgender Abschitt:

    PHP-Code:
        /**
         * Automatically set the end time if not set
         *
         * @param mixed         $varValue
         * @param DataContainer $dc
         *
         * @return string
         */
        
    public function setEmptyEndTime($varValueDataContainer $dc)
        {
            if (
    $varValue === null)
            {
                
    $varValue $dc->activeRecord->startTime;
            }

            return 
    $varValue;
        } 
    Dieser sorgt dafür, dass wenn die Endzeit leer ist, Endzeit gleich Anfangszeit gesetzt wird. Ich weiß nicht wozu das gut ist, aber es verhindert, dass die Endzeit eines Events in einem Template normal verwendet werden kann. Wenn keine im BE angegeben wurde, sollte auch keine auf der Webseite erscheinen.
    Man müsste also ins Template extra eine Abfrage einbauen, dass die Endzeit nicht dargestellt wird, wenn sie gleich Anfangszeit ist.
    Kann ich dieses Skript irgendwie updatesicher neutralisieren?

    Liebe Grüße, Michael
    Geändert von mandrael (12.09.2021 um 01:38 Uhr)

  2. #2
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    in meinen Installationen ist dies wie gewünscht ... also, wenn keine Endzeit angeführt ist, dann wird im Frontend auch keine ausgegeben. Ist eine Endzeit angegeben, dann wird diese im Frontend ausgegeben.

    Beginn ... 18:00
    Ende ... keine Eingabe
    » Frontend = 18:00

    Beginn ... 18:00
    Ende ... 22:00
    » Frontend = 18:00-22:00

    ggf. Updates durchführen?
    Oder hast du Erweiterungen installiert, die dieses Verhalten aus dem Core abändern?
    Grüsse
    Bernhard


  3. #3
    Contao-Nutzer Avatar von mandrael
    Registriert seit
    29.06.2009.
    Ort
    Salzburg, Austria
    Beiträge
    224

    Standard

    Lieber Bernhard,
    danke für deine Antwort. Ich habe das calendar-event-booking-bundle von markocupic installiert und habe umfangreiche Änderungen am Upcoming-Template und event_full Template vorgenommen und zusätzliche Datums- und Zeitfelder definiert, damit die Anforderungen erfüllt sind.
    Es klappt alles soweit sehr gut, bis eben auf das Feld „endTime“. Das kann ich nicht einbinden, da immer startTime ausgegeben wird, wenn es leer ist. Wenn leer, sollte es aber im Template nicht angezeigt werden.
    Ich habe im Original event_full Template nachgesehen, aber hier steht einfach nur „time“. Das muss also irgendwie im Hintergrund definiert werden.

    Eigentlich fehlt mir nur die Info, wie ich endTime im Template ausblenden kann, wenn es im BE nicht ausgefüllt wird.

    Liebe Grüße, Michael

  4. #4
    Community-Moderator & Contao-Urgestein Avatar von derRenner
    Registriert seit
    23.10.2012.
    Ort
    hoRn|waldviertel
    Beiträge
    2.853
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Code:
    <?php if ($this->startTime !== $this->endTime): echo $this->startTime; endif; ?>
    Grüsse
    Bernhard


  5. #5
    Contao-Nutzer Avatar von mandrael
    Registriert seit
    29.06.2009.
    Ort
    Salzburg, Austria
    Beiträge
    224

    Standard

    Lieber Bernhard,
    danke dir, ich habe es ähnlich versucht, aber es zeigte immer die Endzeit an, auch wenn das Feld leer war.
    Es hat sich auch gezeigt, warum (Startzeit 15:00, Endzeit-Feld ist leer):

    PHP-Code:
    <?php echo $this->startTime; echo " "; echo $this->endTime?><br>
    <?php echo $this->parseDate('H:i'$this->startTime); echo " "; echo $this->parseDate('H:i'$this->endTime); ?>

    führt zur Ausgabe:

    1632402000 1632661200 --> unterschiedlich
    15:00 15:00 --> gleich
    Ich habe jetzt auf Basis deines Codebeispiels das Ganze nochmal probiert, aber diesmal parseDate für php if/else verwendet:

    PHP-Code:
    <?php if ($this->parseDate('H:i'$this->startTime) !== $this->parseDate('H:i'$this->endTime)):
        echo 
    " von "; echo $this->parseDate('H:i'$this->startTime);
        echo 
    " bis "; echo $this->parseDate('H:i'$this->endTime); 
        else: echo 
    " ab "; echo $this->parseDate('H:i'$this->startTime);
    endif; 
    ?>
    Das funktioniert jedenfalls wie gewünscht:
    Wenn eine Endzeit eingegeben wird, wird die Zeit als "von ... bis ..." angezeigt.
    Wird keine Endzeit eingegeben, als "ab ..."

    Liebe Grüße, Michael

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
  •