Cover Image / Call to a member function url() on null


#1

Hallo liebe Kirbygemeinde!

Ich arbeite zurzeit an einem neuen Websiteprojekt und nutze dafür die Vorlage des One-Pagers (https://getkirby.com/docs/cookbook/content-structure/one-pager), stecke aber momentan in einem sehr ärgerlichen Fehler fest und komme nicht auf die Lösung.

Ich habe eine Portfolio Page angelegt, die eigene Subpages (also die Projekte) beinhaltet. Nun greife ich mit

<?php foreach($data->children()->listed() as $project): ?> <?= $image = $project->coverimg()->toFile() ?> <?php endforeach ?>

auf das von mir gewählte Coverbild in der jeweiligen Subpage im Panel zu. Das funktioniert auch soweit (das Bild wird auf der Website angezeigt) ich möchte aber nur die Url des Bildes rausziehen, damit ich dem img Tag individuelle Klassen geben kann. Das wäre dann:

<?= $image = $project->coverimg()->toFile()->url() ?>

leider bekomme ich einen dicken “Call to a member function url() on null” und ich bin nun mit meinem Latein am Ende. Wenn ich <?= $image = $project->coverimg()->toFile()->url() ?> direkt in der von mir erstellten project.php einfüge, bekomme ich den Url Pfad ohne Fehler ausgegeben.

Wenn ich nur <?= $image = $project->coverimg()->url() ?> in mein Portfolio snippet einfüge, bekomme ich lediglich einen Bindestrich gefolgt von einem Leerzeichen und den Namen des Bildes ausgegeben: z.B. “- sharegrid-464389-unsplash.png”

Ich habe mit Kirby 2 schon einige Websites erstellt und hatte bis dato damit keine Probleme :confused:

Bin für jede Hilfe sehr dankbar!

Grüße
Mark


#2

If you want to increase your chance for help, you might reconsider posting this in English :wink:


#3

Always make sure the content of an image field (the file name) is valid.
Maybe the image of one project was deleted?

Try something like this:


<?php foreach($data->children()->listed() as $project): ?>
  <?php if($projectImage = $project->coverimg()->toFile()) ?>
    <?= $projectImage->url() ?>
  <?php endif ?>
<?php endforeach ?>


#4

Yep! That definitely is an error option and with starting with a fresh installation i figured this out too. But i tried this solution also in the older installation and it still didn’t work. I think there is a problem with the path or that the path to the img is not saved correctly in the project.txt file. However, with the new installation it works correctly now. Will stick to that!