# Display Blocks filtered by date

**URL:** <https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009>\
**Category:** Questions\
**Tags:** v3\
**Created:** [November 22, 2021, 10:22am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009 "2021-11-22T10:22:27Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![marcel4424](https://avatars.discourse-cdn.com/v4/letter/m/8dc957/32.png) [@marcel4424](https://forum.getkirby.com/u/marcel4424)\
**Post date:** [November 22, 2021, 10:22am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009/1 "2021-11-22T10:22:27Z")

</div>

I would like to display each of my Blocks as an event either under the headline “Upcoming” or “Past”. In my Block I have two date fields called “from” & “to”:

```auto
  from:
    label: Startdatum
    type: date
    default: today
    display: D.MM.YYYY
  to:
    label: Enddatum
    type: date
    default: today + 1day
    display: D.MM.YYYY

```

I tried to create two collections in my template like this:

```auto
<?php $upcoming = $site
->children()
->filter(function ($child) {
       return $child->from()->toDate() > time() || $child->to()->toDate() > time();
})
->sortBy(function ($site) {
       return $site->from()->toDate();
}, 'desc');

$past = $site
->children()
->filter(function ($child) {
       return $child->to()->toDate() < time();
})
->sortBy(function ($site) {
       return $site->from()->toDate();
}, 'desc');
?>

```

but I know that it’s not referenced to my blocks. **How can I do that and how can I then display the Blocks out of a collection?**

My draft to display the blocks in my template:

```auto
<h2>
    Upcoming
</h2>

<?php if ($upcoming->count() > 0): ?>
<ul>
    <?php foreach ($upcoming as $event): ?>
    <li class="event">
        <?php foreach ($site->munichBlocks()->toBlocks() as $block): ?>
        <div id="<?= $block->id() ?>" class="block block-type-<?= $block->type() ?>">
            <?= $block ?>
        </div>
        <?php endforeach ?>
    </li>
    <?php endforeach ?>
</ul>
<?php endif ?>

```

---

<div class="post-metadata">

**Author:** ![moonwalk](https://avatars.discourse-cdn.com/v4/letter/m/53a042/32.png) [@moonwalk](https://forum.getkirby.com/u/moonwalk)\
**Post date:** [November 22, 2021, 10:29am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009/2 "2021-11-22T10:29:23Z")

</div>

Please post your blueprint with the blocks field and your custom block definition.

---

<div class="post-metadata">

**Author:** ![marcel4424](https://avatars.discourse-cdn.com/v4/letter/m/8dc957/32.png) [@marcel4424](https://forum.getkirby.com/u/marcel4424)\
**Post date:** [November 22, 2021, 10:38am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009/3 "2021-11-22T10:38:06Z")

</div>

Block blueprint called “project-munich.yml”:

```auto
name: Ausstellung München
icon: page

fields:
  artist:
    label: Künstler
    type: textarea
    width: 1/1
    buttons: false
  exhibitionName:
    label: Ausstellungstitel
    type: textarea
    width: 1/1
    buttons: false
  from:
    label: Startdatum
    type: date
    default: today
    display: D.MM.YYYY
  to:
    label: Enddatum
    type: date
    default: today + 1day
    display: D.MM.YYYY

```

And my site.yml:

```auto
    fields:
      munichBlocks:
        type: blocks
        label: Ausstellungen München
        fieldsets:
          projects:
            label: Projekte
            type: group
            fieldsets:
              - project-munich

```

(The website has no subpages, thats why I am using the site.yml)

---

<div class="post-metadata">

**Author:** ![moonwalk](https://avatars.discourse-cdn.com/v4/letter/m/53a042/32.png) [@moonwalk](https://forum.getkirby.com/u/moonwalk)\
**Post date:** [November 22, 2021, 10:43am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009/4 "2021-11-22T10:43:25Z")

</div>

> [@marcel4424](#):
>
> ```auto
> <?php $upcoming = $site
> ->children()
> ->filter(function ($child) {
> return $child->from()->toDate() > time() || $child->to()->toDate() > time();
> })
> 
> ```

What you are doing here is filter child pages, but you want to filter the blocks, therefore

```auto
$blocks = $site->munichBlocks()->toBlocks();

```

Then you filter the blocks by date:

```auto
$upcoming = $blocks->filter(function ($block) {
       return $block->to()->toDate() < time();
});

```

---

<div class="post-metadata">

**Author:** ![marcel4424](https://avatars.discourse-cdn.com/v4/letter/m/8dc957/32.png) [@marcel4424](https://forum.getkirby.com/u/marcel4424)\
**Post date:** [November 22, 2021, 11:08am UTC](https://forum.getkirby.com/t/display-blocks-filtered-by-date/24009/5 "2021-11-22T11:08:56Z")

</div>

Thanks!
