Contao-Camp 2024
Ergebnis 1 bis 6 von 6

Thema: Zeitgesteuert Inhalte immerwieder anzeigen

  1. #1
    Contao-Nutzer Avatar von A.J.
    Registriert seit
    22.07.2013.
    Ort
    Hamburg
    Beiträge
    11

    Standard Zeitgesteuert Inhalte immerwieder anzeigen

    Hallo zusammen,

    gibt es eine Möglichkeit in Contao Inhalte zu jeden Tag nur zu bestimmte Tageszeit anzuzeigen?

    z.B. möchte ich ein bestimmten Inhalt täglich zwischen 9:30 bis 15:00 Uhr anzeigen und außerhalb dieser Zeit soll ein anderes Inhalt angezeigt werden.

    Danke und Grüße
    A.J.

    Contao 4.9.16

  2. #2
    Contao-Fan
    Registriert seit
    17.11.2012.
    Beiträge
    528

    Standard

    Vielleicht helfen dir dieser Beitrag und Folgende.
    Geändert von peter.fl (03.08.2021 um 22:01 Uhr)

  3. #3
    Alter Contao-Hase Avatar von bizon
    Registriert seit
    16.06.2010.
    Beiträge
    1.123

    Standard

    Hier eine mögliche Lösung:

    1. Inhaltselemte, die zeitgesteuert werden sollen, in einer nicht veröffentlichten Seite erstellen.
    2. Neues Template erstellen - z.B. in: templates/<evtl. unterordner>/timeswitch.html5
      mit folgendem Inhalt:
      PHP-Code:
      <?php
          
      // templates/<evtl. unterordner>/timeswitch.html5 
          // WICHTIG: In der Funktion mktime() die Stunden, Minuten oder Sekunden ohne führende Nullen eintragen.
          //          Bei den Inserttags die Leerzeichen zwischen den geschweiften Klammern entfernen und IDs der Inhaltselemente anpassen.
          
          
      $start  mktime9300date("m"), date("d"), date("Y"));   // Startzeit täglich - 09:30:00 Uhr
          
      $end    mktime(15,  00date("m"), date("d"), date("Y"));   // Endzeit   täglich - 15:00:00 Uhr
          
      $now    time();                                               // Aktuelle Zeit

          
      if ($now $start && $now $end) {
               echo 
      $this->replaceInsertTags('{ {insert_content::174} }');      // zwischen 09:30 und 15:00 Uhr
          
      } else {
               echo 
      $this->replaceInsertTags('{ {insert_content::175} }');      // übrige Zeit
          
      }
      ?>
    3. Der Aufruf des Templates erfolgt mit dem file-Inserttag
      ...im Artikel, in dem die zeitgesteuerten Inhalte angezeigt werden sollen - z.B: mit einem HTML-Element.
      PHP-Code:
      // Leerzeichen zwischen den geschweiften Klammern entfernen

      { {file::<evtlunterordner>/timeswitch.html5} } 

  4. #4
    Contao-Nutzer Avatar von A.J.
    Registriert seit
    22.07.2013.
    Ort
    Hamburg
    Beiträge
    11

    Standard

    Zitat Zitat von bizon Beitrag anzeigen
    Hier eine mögliche Lösung:

    1. Inhaltselemte, die zeitgesteuert werden sollen, in einer nicht veröffentlichten Seite erstellen.
    2. Neues Template erstellen - z.B. in: templates/<evtl. unterordner>/timeswitch.html5
      mit folgendem Inhalt:
      PHP-Code:
      <?php
          
      // templates/<evtl. unterordner>/timeswitch.html5 
          // WICHTIG: In der Funktion mktime() die Stunden, Minuten oder Sekunden ohne führende Nullen eintragen.
          //          Bei den Inserttags die Leerzeichen zwischen den geschweiften Klammern entfernen und IDs der Inhaltselemente anpassen.
          
          
      $start  mktime9300date("m"), date("d"), date("Y"));   // Startzeit täglich - 09:30:00 Uhr
          
      $end    mktime(15,  00date("m"), date("d"), date("Y"));   // Endzeit   täglich - 15:00:00 Uhr
          
      $now    time();                                               // Aktuelle Zeit

          
      if ($now $start && $now $end) {
               echo 
      $this->replaceInsertTags('{ {insert_content::174} }');      // zwischen 09:30 und 15:00 Uhr
          
      } else {
               echo 
      $this->replaceInsertTags('{ {insert_content::175} }');      // übrige Zeit
          
      }
      ?>
    3. Der Aufruf des Templates erfolgt mit dem file-Inserttag
      ...im Artikel, in dem die zeitgesteuerten Inhalte angezeigt werden sollen - z.B: mit einem HTML-Element.
      PHP-Code:
      // Leerzeichen zwischen den geschweiften Klammern entfernen

      { {file::<evtlunterordner>/timeswitch.html5} } 
    Perfekt, habe ebenfalls ein template erstellt und die gewünschte Inhaltselemente über Insert_content reingeholt. Zwar ist mein php-code etwas anders aber eventuell stelle ich das auf deine Version um.

    Danke für deine Hilfe

    Das war mein Code:
    HTML-Code:
    <?php 
    	//für Samstag
    	if (date('w') == 6) {
    		echo $this->replaceInsertTags('{{insert_content::IDxxx1}}');
    	}
    	//In der Zeit von 6 bis 15:30 Uhr
    
    	if(date('Gi') >= 600 && date('Gi') < 1500) {
    	echo $this->replaceInsertTags('{{insert_content::IDxxx2}}');
    	}
    	if(date('Gi') >= 1500 && date('Gi') <= 2359) {
    	echo $this->replaceInsertTags('{{insert_content::IDxxx3}}');
    	}	
    ?>

  5. #5
    Contao-Urgestein Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    9.714
    User beschenken
    Wunschliste

    Standard

    ggf. hilf das auch in den Sattel: Tageszeitliche Texte für Contao

    vllt könnte man auch ein Inserttag für die Anzeige bauen: {{display::<day>::<from>::<to>}} xx {{displayend}} mit day: * für alle oder Array mo,di,do,fr und from und to: 10:20 ... ggf. auch {{displaynot::<day>::<from>::<to>}} xx {{displayend}} als Umkehrung

  6. #6
    Contao-Urgestein Avatar von Toflar
    Registriert seit
    15.06.2009.
    Beiträge
    4.467
    Partner-ID
    8667
    User beschenken
    Wunschliste

    Standard

    Entsprechende Lösungen würden alle Seitencaching zerstören.

    Viel schlauer wäre es, den entsprechende Inhalte standardmässig per "display:none" auszublenden und per JS den gewünschten Inhalt dann einzublenden.
    Am einfachsten wohl ein Script, das entsprechende CSS Klassen auf dem <body> setzt, dann kannst du machen was du willst.

    HTML-Code:
    <script>
    (function () {
        var d = new Date();
        var n = d.getHours();
    
        if (n > 19 || n < 6) {
           document.body.classList.add('nacht');
        } else {
           document.body.classList.add('tag');
        }
    })();
    </script>
    Man lese die JS Doku für Minuten etc.
    Contao Core-Entwickler @terminal42 gmbh
    Wir sind Contao Premium-Partner!
    Für Individuallösungen kannst du uns gerne kontaktieren.
    PS: Heute schon getrakked?

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
  •