Ergebnis 1 bis 17 von 17

Thema: Fehler bei der Darstellung von Uhrzeit in Events

  1. #1
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard Fehler bei der Darstellung von Uhrzeit in Events

    Hallo,

    wenn ich bei einem Event keine Uhrzeit eingebe, also ohne den Haken bei "Zeit hinzufügen, wird es im Kalender korrekt angezeigt (ohne Uhrzeit) aber in der Eventliste und der Einzelansicht wird trotzdem eine Uhrzeit hinzugefügt. Die Uhrzeit ist dann immer 00:00 Uhr bei der Startzeit und 23:59 Uhr bei der Endzeit.
    Wir zeigen in der Eventliste alle Termine des laufenden Jahres an und da sind häufig Termine dabei, bei denen die Uhrzeit noch nicht feststeht. Aber die Mitglieder sollen sich schon mal vorab diesen Tag reservieren, deshalb möchte ich Termine auch ohne Uhrzeit in der Eventliste und Einzelansicht darstellen können.
    Was kann ich tun, damit Termine auch ohne Uhrzeit in der Eventliste und der Einzelansicht dargestellt werden?
    Für Hinweise zur Lösung meines Anliegens wäre ich sehr dankbar.


    Gruß
    Thomas


    //Moderation: Thema in das entsprechende Unterforum verschoben.
    Geändert von Thomasge (25.10.2018 um 15:10 Uhr)

  2. #2
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Welches Template verwendest du in der EventList?
    Evtl. muss man darin die Uhrzeit für 'ganztägige' Events ausblenden.

  3. #3
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    ich verwende das Template event_list.html5 für die Darstellung im FE mit folgendem Code:
    Code:
    <div class="event layout_list<?= $this->classList ?>" itemscope itemtype="http://schema.org/Event">
        <p class="list_date"><?php echo $this->parseDate("d.m.Y ", $this->startDate); ?></p>
        <p class="list_day"><?php echo $this->parseDate("D. ", $this->startDate); ?></p>
        <p class="list_time"><?php echo $this->parseDate("H:i ", $this->startTime); ?> Uhr</p>
        <p class="list_member"><?php echo $this->membership; ?></p>
        <p class="list_local"><?php echo $this->location; ?></p>
        <p class="list_place"><?php echo $this->localplace; ?></p>
        <p class="list_action"><?php echo $this->actiontitle; ?></p>
        <p class="list_info"><?php echo $this->detailinfo; ?></p>
    </div>
    Danke!



    Gruß
    Thomas

  4. #4
    Administrator Avatar von xchs
    Registriert seit
    19.06.2009.
    Beiträge
    14.557
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Code:
    <?php if ($this->time): ?><p class="list_time"><?php echo $this->parseDate("H:i "$this->startTime); ?> Uhr</p><?php endif; ?>
    Contao Community Administrator

    [Unterstützungsmöglichkeiten]

  5. #5
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Danke, das hat schon einmal sehr gut geklappt. Aber wenn ich jetzt einen Termin habe der über den gleichen Tag hinaus geht, dann wird die Uhrzeit nicht angezeigt, so z.B.:

    Termin ohne Start- und Endzeit -> Startzeit wie bisher 00:00 Uhr wird nicht angezeigt
    Termin 22.11.2018 17:00 Uhr bis 22.11.2018 23:59 Uhr -> Startzeit wird angezeigt
    Termin 22.11.2018 17:00 Uhr bis 23.11.2018 00:01 Uhr -> keine Anzeige von Startzeit

    Gibt es noch eine Lösung, dass die Startzeit angezeigt wird, wenn der Termin über den Tag hinaus geht, da wir immer wieder solche Termine haben? Diese Termine mit Start- und Endzeit werden bei uns in der Einzelansicht dargestellt.
    Danke!


    Gruß
    Thomas
    Geändert von Thomasge (25.10.2018 um 16:06 Uhr)

  6. #6
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Du kannst testweise mal
    HTML-Code:
    <!-- <pre><?php $this->showTemplateVars(); ?></pre> -->
    in dein Template schreiben, dann im Quelltext der Seite nachsehen, welche Variablen zur Verfügung stehen, bzw. was in deinen Testfällen eingetragen ist. Damit kannst du die Bedingungen dann so formulieren wie du es brauchst.

    Du willst bei Terminen mit unterschiedlichem DATUM bei Start und Ende die Startzeit nicht anzeigen?
    Dann könntest du mit
    PHP-Code:
    var $start $this->parseDate("D"$this->startDate);
    var 
    $end $this->parseDate("D"$this->endDate); 
    den Datumsteil beider Zeiten in Variablen schreiben und die in deiner Bedingung vergleichen.

  7. #7
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Zitat Zitat von folkfreund Beitrag anzeigen
    Du kannst testweise mal
    HTML-Code:
    <!-- <pre><?php $this->showTemplateVars(); ?></pre> -->
    in dein Template schreiben, dann im Quelltext der Seite nachsehen, welche Variablen zur Verfügung stehen, bzw. was in deinen Testfällen eingetragen ist. Damit kannst du die Bedingungen dann so formulieren wie du es brauchst.

    Du willst bei Terminen mit unterschiedlichem DATUM bei Start und Ende die Startzeit nicht anzeigen?
    Dann könntest du mit
    PHP-Code:
    var $start $this->parseDate("D"$this->startDate);
    var 
    $end $this->parseDate("D"$this->endDate); 
    den Datumsteil beider Zeiten in Variablen schreiben und die in deiner Bedingung vergleichen.
    Bei "Du willst bei Terminen mit unterschiedlichem DATUM bei Start und Ende die Startzeit nicht anzeigen?" hier möchte ich schon die Startzeit angeben.

    Mein Problem ist eigentlich, wenn ich im BE keine Startzeit angebe (kein Haken bei Zeit hinzufügen gesetzt ist), dass im FE immer als Uhrzeit 00:00 Uhr ausgegeben wird.

    Wenn ich ins Template den Code
    PHP-Code:
    <?php if ($this->time): ?><?php echo $this->parseDate("H:i "$this->startTime); ?> Uhr<?php endif; ?>
    einbaue, erhalte ich zwar die Uhrzeit 00:00 Uhr nicht mehr und das Feld für die Startzeit im FE bleibt auch leer, aber dadurch habe ich jetzt ein anderes Problem. Denn wenn ein Termin z.B. die Startzeit an einem bestimmten Tag hat und die Endzeit am nächsten Tag ist, dann bleibt das Feld für die Startzeit im FE leer. Wenn ich z.B. einen Termin habe wo die Startzeit und die Endzeit am gleichen Tag sind, dann funktioniert es wie gewünscht und die Startzeit wird ausgegeben.
    Gibt es hierzu eine Möglichkeit dieses Verhalten zu beheben?


    Danke, Gruß Thomas

  8. #8
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Ich habe jetzt noch weitere Versuche unternommen und unter anderem dabei festgestellt, dass immer wenn es einen mehrtägigen Termin gibt keine Startzeiten bei allen Terminen in der Eventliste angezeigt werden. Der einzige Code der funktioniert ist der Nachfolgende Code, aber bei diesem Code wird "00:00" als Startzeit ausgegeben, obwohl der Haken bei "Zeit hinzufügen" deaktiviert ist.

    PHP-Code:
    <p><?php echo $this->parseDate("H:i "$this->startTime); ?> Uhr</p>
    Jetzt eine Frage zu PHP, weil dazu meine PHP-Kenntnisse nicht ausreichend sind.
    Ist es mit PHP möglich diesen Code so zu erweitern, dass abgefragt wird, wenn die Startzeit 00:00 und die Endzeit 23:59 ist, die Startzeit der Termine die diese Bedingung erfüllen ausgeblendet werden und bei allen anderen Terminen soll die Startzeit bei den Terminen eingeblendet werden über den oben aufgeführten Code.

    Ist meine Vorstellung für die PHP Code-Erweiterung überhaupt realisierbar? Wenn ja, könnte mir da jemand Hilfestellung geben?
    Danke!


    Gruß
    Thomas

  9. #9
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Siehe meine Anregung oben: https://community.contao.org/de/show...l=1#post485510

    Versuch es mal mit
    PHP-Code:
    <p><?php
      
    var $start $this->parseDate("H:i"$this->startDate); 
      var 
    $end $this->parseDate("H:i"$this->endDate);
      if (!((
    $start == "00:00") && ($end == "23:59"))) {
         echo 
    $start." ";    //echo $this->parseDate("H:i ", $this->startTime);
      
    }
    ?></p>
    (ungetestet)

  10. #10
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    danke für den Code, aber er funktioniert leider nicht. Denn bei den beiden nachfolgenden Zeilen bekomme ich die Fehlermeldung "Syntax error, unexpected T_VAR". Kann es vielleicht sein, dass start und end anders benannt werden müssen? Aber wie und wo bekomme ich diese Info heraus?

    PHP-Code:
    var $start $this->parseDate("H:i"$this->startDate); 
    var 
    $end $this->parseDate("H:i"$this->endDate); 
    Für Hinweise dazu wäre ich sehr dankbar.


    Gruß
    Thomas

  11. #11
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Sorry, lass einfach das 'var' am Anfang der Zeilen weg. Kommt davon, wenn man dauernd zwischen den Sprachen wechselt

  12. #12
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Danke, jetzt bin ich schon einen Schritt weitergekommen, zumindest soweit, dass ich keinen "Syntax error" mehr bekomme.
    Aber wenn ich wie nachfolgend den Code definiere, erhalte ich bei allen Terminen die Uhrzeit 00:00 in der Eventliste.
    PHP-Code:
    <p><?php
    $start 
    $this->parseDate("H:i"$this->startDate); 
    $end $this->parseDate("H:i"$this->endDate);
      if (!((
    $start == "00:00") && ($end == "23:59"))) {
         echo 
    $start." ";
      }
    ?></p>
    Wenn ich wie nachfolgend den Code definiere, erhalte ich bei Terminen mit der Startzeit 00:00 und der Endzeit 23:59 weiterhin die Ausgabe 00:00 als Startzeit in der Eventliste. Also keine Änderung zum ursprünglichen Verhalten.
    PHP-Code:
    <p><?php
    $start 
    $this->parseDate("H:i"$this->startDate); 
    $end $this->parseDate("H:i"$this->endDate);
      if (!((
    $start == "00:00") && ($end == "23:59"))) {
         echo 
    $this->parseDate("H:i "$this->startTime);
      }
    ?></p>
    Ich vermute mal, dass ich eventuell noch eine 2.IF Anweisung benötige. In der definiert ist, dass die Startzeit angezeigt werden soll, wenn die Bedingung der 1. IF Anweisung nicht erfüllt ist. Nur weiß ich eben nicht, wie man dies in PHP umsetzt.

    Danke!


    Gruß
    Thomas

  13. #13
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Die beiden Code-Varianten sind ja auch identisch, nur dass du in der 2. denselben Wert nochmal berechnest.

    Schreib doch mal die verschiedenen Varianten genau auf mit Beispiel, was dabei in $start und $end steht (kannst du dir ja genau so ausgeben lassen), dann werden wir schon die richtige Bedingung finden.

    PS:
    Falls die 00:00 jetzt zusätzlich bei Terminen ohne eingetragener Zeit erscheint, dann musst du wieder "if ($this->time)" ergänzen, also
    PHP-Code:
    <p><?php 
    if ($this->time) {
      
    $start $this->parseDate("H:i"$this->startDate);  
      
    $end $this->parseDate("H:i"$this->endDate); 
      if (!((
    $start == "00:00") && ($end == "23:59"))) { 
        echo 
    $start." "
      } 
    }
    ?></p>
    Geändert von folkfreund (28.10.2018 um 12:59 Uhr)

  14. #14
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Danke für die Rückantwort.

    PHP-Code:
    <p><?php 
    if ($this->time) {
      
    $start $this->parseDate("H:i"$this->startDate);  
      
    $end $this->parseDate("H:i"$this->endDate); 
      if (!((
    $start == "00:00") && ($end == "23:59"))) { 
        echo 
    $start." "
      } 
    }
    ?></p>
    Bei diesem Code wird bei Terminen die $start 00:00 und $end 23:59 haben oder mehrtägig sind nichts angezeigt und alle anderen Termine haben bei der Startzeit als Uhrzeit jetzt 00:00.

    Ich möchte gerne folgendes erreichen:
    1. Wenn $start 00:00 und $end 23:59 ist, dann soll die Startzeit nicht ausgegeben werden, also leeres Ausgabefeld für die Uhrzeit in der Eventliste.
    2. Wenn $start zwischen 00:00 und 23:59 liegt, dann soll die Startzeit in der Eventliste ausgegeben werden. Das Ganze sollte auch dann noch funktionieren wenn Termine keine Endzeit haben, also wenn Startzeit und Endzeit identisch sind, da wir häufig solche Termine haben. Ebenso wenn der Termin mehrtägig ist (bei meinem alten Code wurde hier keine Uhrzeit ausgegeben).
    Danke!


    Gru0
    Thomas

  15. #15
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Hallo Thomas,

    ich kann das leider aktuell nicht selbst nachstellen, darum bin ich auf deine Infos angewiesen.

    Versuch bitte mal mit folgendem Code, was ausgegeben wird bei
    1. Event ohne Zeitangebe
    2. Event mit Startzeit, ohne Endezeit
    3. Event mit Start und Ende am selben Tag
    4. Event mehrtägig, ohne Startzeit
    5. Event mehrtägig, mit Startzeit


    PHP-Code:
    <p><?php  
    if ($this->time) { 
      
    $start $this->parseDate("H:i"$this->startDate);   
      
    $end $this->parseDate("H:i"$this->endDate);  
      if (!((
    $start == "00:00") && ($end == "23:59"))) {  
        echo 
    $start." ";  
      }  
      echo 
    " (start = ".$start." / end = ".$end.")";
    }
    ?></p>
    Gruß, folkfreund

  16. #16
    Contao-Fan
    Registriert seit
    31.01.2016.
    Ort
    Kaufbeuren
    Beiträge
    473

    Standard

    Danke für die viele Mühe, aber jetzt passt die Ausgabe überhaupt nicht mehr.
    Nach der Eingabe des Codes erhalte ich nun die Anzeige bei der Uhrzeit "00:00 (start = 00:00 / end = 09:42)", wobei end die aktuelle Uhrzeit vom System ist.

    Frage, da ich zu wenig Kenntnisse in PHP habe. Ist es vielleicht möglich im Code folgendes abzufragen:
    1. Wenn die Startzeit 00:00 und Endzeit die 23:59 sind, dann soll keine Ausgabe erfolgen, also leere Startzeit in der Eventliste.
    2. Wenn aber die Startzeit nicht 00:00 und die Endzeit nicht 23:59 sind, dann soll die Startzeit in der Eventliste angezeigt werden.

    Ist solch eine Abfrage mit diesen beiden Bedingungen in einem Code mit PHP umsetzbar?
    Danke!


    Gruß
    Thomas

  17. #17
    Contao-Urgestein Avatar von folkfreund
    Registriert seit
    09.04.2010.
    Beiträge
    1.928

    Standard

    Zitat Zitat von Thomasge Beitrag anzeigen
    Danke für die viele Mühe, aber jetzt passt die Ausgabe überhaupt nicht mehr.
    Nach der Eingabe des Codes erhalte ich nun die Anzeige bei der Uhrzeit "00:00 (start = 00:00 / end = 09:42)", wobei end die aktuelle Uhrzeit vom System ist.
    Hast du verstanden was der Code macht?
    Es hilft nicht, einfach nur irgendwas zu kopieren. Meine "Schnipsel" sind als Anregung gedacht, damit du selbst die Lösung findest...

    Hast du die verschiedenen Testfälle systematisch ausprobiert? Was kommt dabei heraus?

    Es kommt mir komisch vor, dass endDate immer die aktuelle Systemzeit liefert. Hast du mal entspechend meiner Anregung ganz oben nachgeschaut, welche Variablen in dem Skript zur Verfügung stehen? Vielleicht muss man statt endDate etwas anderes nehmen (kann ich z.Zt. nicht selbst ausprobieren).
    PHP-Code:
    <!-- <pre><?php $this->showTemplateVars(); ?></pre> -->
    Zitat Zitat von Thomasge Beitrag anzeigen
    Frage, da ich zu wenig Kenntnisse in PHP habe. Ist es vielleicht möglich im Code folgendes abzufragen:
    1. Wenn die Startzeit 00:00 und Endzeit die 23:59 sind, dann soll keine Ausgabe erfolgen, also leere Startzeit in der Eventliste.
    2. Wenn aber die Startzeit nicht 00:00 und die Endzeit nicht 23:59 sind, dann soll die Startzeit in der Eventliste angezeigt werden.

    Ist solch eine Abfrage mit diesen beiden Bedingungen in einem Code mit PHP umsetzbar?
    Man kann (fast) alles programmieren... Die Frage ist, ob diese Bedingungen tatsächlich alle deine Anwendungsfälle abdecken. Genau deine Anforderung würde man so programmieren:

    PHP-Code:
    <p><?php  
      $start 
    $this->parseDate("H:i"$this->startDate);   
      
    $end $this->parseDate("H:i"$this->endDate);
      
    // Fall 1:
      
    if (($start == "00:00") && ($end == "23:59")) {  
        echo 
    " ";
      }
      
    // Fall 2:
      
    else if (($start != "00:00") && ($end != "23:59")) {
        echo 
    $start." ";
      }
    ?></p>

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
  •