Calendar: Newer and Older Events with Structure Field and limited

Hey Kirby Fan´s !

First - sorry for my bad english …

i have a simple Question for my EventCalendar. It´s works fine, but i want to limited the events whithout deleting in the Panel.

Example

  • 10 Events in the Future
  • 3 Events in History

I think, i must be limited in the Loop with limit($limit)
foreach($site->find(‘kalender’)->calendar()->toStructure()->sortBy(‘date’, ‘desc’)->limit($site->find(‘kalender’)->neu()) as $event) :



Calendar.php

<?php // Deutsche Monatsausgabe im Array //
$monatsnamen = array(1=>"Jan",2=>"Feb",3=>"Mär",4=>"Apr",5=>"Mai",6=>"Jun",7=>"Jul",8=>"Aug",9=>"Sep",10=>"Okt",11=>"Nov",12=>"Dez",
"Jan"=>"Januar","Feb"=>"Februar","Mar"=>"März","Apr"=>"April","May"=>"Mai","June"=>"July","Aug"=>"August","Sept"=>"September","Oct"=>"Oktober","Nov"=>"November","Dec"=>"Dezember");?>

<h2> Kalender</h2>
<div class="col-xs-offset-4 col-xs-4">
	<?php foreach($site->find('kalender')->calendar()->toStructure()->sortBy('date', 'desc') as $event) :
		$heute 		= new DateTime(date("d.m.Y"));					// Aktuelles Datum //
		$zukunft 	= new DateTime(date('d.m.Y',$event->date()));	// Datum vom Kalendereintrag //
		$interval 	= $heute->diff($zukunft);						// Differnz zwischen Aktuellem und Kalendereintrag Datum ermitteln //
		$mon_char	= substr($interval->format('%R%m'), 0, 1);		// Ermittle, ob +/- Monate zur Differenz //
		$mon_int	= substr($interval->format('%R%m'), 1);			// Ermittle die Anzahl der Monate zur Differenz // 
		$day_char	= substr($interval->format('%R%d'), 0, 1);		// Ermittle, ob +/- Tage zur Differenz //
		$day_int	= substr($interval->format('%R%d'), 1);			// Ermittle die Anzahl der Tage zur Differenz // 
		
		if($mon_int==1){$mon_txt=" Monat ";}else{$mon_txt=" Monaten ";};	// Abfrage, ob 1 Monat oder x Monate //	
		if($day_int==1){$day_txt=" Tag ";}else{$day_txt= " Tagen";};		// Abfrage, ob 1 Tag oder x Tage // ?>
		<div class="media event col-xs-12">
			<div class="media-left media-middle">					
				<a href="#">
					<span class="date">
						<span class="month">
							<?php echo $monatsnamen[date('n',$event->date())]; // Monat//?>
						</span>
						<span class="day">
							<?php echo date('d',$event->date()); // Tag // ?>
						</span>
					</span>
				</a>
			</div>
			<div class="media-body">
				<h4 class="media-heading"><?php echo $event->headline(); // Kalendereintrag Ueberschrift //?></h4>
				<span class="meta">
					<?php echo "Wo: " . $event->place() . "</br>";// Ort  //
					echo "Datum: " . date('d. ',$event->date()) . $monatsnamen[date('M',$event->date())] . date(' Y',$event->date()) . " - "; // Datum und Differenz  //
					if($mon_char == '+' and $day_char = '+') :
						if($mon_int > 0 AND $day_int > 0) : 			// in 3 Monate(n) und 15 Tage(n) //
							echo "in " . $mon_int . $mon_txt . "und " . $day_int . $day_txt;
						elseif ($mon_int == 0 and $day_int > 0): 		// in 15 Tage(n)//
							if($day_int == 1):
								echo "Morgen";
							else:
								echo "in " . $day_int . $day_txt;
							endif;
						elseif ($mon_int == 0 and $day_int == 0): 		// Heute  //
							echo "Heute";
						endif;
					else: 

						if($mon_int > 0 AND $day_int > 0) : 			// vor 2 Monate(n) und 3 Tage(n) //
							echo "vor " . $mon_int . $mon_txt . " und " . $day_int . $day_txt;

						elseif ($mon_int == 0 and $day_int > 0): // vor 15 Tagen //
							if($day_int == 1):
								echo "Gestern";
							else:
								echo "vor " . $day_int . $day_txt;
							endif;
						endif;
					endif;
					echo "</br>"; 
					if(!empty($event->starttime() OR $event->endtime())) : // Abfrage ob Uhrzeit gesetzt wurde //
						echo "Uhrzeit: ";
						
						if($event->starttime() != ""):
							echo $event->starttime() . " Uhr";
						endif;
						if($event->endtime() != ""):
							echo " - " . $event->endtime() . " Uhr";
						endif;
						echo "</br>";
					endif;?>
					
					
				</span>
			</div>
		</div>
	<?php endforeach ?>
</div>

Blueprint of the Calendar

title: Kalender

deletable: false
options:
  preview: false
  template: false
  status: false
  url: false

pages: false
files: false
fields:
  neu:
    label: Neue Einträge
    type: number
    min: 1
    max: 20
    width: 1/5
  alt:
    label: Alte Einträge
    type: number
    min: 0
    max: 20
    width: 1/5
  calendar:
    label: Einträge
    type: structure
    entry: >
       {{date}} - <strong>{{headline}}</strong>
    fields:
      headline:
        label: Titel
        type: text
        required: true
      description:
        label: Beschreibung
        type: textarea
        required: true
        buttons: 
         - none
      place:
        label: Ort
        type: text
        required: true
      date:
        label: Datum
        type: date
        format: dd.mm.YY
        required: true
      starttime:
        width: 1/2
        label: Anfang
        type: time
        interval: 30
        default: 11:30
      endtime:
        width: 1/2
        label: Ende
        type: time
        interval: 30

Ah, keep it Simple - it works ! :smiley:
filterBy(‘date’, ‘<’, time()) for Events in History
filterBy(‘date’, ‘>’, time()) for Events in Future

foreach($site->find(‘kalender’)->calendar()->toStructure()->sortBy(‘date’, ‘desc’)->limit($site->find(‘kalender’)->alt()->int())->filterBy(‘date’, ‘<’, time()) as $event) :