diff --git a/app/Http/Controllers/ArticleController.php b/app/Http/Controllers/ArticleController.php index 56f6f34c1..c0f8bc9d2 100644 --- a/app/Http/Controllers/ArticleController.php +++ b/app/Http/Controllers/ArticleController.php @@ -133,6 +133,21 @@ public function index() ); } + if (request('category') || request('type')) { + $cat = $page->articlesCategories->first(function ($value) { + return $value->id == request('category'); + }); + $titles = array_filter([ + 'Articles', + $cat?->name, + Str::title(request('type')), + request('page') ? 'Page ' . request('page') : null, + ]); + $this->seo->setTitle(implode(', ', $titles)); + } else { + $this->seo->setTitle('Articles'); + } + return view('site.articles', [ 'primaryNavCurrent' => 'collection', 'page' => $page, diff --git a/app/Http/Controllers/EducatorResourcesController.php b/app/Http/Controllers/EducatorResourcesController.php index 47bd3952f..24a528519 100644 --- a/app/Http/Controllers/EducatorResourcesController.php +++ b/app/Http/Controllers/EducatorResourcesController.php @@ -35,8 +35,14 @@ public function index(Request $request) $items = $this->collection()->orderByDate()->paginate(); $title = 'Educator Resources'; + $cat = ResourceCategory::where('id', request('category'))->first(); + $titles = array_filter([ + $title, + $cat?->name, + request('page') ? 'Page ' . request('page') : null, + ]); - $this->seo->setTitle($title); + $this->seo->setTitle(implode(', ', $titles)); $subNav = [ ['label' => $title, 'href' => route('collection.resources.educator-resources'), 'active' => true] diff --git a/app/Http/Controllers/EventsController.php b/app/Http/Controllers/EventsController.php index cfd7fcff2..a7d89594c 100644 --- a/app/Http/Controllers/EventsController.php +++ b/app/Http/Controllers/EventsController.php @@ -7,6 +7,7 @@ use App\Models\EventProgram; use App\Repositories\EventRepository; use Carbon\Carbon; +use Illuminate\Support\Str; use View; class EventsController extends FrontController @@ -39,9 +40,30 @@ public function index() $ongoing = null; $eventsByDay = $this->repository->groupByDate($collection); + $programName = null; if (request('program')) { - $subtitle = 'These are events related to ' . EventProgram::find(request('program'))->name . '.'; + $programName = EventProgram::find(request('program'))->name; + $subtitle = 'These are events related to ' . $programName . '.'; } + + $type = collect(Event::$eventTypes)->first(function ($value, $key) { + return $key == request('type'); + }); + $audience = collect(Event::$eventAudiences)->first(function ($value, $key) { + return $key == request('audience'); + }); + $titles = array_filter([ + 'Events', + request('start') ? Carbon::parse(request('start'))->toFormattedDateString() : null, + request('end') ? Carbon::parse(request('end'))->toFormattedDateString() : null, + Str::title(request('time')), + $type, + $audience, + $programName, + request('page') ? 'Page ' . request('page') : null, + ]); + + $this->seo->setTitle(implode(', ', $titles)); } else { // Divide the collection by normal events and ongoing ones $ongoing = $collection->filter(function ($item) { diff --git a/app/Http/Controllers/ExhibitionHistoryController.php b/app/Http/Controllers/ExhibitionHistoryController.php index 6f3f986e6..abf86bcac 100644 --- a/app/Http/Controllers/ExhibitionHistoryController.php +++ b/app/Http/Controllers/ExhibitionHistoryController.php @@ -35,6 +35,14 @@ public function index(Request $request, ExhibitionHistoryService $service) $extraResults = $this->apiRepository->searchApi(request('q'), self::PER_PAGE); } + $titles = array_filter([ + 'Exhibition History', + request('year'), + request('page') ? 'Page ' . request('page') : null, + ]); + + $this->seo->setTitle(implode(', ', $titles)); + $viewData = [ 'page' => $page, 'years' => $years, diff --git a/app/Http/Controllers/PrintedPublicationsController.php b/app/Http/Controllers/PrintedPublicationsController.php index 1c5f433f4..7fdff52c4 100644 --- a/app/Http/Controllers/PrintedPublicationsController.php +++ b/app/Http/Controllers/PrintedPublicationsController.php @@ -36,8 +36,14 @@ public function index(Request $request) $items = $this->collection()->ordered()->paginate(); $title = 'Print Publications'; + $cat = CatalogCategory::where('id', request('category'))->first(); - $this->seo->setTitle($title); + $titles = array_filter([ + $title, + $cat?->name, + request('page') ? 'Page ' . request('page') : null, + ]); + $this->seo->setTitle(implode(', ', $titles)); $navElements = NavHelpers::get_nav_for_publications($title);