Ergebnis 1 bis 11 von 11

Thema: Events Datum+1 Woche anzeigen

  1. #1
    Contao-Nutzer Avatar von n00b
    Registriert seit
    04.12.2010.
    Ort
    Schweiz, Aargau
    Beiträge
    122

    Standard Events Datum+1 Woche anzeigen

    Hallo Community

    Ich möchte bei Events (Kurse) einen Event nach folgenden Kriterien auf einer Eventlist anzeigen

    Aktuelles Datum + 1 Woche =< Startdatum des Events

    (Grund ist, dass diese anzizeigenden Events dann meist ausgebucht sind...)

    Folgender Code wäre mir da "in den Sinn gekommen, aber es "tut nicht":
    PHP-Code:

    <div class="event layout_upcoming<?php echo $this->classUpcoming?>">
    <h3><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></h3>

    <?php
    $date
    =new DateTime('2007.05.11',new DateTimeZone('Europe/Berlin'));
    $date->modify('+1 week');
    echo 
    $date->format('D.m.Y');
    ?> 
    <?php  


    if((echo " ".date("d.m.Y"$this->start).", ";) >= $date->format('d.m.Y'))
       {
       echo


    Ausgabe der Eventliste...

       }

    endif; 
    ?>
    Sieht jemand von Euch, was da falsch ist oder hat jemand so ein Eventtemplate auch schon mal realisiert?

    Ich wäre für Hilfe sehr dankbar (php checke ich nicht so wirklich gut...)

    Danke für jede Hilfe! Ich bin mir nun (nachdem ich auf meinem localhost etwas rumprobiert habe) bewusst, dass der Code oben absolut nicht funktionieren kann - was für ne php-niete ich doch bin..!
    Geändert von n00b (20.02.2013 um 18:58 Uhr)
    ...damn kid, theyre all alike...Zitat aus Legendärem Text: Link

  2. #2
    Contao-Nutzer Avatar von n00b
    Registriert seit
    04.12.2010.
    Ort
    Schweiz, Aargau
    Beiträge
    122

    Standard Erster Schritt in Richtung Lösung...

    PHP-Code:
    <?php


    $date
    =new DateTime(); //variable Date wird definiert
    $date->modify('+2 week'); //variable date wird modifiziert
    ?>
    <?php $date1
    =  $this->firstDate?>

    <?php

    if($date->format('d.m.Y') >= $date1)  //variablen werden verglichen
       
    {
       echo 
    "<h3>$this->href</h3>"//echo wird ausgegeben
       
    }
    ?>
    Gibt mir nun schon mals die Url des gewünschten Events aus, aber wenn ich den "Rest" des links einfüge macht er Fehlermeldungen...Php is a true pain in the ass.

    Neuer Anlauf: Der Versuch, aus dem "Event-Teil" des Templates eine Variable zu machen gibt mir alles in der Eventliste gewählten Events aus (ohne Filterung nach Datum)
    Meine Frage ist: Wie kann ich die "" der a href"xxx" einfügen, ohne dass es einen Error gibt?

    Meine Idee war, aus dem Event-teil des Templates eine Variable zu machen:
    PHP-Code:
    <?php
    $date
    =new DateTime(); //variable Date wird definiert
    $date->modify('+2 week'); //variable date wird modifiziert
    ?>
    <?php$event=<div class="event layout_upcoming<?php echo $this->classUpcoming?>">
    <h3><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></h3>

    <p class="date"> 
    von

    <?php $actualday = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    echo 
    $actualday[date("w"$this->start)] . ', '?>
    <?php 
    echo " ".date("d.m.Y"$this->start).", "?>
    <?php 
    echo " ".date("H:i"$this->start)." Uhr"?>

     bis
    <?php $actualday = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    echo 
    $actualday[date("w"$this->end)] . ', '?>
    <?php 
    echo " ".date("d.m.Y"$this->end).", "?>
    <?php 
    echo " ".date("H:i"$this->end)." Uhr"?>
    </p>

    </div>
    <div class="teaser">
    <?php echo $this->teaser?> 
    <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?>>zum Kurs...</a>
     </div>
    ;?>
    <?php $date1=  $this->firstDate?>

    <?php

    if($date->format('d.m.Y') >= $date1)  //variablen werden verglichen
       
    {
       echo 
    "$event"//echo wird ausgegeben
       
    }
    ?>
    Aber das gibt mir dann wieder alle events aus, ohne die Datums-Filterung.

    Und auch wenn ich in die Variable den if "filter" einfüge ändert sich das nicht...Heeelp!
    Geändert von n00b (20.02.2013 um 21:34 Uhr)
    ...damn kid, theyre all alike...Zitat aus Legendärem Text: Link

  3. #3
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    wie soll den das Erbenis mit dem zum Kurs Text aussehen?
    die Event Variable müsste ein String sein in Form von:
    PHP-Code:
    <?php $event="..."

  4. #4
    Contao-Nutzer Avatar von n00b
    Registriert seit
    04.12.2010.
    Ort
    Schweiz, Aargau
    Beiträge
    122

    Standard

    Habe es jetzt gelöst, nur das Arrayfür den richtigen Wochentag in deutsch bringe ich da nicht rein. Ist aber nicht zwingend.

    PHP-Code:
    <?php
    $date
    =new DateTime(); //variable Date wird definiert
    $date->modify('+2 week'); //variable date wird modifiziert

    $date1=  $this->firstDate
    $date1=  $this->firstDate
    $eventteaser=  $this->teaser ;
    $eventhref=  $this->link;
    $link1$this->href;
    $actualday = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    ?>
    <?php
    if($date->format('d.m.Y') >= $date1)  //variablen werden verglichen
       
    {
       echo 
    "<h3><a href=$this->replaceInsertTags {{env::path}}$link1>$this->title</a></h3>
    <p class=date>
    von "
    .date("d.m.Y"$this->start).",  ".date("H:i"$this->start)." Uhr bis </br>

    "
    .date("d.m.Y"$this->end).",  ".date("H:i"$this->end)." Uhr 
    </p>
    $eventteaser 
    <a href=
    $this->replaceInsertTags {{env::path}}$link1>zum Kurs</a> / 


      "
    ;
       }
    ?>
    Geändert von n00b (22.02.2013 um 07:51 Uhr)
    ...damn kid, theyre all alike...Zitat aus Legendärem Text: Link

  5. #5
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    der Wochentag läßt sich ganz einfach aus date generieren durch l ( kleines L)
    z.B. date("l d.m.Y", $this->start)

  6. #6
    Contao-Nutzer
    Registriert seit
    08.02.2010.
    Ort
    Aachen
    Beiträge
    89
    User beschenken
    Wunschliste

    Standard

    Hallo,

    ich hoffe ich hab das Problem jetzt richtig verstanden!

    Würde folgendes versuchen:

    PHP-Code:
    <?php

    $minDate 
    time() + (24 60 40); // Aktueller unix timestamp + 7 Tage

    if($minDate >= $this->startDate): // Abfrage, wenn startDate des Events größer/gleich ist ausgeben.

    ?>

    <?php if ($this->header): ?>
    <div class="header<?php echo $this->classHeader?>">
    <time datetime="<?php echo $this->datetime?>" class="date"><?php echo $this->firstDate?></time><?php if ($this->firstDay): ?> <span class="day">(<?php echo $this->firstDay?>)</span><?php endif; ?>  
    </div>

    <?php endif; ?>
    <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): ?>
    <p class="time"><?php echo $this->time $this->span?></p>
    <?php endif; ?>
    <div class="ce_text">
    <?php echo $this->details?>
    </div>
    </div>

    <?php endif; ?>
    Ist denke ich etwas simplerer Code?! Der Inhalt im if Bereich ist einfach die Event-List.

    Viele Grüße,

    backes

  7. #7
    Contao-Nutzer Avatar von n00b
    Registriert seit
    04.12.2010.
    Ort
    Schweiz, Aargau
    Beiträge
    122

    Standard

    Danke für die Tips!

    Der Wochentag mit "l" ist leider auf englisch (ist eine DE-Seite), darum das array mit den Wochentagen im Template - allerdings muss ich noch rausfinden, wie ich das $actualday im Echo reinpacke...(bisher generiere ich errors, da ich die Synthax nicht wirklich kenne, muss noch etwas rumprobieren.)

    Werde das Tempalte mal testen backes, danke - sieht mehr nach nem richtigen Template aus als mein php-Salat (aber als absoluter php-nichtversteher bin ich schon ein Bisschen stolz, dass ichs überhaupt selber lösen konnte auch wenns nicht state-of-the-Art ist. )

    Mein Problem war, dass ich die html-links mit anführungszeichen gemacht habe, was dann Fehler verursacht hatte...Nun hab ich aber rausgefunden, dass es auch ohne Anführungszeichen geht.

    Nochmals tausend Dank für die Hilfsbereitschaft!
    Geändert von n00b (22.02.2013 um 14:15 Uhr)
    ...damn kid, theyre all alike...Zitat aus Legendärem Text: Link

  8. #8
    Contao-Nutzer
    Registriert seit
    08.02.2010.
    Ort
    Aachen
    Beiträge
    89
    User beschenken
    Wunschliste

    Standard

    Hey n00b!

    Du kannst ja das Format der Daten sowohl Systemweit in den Einstellungen konfigurieren, als auch für jeden Seitenbaum extra im Startpunkt der Seite. Dort gibst du d.m.Y an, und Contao spuckt dir alle bereits formatierten Daten in diesem Format aus. Normalerweise hast du bei den Events auch immer eine Variable belegt mit dem Wochentag in der Sprache des Seitenbaums.

    Gib in deinem Template mal folgendes ein:

    PHP-Code:
    <?php $this->showTemplateVars(); ?>
    Das gibt dir alle zur Verfügung stehenden Variablen aus.

    Ich habe eben selber noch an einer angepassten Events Liste gearbeitet und da hatte ich Zugriff auf Wochentage etc. in der richtigen Sprache sowie Formatierung.

    Deinen Code habe ich zum testen mal umgeschrieben:

    PHP-Code:
    <?php 

    $date 
    mktime(0,0,0,date('m'),date('d'),date('Y')) + (24 60 *60);

    if(
    $this->startTime >= $date): ?>

    <h3><a href="<?php echo $this->href;?>"><?php echo $this->title?></a></h3>
    <p class="date">
    von <?php echo $this->date?><?php echo $this->time?> Uhr
    </p>
    <?php echo $this->teaser?>
    <a href="<?php echo $this->href?>">zum Kurs</a>
    <?php endif; ?>
    Vielleicht versucht du den mal. Das ist mit den Standard Variablen zusammen gebaut. Wo wolltest du denn Mo, Di ... einbauen?

    Auf jeden Fall erhältst du den Wochentag über:
    PHP-Code:
    <?php echo $this->day?>
    Das gibt den ausgeschriebenen Wochentag in der aktuellen Sprache aus.

    Achja, es ist immer übersichtlicher bei Templates, wenn du das HTML nicht in den echo Befehlen schreibst. Dann löst sich auch das Problem mit den doppelten und einfachen Anführungszeichen.

    Viele Grüße,

    backes

  9. #9
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    ansonsten läßt sich der Wochentag auch mit "echo $this->day" ausgeben.

    der backes war ein wenig schneller....
    Geändert von magicsepp (22.02.2013 um 14:41 Uhr)

  10. #10
    Contao-Nutzer Avatar von n00b
    Registriert seit
    04.12.2010.
    Ort
    Schweiz, Aargau
    Beiträge
    122

    Standard Danke Anke (oder so)

    Danke Euch beiden, habt mir echt geholfen!

    mein Problem war, dass ich alles in einem einzigen echo ausgeben wollte, daher wars viel komplizierter, als wenns viele einzelne echos sind...

    Habe den Code angepasst, da die Events mehrtägig sind musste ich mit startDate usw arbeiten, das enddate habe ich nicht vernünftig formatieren können, daher hab ich einen anderen Schnipsel reingepflanzt. Fertig siehts nun so aus:
    PHP-Code:
    <?php 
    $date
    =new DateTime(); //variable Date wird definiert
    $date->modify('+2 week'); //variable date wird modifiziert
    if($this->firstDate <= $date->format('d.m.Y')): ?>
    <h3><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> </h3>
    <p class="date">
    von <?php echo $this->firstDay?><?php echo $this->firstDate?><?php echo " ".date("H:i"$this->start)." Uhr"?>
     bis </br>
     <?php $actualday = array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
    echo 
    $actualday[date("w"$this->end)] . ', '?>
    <?php 
    echo " ".date("d.m.Y"$this->end).", "?>
    <?php 
    echo " ".date("H:i"$this->end)." Uhr"?>
    </p>
    <?php echo $this->teaser?>
    <a href="<?php echo $this->href?>">zum Kurs</a>
    <?php endif; ?>
    Was meint Ihr, kann man das so stehen lassen? Gibt mir genau das aus, was ich wollte.
    Geändert von n00b (22.02.2013 um 20:08 Uhr)
    ...damn kid, theyre all alike...Zitat aus Legendärem Text: Link

  11. #11
    Contao-Urgestein
    Registriert seit
    30.01.2011.
    Ort
    Stuttgart
    Beiträge
    4.138

    Standard

    wenn das Ziel erreicht ist, ist doch alles wunderbar

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
  •