Can't access field "Cover"


#1

Hey guys,

i use the blueprint from the portfolio documentation -> https://getkirby.com/docs/reference/panel/samples/portfolio#projects-overview
and i want to access the “cover” field which is in the project.yml but it’s not working.
I just want to set a coverimage in the panel in my project page and that should show up on my main page. But when i use

    <?php foreach($data->children()->listed() as $project): ?>
    <?= $project->cover()->url() ?>
    <?php endforeach ?> 

nothing happens.
Does someone has a solution?

project.yml

sidebar:
  **cover**:
    type: files
    headline: Cover
    layout: cards
    info: "{{ file.dimensions }}"
    template: cover
    min: 1
    max: 1
  gallery:
    type: files
    headline: Gallery
    template: image

#2

Please try $project->cover()->toFile()->url();.

Also; please check if the image exist first:

if ($cover = $project->cover()->toFile()) {
  echo $cover->url();
}

#3

Thanks! I did that, but nothing has changed :confused:


#4

Is it possible that cover returns a collection of files? If so, please try $project->cover()->first()->toFile(), or set multiple: false in the blueprint (more info: https://getkirby.com/docs/reference/panel/fields/files).


#5

When extending blueprints, pay close attention to the type (field / section) you are extending.

Your cover files field is actually a cover files section, if you check your txt file you will see that there is no content stored associated with a cover key.

When you upload an image in this cover section, Kirby gives the Cover | blueprints/files/cover.yml template to your uploaded image (this is what the template: cover option is for).

Therefore to retrieve it later in your template, you’ll have to call:

$image = $page->files()->template('cover')->first();


#6

Thank you very much for your response!
I thought in a similar way but i am a little confused, because there is no “cover.yml” blueprint in the section you wrote. I use the starterkit-master :confused: And when i delete “template: cover” nothing elses changes in the panel and the cover image is also shown on the main page :man_shrugging: Very strange. At least it works now! Thanks!


#7

The cover.yml blueprint doesn’t have to exist to give the cover template to an image. Basically you’re attributing a template name to the uploaded image (check in your content folder, Kirby creates a txt file alongside your image, with the template key / value pair). If the corresponding yml file doesn’t exist in the blueprint folder it will fallback to the default file blueprint. If now you add a cover.yml in your files blueprint folder, your file will switch to this one.

template: cover, is both a filter and a way to add a dedicated blueprint on upload. Removing this options means removing any filter, so your section will now display all files and won’t associate any template to newly created ones. If you set this option to template: anotherblueprint, then your file previously uploaded with the cover template won’t show up anymore.

If you have uploaded an image with the template: cover option, and then removed the option from the section, the attributes of your already-uploaded image won’t be removed, it’ll still have the cover template associated to it. Therefore it’s normal that it’ll still show on your main page. Hope it’s clear. :slight_smile: