You mean add additional params to the existing params, I guess. So when the filter param is active, also add sorting?
<a href="<?= $page->url() ?>?filter=">All</a>
<?php foreach ($filters as $filter): ?>
<a href="<?= url($page->url(), ['params' => ['filterby' => $filter, 'sortby' => param('sortBy']]) ?>">
<?= html($filter) ?>
</a>
<?php endforeach ?>
<a href="<?= url($page->url(), ['params' => ['filterby' => param('filterby'), 'sortBy' => 'title']]) ?>">
<?= 'Sort by title' ?>
</a>
In controller:
return function($page) {
$filterBy = param('filterBy');
$sortBy = param('sortBy');
$works = $page
->children()
->listed()
->when($filterBy, fn($filterBy) => $this->filterBy('category', $filterBy))
->when($sortBy, function($sortBy) {
// depending what you want to sort by use conditions here
return $this->sortBy($sortBy);
});
return [
'filterBy' => $filterBy,
'sortBy' => $sortBy,
'works' => $works->paginate(6),
'filters' => $works->pluck('category', ',', true),
];
};