I want to have two distinct file sections in my blueprint, one showing all images and the other showing videos only.
(how) can i query/filter by type in a file section, analogue to
$page->files()->filterBy('type', '==', 'video');
?
Thanks!
You cannot filter a section using a query or filterBy.
You can, however, assign a file template to the section, and in this file template, set the accept
property.
Ok, thanks. That is quite hard to change for an existing site. I would need to manually edit all existing files’ blueprints to add a template (was using “default” up to this point…), or is there a better way for “migration”?
I recently wrote a simple route to automatically add a file template to all files:
<?php
return [
'routes' => [
[
'pattern' => 'imagetemplates',
'action' => function () {
$result = '';
foreach(site()->index() as $page) {
$result .= '<h2>' . $page->title() . '</h2>';
foreach($page->files() as $file) {
try {
$file->update([
'template' => 'default',
]);
$result .= '<h3>' . $file->filename() . ' ✅</h3>';
}
catch(Exception $e) {
$result .= '<h3>' . $file->filename() . ' ❎</h3>';
}
}
}
return $result;
}
]
]
];
You can adjust it to your liking.